Palpites App
Aplicação de palpites para eventos esportivos com Next.js e React
Aplicação de palpites para eventos esportivos com Next.js e React
Aplicação front-end
Aplicação web front-end para coleta e organização de palpites esportivos. Usuários podem criar jogos e submeter palpites de modo lúdico, criando regras de pontuação e identidades customizadas. Palpites são avaliados e ranqueados pela aplicação, amparada por módulo independente de API back-end (apresentado a seguir).
O projeto front-end foi criado com o framework Next.js, por sua vez baseado em Node.js e React, escolhido devido à ampla adoção pela comunidade de desenvolvimento e sua documentação compreensiva. O Bootstrap também foi utilizado na criação de páginas responsivas.
O frontend realiza a autenticação por comunicação com o backend, transferindo cookies conforme necessário entre este e o usuário.
Demonstrações em vídeo
Os vídeos a seguir demonstram o app em funcionamento em diferentes casos de uso.
Ferramentas [front-end]
Bootstrap
CSS
Git/GitHub
HTML
JavaScript
Next.js
Node.js
React
TypeScript
Palpite, registro e gestão de jogo.
Exploração e palpite.
Exploração e palpite em tela pequena.
Aplicação back-end
O projeto backend implementa uma web API com o ASP.NET Core (C#), seguindo os princípios SOLID de arquitetura limpa.
Autenticação e autorização
Somente usuários autorizados podem criar e gerir dados sensíveis, enquanto os bolões ficam por conta dos seus criadores, usuários comuns. Esquemas de autenticação e autorização são baseados no ASP.NET Core Identity.
Banco de dados relacional
O SGBD empregado no projeto é o SQL Server, com o SQLite servindo de apoio em testes. A maior parte das interações é feita por meio do EF Core (ORM), com algumas consultas e procedures implementadas diretamente.
Serviço de e-mails controlado por mensageria
Um módulo simples para notificações de eventos interessantes via e-mail foi também implementado, em linguagem Python. Ele é controlado por mensageria, realizada no esquema de work queues, baseada no RabbitMQ, com suas bibliotecas para Python e C#.
Análise estática de código
A ferramenta SonarQube foi usada, em sua versão Community Build, para analisar o código do projeto em busca de violações a princípios de Clean Code.
Testes da API
O projeto possui testes de integração baseados no pytest, mostrados abaixo num vídeo que você pode assistir. Note também a imagem mais abaixo que mostra o resultado perfeito dos testes. O xUnit foi também utilizado na criação de testes unitários para métodos utilitários no projeto.
Integração contínua (CI)
Utilizamos os recursos do GitHub Actions na criação de fluxos de trabalho automatizados.
Atualizações no repositório com push resultam na execução de um workflow de teste que clona os repositórios de aplicação e teste, compila, executa e testa a aplicação.
Ferramentas [back-end]
ASP.NET Core
ASP.NET Core Identity
C#
Entity Framework Core
Git/GitHub
GitHub Actions
pytest
Python
RabbitMQ
SonarQube
SQL Server
Swagger
xUnit
Página do Swagger mostrando todos os controladores do projeto, incluindo os do Identity (sob o nome GuessGame). Alguns dos endpoints de gerenciamento de conta, como logout e delete, por exemplo, foram implementados no projeto, já que o Identity não os possui. Nem todos os endpoints padrão do Identity são usados na prática.