vault-video-processor / docs /source-tree.md
dvijaykrishnan's picture
docs: Introduce comprehensive technical documentation and update planning artifacts to reflect MVP completion and detailed FR implementation status.
d03d74d
|
Raw
History Blame Contribute Delete
15.1 kB

Vault - Source Tree Analysis

Generated: 2026-02-11
Project Root: /


Root Directory Structure

vault/
β”œβ”€β”€ .github/                    # GitHub workflows and configuration
β”‚   └── workflows/
β”‚       └── deploy.yml          # CI/CD: Build, test, deploy to Vercel + Railway
β”‚
β”œβ”€β”€ .husky/                     # Git hooks (pre-commit linting)
β”‚
β”œβ”€β”€ _bmad/                      # BMAD methodology configuration
β”‚   β”œβ”€β”€ _config/                # Manifests and configuration
β”‚   β”œβ”€β”€ bmm/                    # BMAD Method Module
β”‚   └── core/                   # BMAD Core Module
β”‚
β”œβ”€β”€ _bmad-output/               # BMAD-generated artifacts
β”‚   β”œβ”€β”€ planning-artifacts/     # PRD, Architecture, Epics, Product Brief
β”‚   └── implementation-artifacts/ # Sprint status, story files
β”‚
β”œβ”€β”€ docs/                       # Project documentation (this documentation)
β”‚
β”œβ”€β”€ drizzle/                    # Database migrations
β”‚   └── *.sql                   # Migration files
β”‚
β”œβ”€β”€ legacy_configs/             # Legacy deployment configurations
β”‚   └── fly/                    # Fly.io configs (deprecated)
β”‚
β”œβ”€β”€ public/                     # Static assets
β”‚
β”œβ”€β”€ src/                        # Source code (main application)
β”‚   β”œβ”€β”€ app/                    # Next.js 15 App Router
β”‚   β”œβ”€β”€ components/             # Shared UI components
β”‚   β”œβ”€β”€ features/               # Feature-based modules
β”‚   β”œβ”€β”€ inngest/                # Background job functions
β”‚   β”œβ”€β”€ lib/                    # Core utilities
β”‚   β”œβ”€β”€ config/                 # Application configuration
β”‚   └── types/                  # TypeScript type definitions
β”‚
β”œβ”€β”€ supabase/                   # Supabase configuration
β”‚
β”œβ”€β”€ package.json                # Dependencies and scripts
β”œβ”€β”€ tsconfig.json               # TypeScript configuration
β”œβ”€β”€ next.config.ts              # Next.js configuration
β”œβ”€β”€ drizzle.config.ts           # Drizzle ORM configuration
β”œβ”€β”€ tailwind.config.ts          # Tailwind CSS configuration
β”œβ”€β”€ vitest.config.ts            # Vitest test configuration
β”œβ”€β”€ eslint.config.mjs           # ESLint configuration
β”œβ”€β”€ Dockerfile                  # Docker configuration (Hugging Face Spaces)
└── vercel.json                 # Vercel deployment configuration

Source Code Structure (src/)

App Router (src/app/)

Next.js 15 App Router pages and API routes.

