mirror of
https://github.com/yusufipk/YTChatHub.git
synced 2026-09-11 10:56:17 +00:00
1.7 KiB
1.7 KiB
Tech Context
Primary Stack
- Frontend: Next.js 15 (App Router) + React 19 + TypeScript, styled with handcrafted CSS for now (Tailwind/shadcn still optional future add-ons).
- Backend Worker: Node.js service run with
tsx, usingyoutubei.jsfor Innertube chat ingestion,fastify+@fastify/corsfor REST/SSE transport, andeventemitter3for internal pub/sub. - Shared Types: Simple TypeScript module in
shared/chat.ts, imported via the@shared/*path alias defined intsconfig.base.json. - Realtime: Server-Sent Events for overlay updates; WebSockets remain a future enhancement option.
Tooling & Commands
- Single root
package.json;pnpm installmanages all deps. pnpm devruns backend (tsx backend/src/index.ts) and client (next dev client) concurrently viaconcurrently.pnpm buildcompiles the backend withtscand builds the Next app;pnpm start:backend/pnpm start:clientserve production bundles separately.
Environment & Dependencies
- Requires
YOUTUBE_LIVE_ID(or full URL) to enable real chat ingestion; omitted value triggers mock mode. - Optional overrides for Innertube API keys/version can be supplied through env vars when needed.
better-sqlite3is included for future persistence work but not yet wired in.
Constraints & Considerations
- Innertube endpoints may break; keep ingestion module adaptable and plan for a headless-browser fallback.
- Project expected to run on the streamer’s machine; dependencies must remain cross-platform and avoid heavyweight native builds where possible.
- No separate package boundaries anymore, so TypeScript path aliases and import hygiene are important to prevent tangled relative paths.