Um jogo de simulação de investimentos em bolsa. Administradores criam competições (públicas ou privadas), os jogadores entram por um link de login enviado por e-mail e negociam ações com dados de mercado reais, competindo pela melhor evolução de portfólio.

O que já funciona

  • Competições públicas e privadas. Nas públicas, qualquer jogador pode pedir entrada. Nas privadas, só entra quem recebeu convite por e-mail.
  • Login sem senha. O jogador pede o link, recebe por e-mail, clica e está dentro.
  • Validação de e-mail antes do envio. O sistema confere se o domínio tem registro MX válido e não está numa lista de domínios descartáveis.
  • Gestão de jogadores. O administrador pode reenviar convites e remover jogadores.
  • Captcha auto-hospedado com ALTCHA (prova de trabalho, sem serviço de terceiros) e log de auditoria.

Arquitetura

O sistema principal nunca envia e-mail diretamente: ele publica uma mensagem numa fila, e um worker assíncrono faz o envio. Assim, o fluxo da aplicação não depende da latência de terceiros.

  • Sistema principal (Spring Boot). API REST gerada a partir de uma especificação OpenAPI, com persistência JPA/PostgreSQL.
  • Envio de e-mail (Quarkus em AWS Lambda). Consome a fila Amazon SQS e envia via Amazon SES, com suporte a imagem nativa GraalVM.
  • Especificação em BDD. Cada fluxo tem cenários Gherkin cobrindo o caminho feliz e os casos de erro.
  • Integração contínua. Os testes rodam contra infraestrutura real (Postgres e SQS em Docker), com piso de 80% de cobertura de linha (JaCoCo).

Próximos passos

  • Negociação com cotações reais via Brapi.
  • Contabilidade da competição em partida dobrada, com lançamentos insert-only.
  • Gráficos acessíveis, com descrição textual e sonorização da série; a parte mais pesada será em Rust compilado para WebAssembly.