TopServers - Ranking de Servidores de Jogos Online
Visão Geral
O TopServers é uma plataforma de ranking e listagem de servidores de jogos online (como Minecraft, FiveM e Ragnarok), criada para concentrar em um só lugar descoberta, comparação e votação de servidores privados. A ideia surgiu da falta de um diretório confiável, com SEO decente e mecanismos antifraude, já que os rankings existentes eram fragmentados por jogo e tecnicamente limitados.
Desenvolvi o projeto como exercício de full-stack engineering, cobrindo desde modelagem de domínio até deploy automatizado. No back-end, implementei uma API em Node.js/Express com TypeScript, Prisma e uma arquitetura inspirada em Clean Architecture. No front-end, usei Next.js 12 com SSR para garantir indexação de páginas de servidores e melhor descoberta orgânica.
O core funcional inclui sistema de votos com proteção em múltiplas camadas (reCAPTCHA + janela temporal por IP/conta), gestão de servidores por administradores, plano premium com pagamentos via Stripe (checkout + webhooks) e processamento assíncrono de geolocalização e notificações em filas Bull/Redis. Toda a aplicação roda em containers Docker, com CI/CD via GitHub Actions até o ambiente de produção.
O projeto não foi lançado comercialmente em larga escala - o impacto principal foi o desenvolvimento prático de uma stack moderna de pagamentos, filas, antifraude e arquitetura modular, que hoje serve como referência de código para outros projetos comerciais.
Diferencial Principal
O diferencial do TopServers está na combinação de três aspectos normalmente vistos em produtos maduros, mas raros em side projects:
- Um sistema de votação pensado desde o início com antifraude realista (IP + conta + janela de 12h + geolocalização assíncrona), e não apenas um “like” básico.
- Um fluxo de pagamentos premium totalmente integrado ao Stripe, com webhooks idempotentes cobrindo tanto pagamentos instantâneos quanto assíncronos, evitando concessão duplicada de benefícios.
- Uma arquitetura com separação clara de domínios (Accounts, Servers, Votes, Premium, Games, etc.), filas assíncronas e infraestrutura automatizada, que torna o projeto próximo de um produto de produção, mesmo sendo solo.
Tecnicamente, o uso de Prisma como single source of truth para o modelo de dados, TSyringe para DI e Bull/Redis para filas cria uma base sólida e extensível, permitindo adicionar novas features (reviews, analytics avançado, API pública) sem reescrever o core.
Arquitetura
- Next.js Frontend: Aplicação React com Next.js 12, SSR e roteamento para páginas de listagem e detalhe de servidores, formulários de voto, cadastro/login e fluxo de compra de premium.
- Express API: Back-end em Node.js/Express com TypeScript estruturado por módulos de domínio (Accounts, Servers, Votes, Premium, Games, Translations, Roles, Contact).
- Módulo Accounts: Gerencia usuários, autenticação, recuperação de senha e permissões básicas.
- Módulo Servers: CRUD de servidores, dados de conexão, status de premium e métricas agregadas.
- Módulo Votes: Registra votos, aplica regras de antifraude (reCAPTCHA, IP, janela de 12h) e dispara jobs assíncronos de geolocalização.
- Módulo Premium: Integração com Stripe (checkout sessions, webhooks), controle de histórico de pagamentos e cálculo de dias premium.
- Módulo Games: Cadastro de jogos suportados e categorização de servidores por jogo.
- Módulo Translations: Suporte a múltiplos idiomas para textos de interface e conteúdo estático.
- Módulo Roles: Controle de papéis (admin, owner de servidor, usuário) e autorização em endpoints.
- Módulo Contact: Formulário de contato e disparo de e-mails via AWS SES.
- PostgreSQL (Prisma): Banco relacional principal para usuários, servidores, votos, pagamentos e histórico de premium.
- Redis + Bull Queues: Cache de dados críticos e filas para jobs assíncronos de GeoIP, processamento de webhooks e envio de e-mails.
- Workers de Jobs: Processos separados consumindo filas Bull, executando chamadas a APIs de geolocalização, aplicando regras de negócio derivadas e disparando notificações.
- Infraestrutura Docker: Docker Compose orquestrando API, frontend, PostgreSQL, Redis e workers, com PM2 para gerenciar processos Node em produção.
- CI/CD com GitHub Actions: Pipelines automatizados para testes básicos, build e deploy a partir dos branches principais.
Destaques Técnicos
- Sistema antifraude que cruza IP e conta com janela deslizante de 12 horas, implementado com queries tipadas Prisma e uso de
dayjs/timezones para evitar falsos positivos. - Processamento assíncrono de geolocalização de votos com Bull + Redis, evitando que o endpoint de voto seja bloqueado por chamadas a APIs externas instáveis.
- Integração com Stripe usando webhooks para lidar com pagamentos síncronos e assíncronos, com verificação de idempotência via
gatewayIdpara não conceder premium duplicado. - Arquitetura de back-end baseada em Clean Architecture, com use cases desacoplados de repositórios concretos via TSyringe, permitindo testes unitários com implementações in-memory.
- Frontend Next.js 12 com SSR focado em SEO para páginas de servidores, além de uso de
next-sitemappara geração automática de sitemap XML. - Infraestrutura conteinerizada (Docker Compose) incluindo banco PostgreSQL, Redis, API, frontend e workers, pronta para ser executada em qualquer host compatível.
- Pipeline CI/CD em GitHub Actions cobrindo build e deploy a partir de commits nos repositórios de API e frontend.
- Implementação de reCAPTCHA v3 no fluxo de votos, combinando score de risco do Google com regras próprias de IP/conta para mitigar bots e abuso manual.