src/app/
β”œβ”€β”€ layout.tsx                  # Root layout (theme, fonts, toaster)
β”œβ”€β”€ page.tsx                    # Homepage (public landing)
β”œβ”€β”€ globals.css                 # Global styles (Tailwind)
β”œβ”€β”€ favicon.ico                 # Site favicon
β”‚
β”œβ”€β”€ api/                        # API Route Handlers
β”‚   β”œβ”€β”€ auth/[...all]/route.ts  # Better Auth endpoints
β”‚   β”œβ”€β”€ inngest/route.ts        # Inngest webhook handler
β”‚   β”œβ”€β”€ health/route.ts         # Health check endpoint
β”‚   β”œβ”€β”€ manual-trigger/route.ts # Manual workflow triggers (dev)
β”‚   └── youtube/
β”‚       β”œβ”€β”€ callback/route.ts   # YouTube OAuth callback
β”‚       β”œβ”€β”€ connect/route.ts    # Initiate YouTube connection
β”‚       └── disconnect/route.ts # Disconnect YouTube channel
β”‚
β”œβ”€β”€ login/
β”‚   └── page.tsx                # Login page
β”‚
β”œβ”€β”€ register/
β”‚   └── page.tsx                # Registration page
β”‚
β”œβ”€β”€ dashboard/                  # Creator Dashboard
β”‚   β”œβ”€β”€ page.tsx                # Main dashboard (videos, metrics)
β”‚   β”œβ”€β”€ moderation/
β”‚   β”‚   └── page.tsx            # Moderation queue
β”‚   β”œβ”€β”€ requests/
β”‚   β”‚   └── page.tsx            # Product requests & proposals
β”‚   └── fix-channels/
β”‚       └── page.tsx            # Channel repair utility
β”‚
β”œβ”€β”€ admin/                      # Admin Operations
β”‚   β”œβ”€β”€ page.tsx                # Redirects to /admin/dashboard
β”‚   β”œβ”€β”€ layout.tsx              # Admin layout with navigation
β”‚   β”œβ”€β”€ dashboard/
β”‚   β”‚   └── page.tsx            # Platform overview
β”‚   β”œβ”€β”€ moderation/
β”‚   β”‚   └── page.tsx            # Admin moderation queue
β”‚   β”œβ”€β”€ analysis-queue/
β”‚   β”‚   └── page.tsx            # Video analysis queue
β”‚   β”œβ”€β”€ analysis/[id]/
β”‚   β”‚   └── page.tsx            # Individual analysis detail
β”‚   β”œβ”€β”€ requests/
β”‚   β”‚   └── page.tsx            # Request hub (proposals, requests)
β”‚   └── users/
β”‚       └── page.tsx            # User management
β”‚
β”œβ”€β”€ vault/[creatorSlug]/        # Public Creator Vault
β”‚   β”œβ”€β”€ page.tsx                # Vault grid (SSR/ISR)
β”‚   └── product/[productId]/
β”‚       └── page.tsx            # Product detail page
β”‚
β”œβ”€β”€ showcase/                   # Demo/Showcase Mode
β”‚   β”œβ”€β”€ page.tsx                # Featured creators grid
β”‚   └── [videoId]/
β”‚       β”œβ”€β”€ page.tsx            # Video showcase
β”‚       └── moderate/
β”‚           └── page.tsx        # Showcase moderation
β”‚
β”œβ”€β”€ creators/
β”‚   └── page.tsx                # Creator discovery
β”‚
β”œβ”€β”€ design/
β”‚   └── page.tsx                # Design system preview
β”‚
└── unsubscribe/[token]/
    └── page.tsx                # Email unsubscribe

Components (src/components/)

Shared UI components (shadcn/ui based).

src/components/
β”œβ”€β”€ mode-toggle.tsx             # Dark/light theme toggle
β”œβ”€β”€ theme-provider.tsx          # Theme context provider
β”‚
β”œβ”€β”€ auth/
β”‚   β”œβ”€β”€ sign-in-form.tsx        # Login form
β”‚   β”œβ”€β”€ sign-up-form.tsx        # Registration form
β”‚   β”œβ”€β”€ user-nav.tsx            # User avatar dropdown
β”‚   └── auto-claimer.tsx        # Auto-claim vault ownership
β”‚
└── ui/                         # shadcn/ui components
    β”œβ”€β”€ alert-dialog.tsx
    β”œβ”€β”€ alert.tsx
    β”œβ”€β”€ avatar.tsx
    β”œβ”€β”€ badge.tsx
    β”œβ”€β”€ button.tsx
    β”œβ”€β”€ card.tsx
    β”œβ”€β”€ checkbox.tsx
    β”œβ”€β”€ dialog.tsx
    β”œβ”€β”€ dropdown-menu.tsx
    β”œβ”€β”€ input.tsx
    β”œβ”€β”€ label.tsx
    β”œβ”€β”€ scroll-area.tsx
    β”œβ”€β”€ select.tsx
    β”œβ”€β”€ separator.tsx
    β”œβ”€β”€ skeleton.tsx
    β”œβ”€β”€ sonner.tsx              # Toast notifications
    β”œβ”€β”€ tabs.tsx
    └── textarea.tsx

Feature Modules (src/features/)

Feature-based organization for business logic.

