Brawl Lookup Pro é uma aplicação web completa para consulta de dados do Brawl Stars, desenvolvida com Node.js, Express, TypeScript, React e tRPC.
- Backend: Node.js 22+ com Express e TypeScript
- Frontend: React 19 com Vite e TypeScript
- API: tRPC para comunicação type-safe entre cliente e servidor
- Banco de Dados: MySQL com Drizzle ORM
- Autenticação: OAuth via Manus
- Estilização: TailwindCSS 4 com Radix UI
- Gerenciador de Pacotes: pnpm
- Node.js 22.x ou superior
- pnpm 10.x ou superior
- MySQL 8.x ou superior
- Instalar dependências:
pnpm install- Configurar variáveis de ambiente:
Crie um arquivo .env na raiz do projeto com as seguintes variáveis (veja .env.example para um template completo):
# Brawl Stars API Token (obtenha em https://developer.brawlstars.com/)
BRAWL_TOKEN=seu_token_aqui
# Banco de dados MySQL
DATABASE_URL=mysql://usuario:senha@localhost:3306/brawl_lookup_pro
# OAuth Manus (opcional, para autenticação)
MANUS_OAUTH_CLIENT_ID=seu_client_id
MANUS_OAUTH_CLIENT_SECRET=seu_client_secret
# Porta do servidor (opcional, padrão: 3000)
PORT=3000- Configurar banco de dados:
pnpm db:pushpnpm devO servidor será iniciado em http://localhost:3000 (ou próxima porta disponível).
- Build:
pnpm build- Iniciar:
pnpm startpnpm dev- Inicia o servidor em modo desenvolvimento com hot reloadpnpm build- Compila o projeto para produçãopnpm start- Inicia o servidor em modo produçãopnpm check- Verifica tipos TypeScript sem compilarpnpm format- Formata o código com Prettierpnpm test- Executa os testes com Vitestpnpm db:push- Aplica as migrations do banco de dados
- ✅ Consulta de perfil de jogadores
- ✅ Consulta de clubes
- ✅ Histórico de batalhas
- ✅ Rankings globais e por país
- ✅ Rankings por Brawler
- ✅ Lista de Brawlers
- ✅ Eventos ativos
- ✅ Modos de jogo
- ✅ Ícones e assets
- ✅ Novidades do Game (baseado em eventos)
- ✅ Temporadas do Game (placeholder, aguardando API dedicada)
- ✅ Salvar jogadores e clubes favoritos
- ✅ Rastreamento de troféus
- ✅ Notificações de marcos (milestones)
- ✅ Histórico de snapshots de troféus
- ✅ Login via OAuth (Manus)
- ✅ Gestão de sessões
- ✅ Proteção de rotas
- ✅ Cache inteligente para reduzir chamadas à API
- ✅ TTL diferenciado por tipo de dado:
- 1 minuto: dados de jogadores, clubes e batalhas
- 5 minutos: rankings
- 10 minutos: eventos
- 1 hora: dados estáticos (brawlers, ícones, modos)
brawl-lookup-pro-nodejs/
├── client/ # Frontend React
│ ├── src/
│ │ ├── components/ # Componentes React
│ │ ├── pages/ # Páginas da aplicação
│ │ ├── hooks/ # Custom hooks
│ │ ├── contexts/ # Context providers
│ │ └── lib/ # Utilitários
│ └── index.html
├── server/ # Backend Node.js
│ ├── _core/ # Configurações core
│ │ ├── index.ts # Entry point do servidor
│ │ ├── trpc.ts # Configuração tRPC
│ │ ├── oauth.ts # Autenticação OAuth
│ │ └── vite.ts # Integração Vite
│ ├── brawlApi.ts # Cliente API Brawl Stars
│ ├── db.ts # Operações de banco de dados
│ └── routers.ts # Rotas tRPC
├── drizzle/ # Schema e migrations do banco
│ ├── schema.ts # Definição das tabelas
│ └── migrations/ # Arquivos de migration
├── shared/ # Código compartilhado
│ ├── types.ts # Tipos TypeScript
│ └── const.ts # Constantes
├── package.json
├── tsconfig.json
├── vite.config.ts
└── drizzle.config.ts
Este projeto é uma aplicação full-stack Node.js/React e pode ser hospedado em diversas plataformas. Abaixo estão algumas opções e considerações:
- Vercel / Netlify: Ideal para o frontend (React com Vite). Eles oferecem deploy contínuo e CDN para arquivos estáticos.
- Render / Heroku / DigitalOcean App Platform: Boas opções para o backend (Node.js com Express e tRPC). Suportam aplicações Node.js e permitem a configuração de variáveis de ambiente e bancos de dados.
- Provedores de VPS (AWS EC2, Google Cloud, Azure VM): Para controle total sobre o ambiente. Requer mais configuração manual (servidor web como Nginx/Apache, PM2 para gerenciar processos Node.js, etc.).
- Node.js Runtime: A plataforma deve suportar Node.js 22.x ou superior.
- Banco de Dados MySQL: Um serviço de banco de dados MySQL (ex: AWS RDS, PlanetScale, ou um servidor MySQL auto-hospedado) é necessário para o Drizzle ORM.
- Variáveis de Ambiente: Todas as variáveis listadas em
.env.exampledevem ser configuradas na plataforma de hospedagem (especialmenteBRAWL_TOKEN,DATABASE_URL,MANUS_OAUTH_CLIENT_ID,MANUS_OAUTH_CLIENT_SECRET). - Build Process: A plataforma deve ser capaz de executar
pnpm installepnpm buildpara gerar os arquivos de produção. - Servidor Web: Para o frontend, os arquivos estáticos gerados pelo
vite build(na pastadist/public) precisam ser servidos. Para o backend, o servidor Node.js (dist/index.js) precisa estar rodando e acessível.
- Conectar Repositório Git: Conecte seu repositório Git (GitHub, GitLab, Bitbucket) à plataforma de hospedagem.
- Configurar Build Command:
pnpm install && pnpm build - Configurar Start Command:
pnpm start - Variáveis de Ambiente: Adicione as variáveis de ambiente (BRAWL_TOKEN, DATABASE_URL, etc.) na interface da plataforma.
- Banco de Dados: Configure a conexão com seu banco de dados MySQL externo.
- Validação de tags do Brawl Stars
- Normalização automática de tags (O → 0)
- Proteção de rotas com autenticação
- Sanitização de inputs
- Timeouts em requisições HTTP
Em modo desenvolvimento, logs do navegador são coletados automaticamente em .manus-logs/:
browserConsole.log- Logs do consolenetworkRequests.log- Requisições de redesessionReplay.log- Eventos de sessão
- O projeto já está configurado para Node.js e não requer conversão adicional
- Todas as funcionalidades e integrações foram mantidas
- O TypeScript é transpilado automaticamente para JavaScript durante o build
- O projeto usa ESM (ECMAScript Modules) nativamente
MIT
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou pull requests.