Stream overlay management platform for Twitch streamers.
- Frontend: React + Vite + TanStack Router
- Backend: Convex (Cloud)
- Bot: Hono server for Twitch chat integration
- Auth: Better-Auth with Twitch OAuth
- Styling: TailwindCSS + shadcn/ui
- Bun (v1.3+)
- Convex account
- Twitch Developer application
bun installbun run dev:backendThis will:
- Create a new Convex project (first time)
- Start watching for schema/function changes
- Output your deployment URL
Copy .env and fill in your values:
# .env
VITE_TWITCH_CLIENT_ID=your_twitch_client_id
TWITCH_CLIENT_ID=your_twitch_client_id
TWITCH_CLIENT_SECRET=your_twitch_client_secret
VITE_BOT_SERVER_URL=http://localhost:3002
BOT_API_SECRET=dev_secret_for_testing_onlycd packages/backend
# SITE_URL is your Convex HTTP site URL (ends in .site)
# Get it from your Convex dashboard or from `bunx convex dev` output
bunx convex env set SITE_URL "https://your-deployment.convex.site"
bunx convex env set TWITCH_CLIENT_ID "your_twitch_client_id"
bunx convex env set TWITCH_CLIENT_SECRET "your_twitch_client_secret"
bunx convex env set BETTER_AUTH_SECRET "$(openssl rand -base64 32)"
bunx convex env set WEB_APP_ORIGIN "http://localhost:3001"In separate terminals:
# Terminal 1: Convex backend
bun run dev:backend
# Terminal 2: Web app
bun run dev:web
# Terminal 3: Bot server (optional, for chat features)
bun run dev:botOr run all at once:
bun run devovrly/
├── apps/
│ └── web/ # React frontend (Vite)
├── packages/
│ ├── backend/ # Convex functions & schema
│ └── twitch-bot/ # Twitch chat bot server
| Command | Description |
|---|---|
bun run dev |
Start all services |
bun run dev:web |
Start web app only |
bun run dev:backend |
Start Convex dev server |
bun run dev:bot |
Start bot server |
bun run build |
Build all packages |
bun run deploy |
Deploy Convex to production |
See COOLIFY.md for Coolify deployment guide.