src/features/
β”‚
β”œβ”€β”€ analytics/                  # Metrics and tracking
β”‚   └── components/
β”‚       └── key-metrics-row.tsx # Dashboard metrics display
β”‚
β”œβ”€β”€ discovery/                  # AI Video Scanning
β”‚   β”œβ”€β”€ actions/
β”‚   β”‚   └── connect-youtube.ts  # YouTube OAuth action
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   └── youtube-connect-section.tsx
β”‚   └── services/
β”‚       β”œβ”€β”€ youtube-videos.service.ts  # YouTube Data API
β”‚       β”œβ”€β”€ frame-extraction.service.ts # FFmpeg processing
β”‚       β”œβ”€β”€ ai-vision.service.ts        # Vision provider abstraction
β”‚       β”œβ”€β”€ vision-provider.factory.ts  # Provider factory
β”‚       β”œβ”€β”€ storage.service.ts          # Supabase storage
β”‚       └── providers/
β”‚           β”œβ”€β”€ vision-provider.interface.ts
β”‚           β”œβ”€β”€ gemini.provider.ts
β”‚           └── huggingface.provider.ts
β”‚
β”œβ”€β”€ interest/                   # "I Want This" Feature
β”‚   β”œβ”€β”€ actions/
β”‚   β”‚   └── create-interest-pledge.ts
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   └── interest-capture-modal.tsx
β”‚   └── types/
β”‚       └── interest.types.ts
β”‚
β”œβ”€β”€ marketplace/                # Marketplace Integration
β”‚   β”œβ”€β”€ actions/
β”‚   β”‚   β”œβ”€β”€ trigger-marketplace-match.ts
β”‚   β”‚   └── trigger-link-health-check.ts
β”‚   └── services/
β”‚       β”œβ”€β”€ amazon.service.ts   # Amazon PA-API
β”‚       β”œβ”€β”€ ebay.service.ts     # eBay Finding API
β”‚       β”œβ”€β”€ etsy.service.ts     # Etsy Open API
β”‚       β”œβ”€β”€ errors.ts           # Custom errors
β”‚       β”œβ”€β”€ link-health.service.ts
β”‚       └── marketplace-cache.service.ts
β”‚
β”œβ”€β”€ moderation/                 # Creator Moderation
β”‚   β”œβ”€β”€ actions/
β”‚   β”‚   β”œβ”€β”€ approve-detection.ts
β”‚   β”‚   β”œβ”€β”€ reject-detection.ts
β”‚   β”‚   β”œβ”€β”€ bulk-approve.ts
β”‚   β”‚   β”œβ”€β”€ bulk-reject.ts
β”‚   β”‚   β”œβ”€β”€ edit-detection.ts
β”‚   β”‚   β”œβ”€β”€ delete-detection.ts
β”‚   β”‚   β”œβ”€β”€ add-detection.ts
β”‚   β”‚   β”œβ”€β”€ admin-correct-detection.ts
β”‚   β”‚   β”œβ”€β”€ admin-mark-incorrect.ts
β”‚   β”‚   β”œβ”€β”€ fetch-product-metadata.ts
β”‚   β”‚   β”œβ”€β”€ handle-proposal.ts
β”‚   β”‚   β”œβ”€β”€ transfer-temporary-products.ts
β”‚   β”‚   └── upload-product-image.ts
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ moderation-queue.tsx
β”‚   β”‚   β”œβ”€β”€ admin-moderation-queue.tsx
β”‚   β”‚   β”œβ”€β”€ admin-detection-card.tsx
β”‚   β”‚   β”œβ”€β”€ edit-detection-dialog.tsx
β”‚   β”‚   β”œβ”€β”€ add-product-dialog.tsx
β”‚   β”‚   β”œβ”€β”€ product-form.tsx
β”‚   β”‚   β”œβ”€β”€ image-upload-field.tsx
β”‚   β”‚   β”œβ”€β”€ admin-correction-modal.tsx
β”‚   β”‚   └── admin-mark-incorrect-modal.tsx
β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”œβ”€β”€ moderation.service.ts
β”‚   β”‚   └── admin-moderation.service.ts
β”‚   └── utils/
β”‚       └── demo.ts             # Demo mode utilities
β”‚
β”œβ”€β”€ vault/                      # Public Vault Experience
β”‚   β”œβ”€β”€ actions/
β”‚   β”‚   β”œβ”€β”€ add-to-workbench.ts
β”‚   β”‚   β”œβ”€β”€ quick-analyze.ts
β”‚   β”‚   β”œβ”€β”€ redirect-to-marketplace.ts
β”‚   β”‚   β”œβ”€β”€ refresh-metadata.ts
β”‚   β”‚   β”œβ”€β”€ search-products.ts
β”‚   β”‚   └── trigger-analysis.ts
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ vault-grid.tsx      # Main product grid
β”‚   β”‚   β”œβ”€β”€ vault-header.tsx    # Creator info header
β”‚   β”‚   β”œβ”€β”€ vault-filters.tsx   # Filter controls
β”‚   β”‚   β”œβ”€β”€ vault-grid-skeleton.tsx
β”‚   β”‚   β”œβ”€β”€ vault-grid-with-temp-products.tsx
β”‚   β”‚   β”œβ”€β”€ product-card.tsx    # Individual product
β”‚   β”‚   β”œβ”€β”€ product-grid.tsx
β”‚   β”‚   β”œβ”€β”€ product-card-skeleton.tsx
β”‚   β”‚   β”œβ”€β”€ product-request-dialog.tsx
β”‚   β”‚   β”œβ”€β”€ category-filter.tsx
β”‚   β”‚   β”œβ”€β”€ search-bar.tsx
β”‚   β”‚   β”œβ”€β”€ search-results.tsx
β”‚   β”‚   β”œβ”€β”€ video-card.tsx
β”‚   β”‚   β”œβ”€β”€ video-embed.tsx
β”‚   β”‚   β”œβ”€β”€ discovery-panel.tsx
β”‚   β”‚   β”œβ”€β”€ claim-handler.tsx
β”‚   β”‚   β”œβ”€β”€ claim-vault-button.tsx
β”‚   β”‚   β”œβ”€β”€ unauthenticated-banner.tsx
β”‚   β”‚   β”œβ”€β”€ affiliate-submission-dialog.tsx
β”‚   β”‚   β”œβ”€β”€ quick-analyze-tool.tsx
β”‚   β”‚   └── add-to-workbench-button.tsx
β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”œβ”€β”€ vault.service.ts    # Data fetching + caching
β”‚   β”‚   β”œβ”€β”€ showcase.service.ts
β”‚   β”‚   └── click-tracking.service.ts
β”‚   β”œβ”€β”€ hooks/
β”‚   β”‚   └── use-temporary-products.ts
β”‚   β”œβ”€β”€ config/
β”‚   β”‚   β”œβ”€β”€ demo-config.ts
β”‚   β”‚   └── sample-data.ts
β”‚   └── types/
β”‚       └── vault.types.ts
β”‚
β”œβ”€β”€ admin/                      # Admin Operations
β”‚   └── actions/
β”‚       └── stats.ts            # Platform statistics
β”‚
└── dashboard/                  # Creator Dashboard
    β”œβ”€β”€ actions/
    β”‚   └── fetch-videos.ts
    └── components/
        └── video-workbench.tsx

