Análise estatística avançada da Mega-Sena com gerador inteligente de apostas baseado em ciência de dados.
- Análise Estatística Completa: Frequências, padrões e tendências históricas
- Números Quentes e Frios: Identificação de números mais e menos sorteados
- Gerador Inteligente de Apostas: Múltiplas estratégias (aleatório, balanceado, Fibonacci, etc.)
- Dashboard Interativo: Visualização clara e moderna dos dados
- Banco de Dados Local: SQLite com dados históricos completos da CAIXA
- Integração com API: Conexão com a API oficial do Portal de Loterias da CAIXA
- Segurança Reforçada: CSP com nonces, CORS estrito, rate limiting, validação Zod
- Frontend: Next.js 16 + React 19
- Runtime: Bun >=1.1 (obrigatório)
- Banco de Dados: SQLite (bun:sqlite - nativo)
- Estilização: Tailwind CSS + componentes shadcn/ui
- TypeScript: Tipagem completa
- Analytics: Motor estatístico customizado
- Bun >=1.1.0 (obrigatório - utiliza SQLite nativo)
- Instalar dependências:
bun install- Executar migrações do banco de dados:
bun run db:migrate- Baixar dados de sorteios (opcional - baixa os últimos 100 sorteios):
bun run db:pull -- --limit 100Ou baixar todo o histórico (pode levar vários minutos):
bun run db:pull- Iniciar servidor de desenvolvimento:
bun run devAcesse http://localhost:3000 para ver a aplicação.
bun run dev- Iniciar servidor de desenvolvimento (API Bun + proxy Next.js)bun run build- Build para produçãobun run start- Iniciar servidor de produçãobun run lint- Executar ESLint (falha em warnings)bun run lint:fix- Corrigir problemas de lint automaticamentebun run format- Formatar código com Prettierbun run test- Executar testes com Vitest (usa fallback de banco em memória)bun run db:migrate- Executar migrações do banco de dadosbun run db:pull- Baixar dados de sorteios da API CAIXAbun run audit:prune- Soft delete de logs de auditoria antigos (retenção)bun run log:prune- Soft delete de eventos de log antigos (retenção)bun scripts/optimize-db.ts- Otimizar banco de dados (checkpoint WAL + VACUUM + ANALYZE)
# Baixar últimos N sorteios (substitui existentes)
bun run db:pull -- --limit 100
# Baixar últimos N sorteios (incremental - apenas novos)
bun run db:pull -- --limit 100 --incremental
# Baixar faixa específica
bun run db:pull -- --start 1 --end 500
# Baixar todos os sorteios (sem flags)
bun run db:pull
# Baixar todos incrementalmente (pula existentes)
bun run db:pull -- --incrementalModos:
- Padrão (Completo): Usa
INSERT OR REPLACE- sobrescreve sorteios existentes com dados atualizados - Incremental (
--incremental): UsaINSERT OR IGNORE- apenas adiciona novos sorteios, pula existentes
Quando usar modo incremental:
- Atualizações diárias/semanais para adicionar apenas novos sorteios
- Quando deseja preservar modificações manuais em sorteios existentes
- Para reduzir chamadas de API e tempo de processamento
Após baixar grandes quantidades de dados, otimize o banco para recuperar espaço e melhorar performance:
# Otimizar banco de dados (recomendado após grandes ingestões)
bun scripts/optimize-db.tsEste script executa:
- WAL Checkpoint: Mescla Write-Ahead Log de volta ao arquivo principal do banco
- VACUUM: Recupera espaço não utilizado e compacta o banco
- ANALYZE: Atualiza estatísticas do otimizador de queries para melhor performance
Quando executar:
- Após download inicial de dados (
bun run db:pull) - Após baixar 100+ novos sorteios
- Semanalmente em ambientes de produção (via cron)
- Quando experimentar problemas de performance
├── app/ # App Router Next.js
│ ├── dashboard/ # Páginas do dashboard
│ │ ├── page.tsx # Dashboard principal
│ │ ├── statistics/ # Página de estatísticas
│ │ └── generator/ # Página do gerador de apostas
│ ├── api/ # Rotas de API
│ └── layout.tsx # Layout raiz
├── components/ # Componentes React
│ ├── ui/ # Componentes shadcn/ui
│ └── *.tsx # Componentes customizados
├── lib/ # Bibliotecas principais
│ ├── analytics/ # Estatísticas e geração de apostas
│ ├── api/ # Cliente da API CAIXA
│ ├── security/ # CSP e headers de segurança
│ ├── db.ts # Utilitários do banco de dados
│ ├── constants.ts # Constantes compartilhadas
│ └── utils.ts # Funções auxiliares
├── db/ # Banco de dados SQLite
│ ├── migrations/ # Migrações SQL
│ └── mega-sena.db # Arquivo do banco (gerado)
├── proxy.ts # Proxy Next.js (nonces CSP, headers de segurança)
├── server.ts # Servidor API Bun
└── scripts/ # Scripts CLI
├── migrate.ts # Executor de migrações
└── pull-draws.ts # Ingestão de dados
- Aleatório (Random): Números completamente aleatórios
- Números Quentes (Hot Numbers): Baseado nos números mais sorteados
- Números Frios (Cold Numbers): Baseado nos números menos sorteados
- Balanceado (Balanced): Mix inteligente de números quentes e frios
- Fibonacci: Baseado na sequência matemática de Fibonacci
Armazena histórico completo de sorteios com:
- Número do concurso, data e números sorteados (1-6)
- Informações de prêmios para Sena, Quina e Quadra
- Dados de acumulação
- Flags de sorteios especiais
Análise de frequência em cache para todos os números (1-60):
- Total de ocorrências
- Último concurso e data de sorteio
Rastreamento opcional de apostas geradas para análise futura.
Copie .env.example para .env.local e personalize:
# URL base usada pelas páginas do App Router para fetches server-side
NEXT_PUBLIC_BASE_URL=http://localhost:3000
# Porta exposta pelo servidor Bun (`server.ts`)
API_PORT=3201
# CORS: lista de origens permitidas (separadas por vírgula)
ALLOWED_ORIGINS=http://localhost:3000,http://localhost:3002Os testes executados via
bun run testsimulam o banco de dados usando um driver em memória quando a variávelVITESTestá definida, permitindo rodar a suite sem obun:sqlitereal.
A aplicação segue um design limpo e minimalista inspirado em Apple/Linear/Mercury com:
- Tipografia: Fonte Inter com espaçamento apertado
- Paleta de Cores: Base neutra + destaque cyan elétrico
- Componentes: Cards arredondados com sombras suaves
- Micro-interações: Transições suaves e estados de hover
- Responsivo: Abordagem mobile-first
Todos os design tokens estão definidos em app/globals.css e tailwind.config.js.
Gera apostas baseadas em orçamento, estratégia e modo.
Corpo da Requisição:
{
"budget": 100,
"strategy": "balanced",
"mode": "optimized"
}Resposta:
{
"success": true,
"data": {
"bets": [
{
"id": "bet_1727711234567_n1m2o3p4q",
"numbers": [5, 12, 23, 34, 45, 56],
"cost": 6,
"type": "simple",
"numberCount": 6,
"strategy": "balanced"
}
],
"totalCost": 6,
"remainingBudget": 94,
"budgetUtilization": 6,
"totalNumbers": 6,
"strategy": "balanced",
"mode": "optimized",
"summary": {
"simpleBets": 1,
"multipleBets": 0,
"averageCost": 6
}
}
}Esta aplicação implementa medidas de segurança abrangentes seguindo OWASP e melhores práticas de 2025:
- CSP baseado em Nonce: Nonces criptográficos gerados por requisição via middleware Next.js
- strict-dynamic: Permite carregamento de scripts confiados sem unsafe-inline
- Proteção de Frame: frame-src, frame-ancestors definidos como 'none'
| Header | Valor |
|---|---|
| Content-Security-Policy | Baseado em nonce com strict-dynamic |
| Cross-Origin-Embedder-Policy | require-corp |
| Cross-Origin-Opener-Policy | same-origin |
| Cross-Origin-Resource-Policy | same-origin |
| Strict-Transport-Security | max-age=31536000; includeSubDomains; preload |
| X-Content-Type-Options | nosniff |
| X-Frame-Options | DENY |
- Validação de Input: Schemas Zod em todos os endpoints
- Rate Limiting: 100 requisições/minuto por IP com cache LRU
- CORS: Validação estrita de origem, sem wildcards em produção
- SQL Injection: Queries parametrizadas com bun:sqlite
- Docker: Build multi-stage com usuário não-root (UID 1001)
- Secrets: Pre-commit hooks com detect-secrets
Build para produção:
bun run buildA aplicação pode ser implantada via Docker. Veja docker-compose.yml para configuração.
- Siga o formato Conventional Commits
- Execute
bun run lint:fixebun run formatantes de commitar - Garanta que todos os testes passam com
bun run test - Atualize a documentação para novas funcionalidades
Apache 2.0
Esta aplicação é apenas para fins educacionais e de análise estatística. Não garante resultados vencedores. Jogos de loteria são jogos de azar. Jogue com responsabilidade.