Voltar aos casos

Spike Series

Uma plataforma para gerir um circuito inteiro.

Circuitos regionais de VALORANT para um organizador europeu: site público, portal de gestão e bot de Discord, construídos de raiz pela VentuLabs com a mesma stack e as mesmas garantias dos nossos próprios produtos.

5.552
testes automáticos
8
idiomas
222
decisões documentadas
70
tabelas na base de dados
1.200
espetadores em simultâneo, medidos

Em produção em spikeserieseu.es (Abre num novo separador)

Página inicial pública da Spike Series com a secção de partidas, as regiões e os próximos torneios (dados de demonstração)

Uma plataforma para gerir um circuito inteiro

Site público para jogadores e espetadores, portal de gestão para o organizador e um bot de Discord que liga tudo em tempo real.

  • Motor de competição completo

    Eliminação simples e dupla, grupos, suíço, liga e GSL. Gera quadros e classificações e recalcula-os sozinho após cada resultado.

  • Vetos de mapas em direto

    Os dois capitães vetam e escolhem mapas à vez com contagem decrescente, em tempo real e sem recarregar, com o histórico da série à vista.

  • Check-in e fluxo da partida

    Check-in antes de jogar, reagendamentos com horários propostos e aceites entre capitães, e reporte do resultado por mapa.

  • Chat ligado ao Discord

    Chat de equipa e de partida dentro do site, com retenção automática, sincronizado com os canais de Discord do circuito.

  • Bot de Discord integrado

    Cria automaticamente cargos e canais de equipa e avisa por mensagem direta de partidas, resultados e prazos, no idioma do utilizador.

  • Mercado de equipas e jogadores

    Quadro onde jogadores e equipas publicam anúncios e encontram lugar antes de as inscrições fecharem.

  • Acesso com Discord

    Registo e acesso com a conta de Discord do jogador, além de email e palavra-passe com sessão cifrada.

  • Oito idiomas

    Site, portal e conteúdo traduzidos para ES, EN, FR, PT, IT, DE, NL e TR, com cada idioma a carregar apenas o que é seu.

  • Resultado e estatísticas automáticos

    O resultado é lido a partir da emissão, e a plataforma localiza cada partida no histórico de jogos do VALORANT para recolher as suas estatísticas e as de cada jogador.

  • Manutenção sem interrupção

    Ativa-se a partir do portal e chega de imediato a quem está a navegar, sem recarregar a página.

  • Suporte auditado

    A equipa de suporte pode entrar como um utilizador para o ajudar, com aviso visível e registo completo da sessão.

  • Pensado primeiro para o telemóvel

    Cada ecrã é pensado e testado primeiro a 390 px de largura, do quadro ao chat, antes de ser adaptado ao desktop.

Arquitetura técnica

A mesma stack e as mesmas garantias dos nossos próprios produtos: testes, deploy automático e vários organizadores por instância desde o primeiro dia.

Frontend

  • Next.js 16 com App Router
  • React 19
  • TypeScript em modo estrito
  • Tailwind CSS 4
  • 8 idiomas, cada um com o seu próprio pacote
  • Telemóvel primeiro, testado a 390 px

Backend

  • Componentes de servidor e rotas de API
  • Sessões cifradas e bcrypt
  • Validação com Zod em tudo o que altera dados
  • Direto com eventos do servidor
  • Proteção CSRF e limites de pedidos
  • Acesso com Discord

Dados

  • PostgreSQL 16 com Drizzle ORM
  • 70 tabelas e 111 migrações
  • Isolamento por organizador e por circuito
  • Chaves estrangeiras com eliminação controlada
  • Triggers de data de alteração
  • Migrações SQL versionadas

Motor de competição

  • Biblioteca pura, sem framework nem base de dados
  • Eliminação simples e dupla, suíço, liga e GSL
  • Determinista: o mesmo torneio gera o mesmo quadro
  • Cobertura de 100% das linhas
  • Classificações e desempates configuráveis
  • Só a interface e o portal o consomem

Infraestrutura

  • Servidor Ubuntu 24.04 com Node 22
  • Nginx e PM2 com várias instâncias
  • Certificados Let's Encrypt com HSTS
  • Deploy a partir do VentuHub com cópia prévia
  • Verificação de saúde e reversão automática
  • 1.200 espetadores em simultâneo medidos

