Web app de enquetes em tempo real (estilo Kahoot) — Modo Padrão v1.
| Camada | Tecnologia |
|---|---|
| Frontend | React 19 + TypeScript + Vite + Tailwind CSS 4 |
| Backend | Node.js + Express 5 + Socket.IO |
| Banco | PostgreSQL via Supabase + Prisma ORM |
| Auth (Criador) | Supabase Auth (gratuito — email/senha) |
| Jogadores | Sem conta — nickname + reconexão via sessionKey |
- Crie um projeto em supabase.com (plano free).
- Em Settings → Database, copie:
DATABASE_URL(pooler, porta 6543)DIRECT_URL(porta 5432)
- Em Settings → API, copie:
Project URLanonkeyJWT Secret(Settings → API → JWT Settings)
cp apps/server/.env.example apps/server/.env
cp apps/client/.env.example apps/client/.envPreencha os valores do Supabase nos dois arquivos.
npm install
npm run db:pushnpm run dev- Frontend: http://localhost:5173
- Backend: http://localhost:3001
npm testOs testes cobrem:
- @hoothoot/shared — código de sala, pontuação, nickname, URLs
- @hoothoot/server —
GameRoom(máquina de estados), API health
- Criador — login Supabase → monta deck → abre sala → compartilha link/QR/WhatsApp
- Jogador — entra com nickname em
/entrar/<codigo>→ responde no celular - Telão —
/telao/<codigo>(somente leitura para TV/projetor)
| Componente | Sugestão |
|---|---|
| Frontend | Vercel / Netlify |
| Backend | Render / Railway (WebSocket persistente) |
| Banco | Supabase (já incluso) |
Defina PUBLIC_URL e CLIENT_URL com a URL de produção do frontend.
- requirements.md — requisitos funcionais
- design.md — arquitetura e eventos Socket.IO
- tasks.md — plano de implementação