App de gamificação do desafio interno Tributo Devido (20/04–10/05/2026). Stack: React 19 + Vite 8 + Supabase + Vercel.
- https://supabase.com/dashboard → New project, nome
td-jogos, regiãoSouth America (São Paulo), salvar a senha do banco. - Espera provisionar (~2min).
- Project Settings → API → copiar:
Project URL→ vai emVITE_SUPABASE_URLanon public→ vai emVITE_SUPABASE_ANON_KEY
- Cole o conteúdo de
supabase/schema.sqleRun. - Cole
supabase/policies.sqleRun. - Cole
supabase/seed.sqleRun.
Supabase Dashboard → Storage → New bucket:
- Nome:
postagens - Public bucket: ✅ SIM (facilita exibir as imagens)
- Create
Depois, no SQL Editor, rodar de novo a parte de storage.objects que está no fim de policies.sql (caso não tenha rodado).
- Supabase Dashboard → Authentication → Providers → Google → Enable.
- Configurar no Google Cloud Console (console.cloud.google.com):
- Criar OAuth 2.0 Client ID (tipo Web).
- Authorized redirect URIs: colar o URL que aparece no painel do Supabase (algo tipo
https://<projeto>.supabase.co/auth/v1/callback). - Copiar
Client IDeClient Secret→ colar no Supabase.
- Em Authentication → URL Configuration: adicionar
http://localhost:5173e depois a URL Vercel em Redirect URLs.
Criar arquivo .env.local na raiz:
VITE_SUPABASE_URL=https://SEUPROJETO.supabase.co
VITE_SUPABASE_ANON_KEY=eyJhbG...
npm install
npm run devAbrir http://localhost:5173 → logar com marcio.capellup@tributodevido.com.br.
npm install -g vercel
vercel login
vercel # primeira vez: aceita defaults, escolhe "No" pra link
vercel --prod # deploy de produçãoNo dashboard Vercel → Settings → Environment Variables: adicionar as 2 variáveis VITE_SUPABASE_URL e VITE_SUPABASE_ANON_KEY. Redeploy.
Depois de ter a URL final (td-jogos.vercel.app), voltar no Supabase → Auth → URL Configuration → colocar essa URL em Site URL e Redirect URLs.
- Login Google (domínio
tributodevido.com.bré sugerido viahd=). - Primeiro login:
claim_pending_profile()tenta matchar por email, depois por nome. Se não achar, cria perfil solto (admin atribui grupo manualmente). - Postar: foto no Storage + registro em
postscomstatus='pending'. - Admin: aprova/reprova. Trigger SQL recalcula
pontosno approve. - Dashboard: soma
status='approved'por grupo/usuário.
marcio.capellup@tributodevido.com.brésuperadmin(seed). No primeiro login ele aparece automático.- Superadmin vai em
/admin → Usuáriose promove outra pessoa aadmin.
npm run dev # dev server
npm run build # prod build
npm run preview # preview do build
npm run lint # eslinttd-jogos/
├── supabase/ # SQL rodar no dashboard
├── public/logo-td.svg
└── src/
├── lib/ # supabase client, regras de semana/pontos
├── hooks/ # useAuth
├── components/ # Header, Layout, PostCard, FotoUpload, ...
├── pages/ # Login, Home, Postar, MeusPosts, Dashboard, Admin
└── styles/globals.css