Qualidade

  • 4.859 testes com Vitest em 486 ficheiros
  • 693 testes de ponta a ponta com Playwright
  • Três projetos: Chrome móvel, Safari móvel e desktop
  • Postgres real nos testes
  • ESLint com regras de qualidade e ratchet
  • Lighthouse 91, 100, 100 e 100 em telemóvel

Perfis diferenciados

Um capitão não pode mexer noutra equipa. Um árbitro só verifica as partidas que lhe cabem.

  • Admin

    Acesso completo: utilizadores, auditoria, definições do organizador e manutenção.

  • Organização

    Gestão operacional de circuitos, torneios, inscrições e equipas.

  • Árbitro

    Verifica os resultados das partidas que lhe estão atribuídas.

  • Capitão

    A sua equipa: plantel, inscrições, check-in, vetos e reporte do resultado.

  • Jogador

    Vê a sua equipa e as suas partidas e edita o seu próprio perfil.

Não é só um site de resultados

Decisões de engenharia que normalmente não se veem, mas que dão estabilidade a uma competição em direto.

  • Motor de competição como biblioteca pura

    Sem dependências do framework, da base de dados nem da hora do sistema: a hora é injetada e o sorteio usa uma semente, por isso o mesmo torneio gera sempre o mesmo quadro nos testes.

  • Só o idioma ativo viaja até ao navegador

    Cada um dos oito idiomas é o seu próprio pacote: o servidor já sabe o idioma antes de desenhar a página e o cliente só descarrega esse.

  • Partidas em direto sem recarregar

    Um único fluxo de eventos por separador avisa de resultados, vetos e alterações na classificação assim que acontecem, com reconexão automática.

  • Manutenção sem deixar ninguém a meio

    Ativa-se a partir do portal e chega de imediato a quem está a navegar, sem ter de atualizar a página para o saber.

  • Suporte com rastreabilidade completa

    A equipa de suporte pode entrar como um utilizador para resolver uma incidência, com um aviso permanente no ecrã e o registo do que fez.

  • Vários organizadores desde o primeiro dia

    Cada organizador e cada circuito ficam isolados na base de dados: é o que transforma o protótipo num produto replicável.

  • Capacidade medida, não estimada

    Testes de carga com partidas em direto: 1.200 espetadores em simultâneo com respostas abaixo de 350 ms no percentil 95.

  • Deploy com reversão automática

    A compilação prepara-se à parte e entra de uma vez no servidor; se o arranque falhar, o sistema regressa sozinho à versão anterior.

Milhares de testes automáticos

Cobertura desde o motor de competição até aos fluxos completos de capitão e organizador. Cada deploy é bloqueado se algo falhar.

4.859
testes com Vitest
486
ficheiros de teste
693
testes de ponta a ponta
3
projetos: dois móveis e um desktop
  • Motor de competição

    Quadros de eliminação simples e dupla, suíço, liga e GSL: folgas corretas, classificações estáveis e resultados impossíveis rejeitados.

  • Autenticação e sessão

    Acesso com email e com Discord, sessão cifrada, CSRF, limite de tentativas e auditoria.

  • Isolamento por organizador

    Separação por organizador e por circuito verificada ao nível da consulta e da base de dados.

  • Partidas e direto

    Check-in, reagendamentos, vetos de mapas, reporte e verificação de resultados e o fluxo de eventos em direto.

  • Idiomas e conteúdo

    Os oito idiomas carregam o que devem e nada mais: testa-se que nenhum cliente descarrega um idioma que não está a usar.

  • Ponta a ponta, telemóvel primeiro

    Fluxos completos de capitão e de organizador sobre Chrome real, em dois projetos móveis e um de desktop, com verificações de acessibilidade.

Stack completa

O mesmo critério dos nossos próprios produtos: só ferramentas modernas, mantidas e com comunidade ativa.

  • Next.js 16
  • React 19
  • TypeScript 5
  • Tailwind CSS 4
  • Node.js 22
  • PostgreSQL 16
  • Drizzle ORM
  • PGlite nos testes
  • Sessões cifradas
  • Zod
  • discord.js
  • Vitest
  • Playwright
  • ESLint 9
  • SQL
  • Bash
  • Nginx
  • PM2
  • Ubuntu 24.04
  • VentuHub
  • Let's Encrypt

Precisa de algo assim?

A Spike Series é código próprio construído à medida para um organizador de circuitos de VALORANT: sem templates e com o mesmo rigor técnico que colocamos nos nossos produtos.

Ver a ficha do EsportsHubVoltar aos casos