App web para realizar sorteios a partir de dados importados de CSV (Google Forms/Sheets). Importe participantes, selecione campos, cadastre prêmios e sorteie ganhadores com animação!
- 📥 Importar CSV — upload de arquivo ou URL pública do Google Sheets
- ✅ Selecionar campos — escolha quais colunas manter (ex: nome, email)
- 🏆 Cadastrar prêmios — crie e reordene a lista de prêmios
- 🎲 Sortear — animação tipo slot machine com nomes girando antes de revelar o ganhador
- Cada pessoa só ganha uma vez (removida do pool após sorteio)
- Resumo completo ao final: prêmio → ganhador
# Instalar dependências
npm install
# Rodar em desenvolvimento
npm run dev
# Build de produção
npm run build
npm startAcesse http://localhost:3000 no navegador.
- Importar → Suba um
.csvou cole a URL de uma planilha Google (publicada na web) - Campos → Selecione quais colunas quer manter
- Prêmios → Cadastre os prêmios na ordem do sorteio
- Sortear → Clique em "Sortear!" e veja a animação revelar o ganhador
- Next.js 15 (App Router)
- Tailwind CSS
- Papa Parse (parsing de CSV)
- TypeScript
src/
├── app/
│ ├── page.tsx # Página principal (wizard)
│ └── api/fetch-csv/route.ts # Proxy para Google Sheets
├── components/
│ ├── Wizard.tsx # Barra de progresso + container
│ ├── StepImport.tsx # Step 1: upload/URL
│ ├── StepSelectFields.tsx # Step 2: seleção de campos
│ ├── StepPrizes.tsx # Step 3: cadastro de prêmios
│ ├── StepRaffle.tsx # Step 4: sorteio + resultados
│ ├── FileDropZone.tsx # Drag & drop de arquivo
│ ├── DataPreview.tsx # Preview em tabela
│ └── SlotMachineAnimation.tsx # Animação do sorteio
└── lib/
├── types.ts # Tipos TypeScript
├── csv-parser.ts # Parsing de CSV
└── sheets-url.ts # Conversão de URL do Sheets
npm testMIT