Pular para o conteúdo principal
← Voltar aos projetos TopServers - Ranking de Servidores de Jogos Online

TopServers - Ranking de Servidores de Jogos Online

React Next.js Node.js TypeScript PostgreSQL

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:

  1. 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.
  2. 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.
  3. 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 gatewayId para 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-sitemap para 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.

Galeria