Full-stack YouTube channel command center for "Let Me Put You On Game" (LMPYOG). Dark investigative ops aesthetic with neon orange (#FF5F00) branding.
- Monorepo tool: pnpm workspaces
- Node.js version: 24
- Package manager: pnpm
- TypeScript version: 5.9
- API framework: Express 5
- Database: PostgreSQL + Drizzle ORM
- Validation: Zod (
zod/v4),drizzle-zod - API codegen: Orval (from OpenAPI spec)
- Frontend: React + Vite + Tailwind CSS + Framer Motion
- Build: esbuild (CJS bundle)
- Primary color: #FF5F00 (neon orange)
- Background: #000 (black)
- Motto: "Truth. No Filter. No Apologies."
- Schedule: Mon / Wed / Fri @ 7PM EST
- Assets:
/artifacts/command-center/public/assets/(banner.png, avatar.png)
artifacts-monorepo/
├── artifacts/
│ ├── api-server/ # Express API server (all backend routes)
│ └── command-center/ # React + Vite frontend (served at /)
├── lib/
│ ├── api-spec/ # OpenAPI spec + Orval codegen config
│ ├── api-client-react/ # Generated React Query hooks
│ ├── api-zod/ # Generated Zod schemas from OpenAPI
│ └── db/ # Drizzle ORM schema + DB connection
├── attached_assets/ # Brand assets (banner, avatar images)
└── scripts/ # Utility scripts
- Intel Dashboard — Narrative targets tracker, channel stats, banner display
- Research Terminal (Receipts) — Gemini AI-powered investigative research with web grounding
- B-Roll Harvest Engine — Clip library (YouTube/C-SPAN), keyword search, transcripts, Season folders
- Script Lab — Episode script drafts with status tracking (draft → final)
- Operations — Episode tracker with status pipeline (planning → published), content calendar
- Brand / Comms — Brand assets, color profile, channel metadata
scripts— script drafts with title, episode, content, statusclips— B-Roll clips with sourceUrl, platform, keywords, transcript, seasonepisodes— episode tracker with status pipeline and scheduled datestrends— narrative targets/investigation topics
All routes under /api:
POST /api/research— Run Gemini AI investigative researchGET/POST /api/scripts,GET/PUT/DELETE /api/scripts/:idGET/POST /api/clips,DELETE /api/clips/:idGET/POST /api/episodes,PUT /api/episodes/:idGET/POST /api/trends,DELETE /api/trends/:id
Research uses Gemini 2.0 Flash with Google Search grounding. Requires GEMINI_API_KEY environment variable. Without it, returns a helpful placeholder message.
Every package extends tsconfig.base.json. Run pnpm run typecheck from root. Do NOT use tsc inside single packages.
pnpm run build— typecheck then build all packagespnpm run typecheck— full type checkpnpm --filter @workspace/api-spec run codegen— regenerate API client from OpenAPI specpnpm --filter @workspace/db run push— push DB schema changes