Inngest Functions (src/inngest/)

Background job orchestration.

src/inngest/
β”œβ”€β”€ client.ts                   # Inngest client configuration
β”‚
└── functions/
    β”œβ”€β”€ scan-video-archive.ts   # YouTube archive scanning
    β”œβ”€β”€ detect-objects.ts       # AI object detection
    β”œβ”€β”€ match-marketplace.ts    # Marketplace matching
    β”œβ”€β”€ monitor-link-health.ts  # Link health monitoring
    β”œβ”€β”€ social-healing.ts       # Social metadata repair
    └── warm-featured-creators-cache.ts

Core Libraries (src/lib/)

Core utilities and configurations.

src/lib/
β”œβ”€β”€ auth.ts                     # Better Auth configuration
β”œβ”€β”€ auth-client.ts              # Client-side auth utilities
β”œβ”€β”€ admin.ts                    # Admin utilities
β”œβ”€β”€ redis.ts                    # Upstash Redis client
β”‚
└── db/
    β”œβ”€β”€ index.ts                # Drizzle client
    └── schema.ts               # Database schema (590 lines)

Configuration (src/config/)

Application configuration files.

src/config/
└── vision.config.ts            # AI vision provider config

Configuration Files

Root Configuration

File Purpose
package.json Dependencies, scripts, npm configuration
tsconfig.json TypeScript compiler options
next.config.ts Next.js configuration (images, externals, Sentry)
drizzle.config.ts Drizzle ORM configuration
tailwind.config.ts Tailwind CSS configuration
vitest.config.ts Vitest test runner configuration
eslint.config.mjs ESLint rules and plugins
vercel.json Vercel deployment settings
Dockerfile Docker image for Hugging Face Spaces

Environment Variables

Required environment variables (see .env.example):

# Database
DATABASE_URL=
DIRECT_URL=

# Authentication
BETTER_AUTH_SECRET=
BETTER_AUTH_URL=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=

# Inngest
INNGEST_EVENT_KEY=
INNGEST_SIGNING_KEY=

# Supabase
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=

# Redis
UPSTASH_REDIS_REST_URL=
UPSTASH_REDIS_REST_TOKEN=

# AI/Vision
GEMINI_API_KEY=
HUGGINGFACE_API_KEY=
VISION_PROVIDER=gemini|huggingface

# Marketplaces
AMAZON_ACCESS_KEY=
AMAZON_SECRET_KEY=
AMAZON_AFFILIATE_TAG=
EBAY_APP_ID=
EBAY_CERT_ID=
EBAY_CAMPAIGN_ID=
ETSY_API_KEY=

# Monitoring
SENTRY_ORG=
SENTRY_PROJECT=

# Admin
ADMIN_EMAILS=

Key Entry Points

Entry Point Description
src/app/layout.tsx Root layout, theme provider
src/app/page.tsx Homepage
src/app/api/inngest/route.ts Inngest webhook handler
src/inngest/client.ts Background job client
src/lib/db/index.ts Database connection
src/lib/auth.ts Authentication setup

Related Documentation