API REST para gerenciamento de jogadores, partidas e estatísticas de jogos de Beach Tennis.
Desenvolvida com Node.js, Express e Sequelize, utilizando SQLite como banco de dados. A API implementa autenticação JWT, documentação via Swagger, testes unitários com 100% de cobertura e integração contínua com GitHub Actions.
- Node.js
- Express.js
- Sequelize (ORM)
- SQLite (adaptável para MySQL/PostgreSQL)
- JSON Web Token (JWT)
- Nodemon (dev)
- Jest (testes)
- Swagger (documentação)
- GitHub Actions (CI/CD)
.
├── database.sqlite
├── package.json
├── README.md
├── src
│ ├── app.js
│ ├── server.js
│ ├── config/
│ │ ├── database.js
│ │ └── swagger.js
│ ├── controllers/
│ │ ├── gameController.js
│ │ ├── playerController.js
│ │ └── userController.js
│ ├── middleware/
│ │ └── autenticarToken.js
│ ├── models/
│ │ ├── gameModel.js
│ │ ├── playerModel.js
│ │ ├── playerGame.js
│ │ ├── userModel.js
│ │ └── index.js
│ ├── repositories/
│ │ ├── gameRepository.js
│ │ ├── playerRepository.js
│ │ └── userRepository.js
│ ├── routes/
│ │ ├── gameRoutes.js
│ │ ├── playerRoutes.js
│ │ └── userRoutes.js
│ └── services/
│ ├── playerService.js
│ └── userService.js
├── tests/
│ ├── game.test.js
│ ├── player.test.js
│ └── user.test.js
└── .github/
└── workflows/
└── ci.ymlA API utiliza JWT. Após o login, é necessário incluir o token no cabeçalho das requisições protegidas:
Authorization: Bearer SEU_TOKEN_AQUI
idnameUserlastNameUseremail(único)password(criptografada)
idnamePlayerlastNamePlayergendernumberPhonesuperCategoryfederationCategoryclubscoreTotal
idnameGamegameCategorystatusGame(padrão: "Em andamento")createdAt,updatedAt
Relacionamento muitos-para-muitos com dados adicionais:
playerId(PK)gameId(PK)gamesProsaldoGamesvitoriasderrotas
| Método | Rota | Descrição |
|---|---|---|
| POST | /auth/login | Login e geração de token |
| POST | /auth/register | Registro de novo usuário |
| Método | Rota | Descrição |
|---|---|---|
| GET | /players | Listar jogadores |
| POST | /players | Criar novo jogador |
| PUT | /players/:id | Atualizar jogador |
| DELETE | /players/:id | Remover jogador |
| Método | Rota | Descrição |
|---|---|---|
| GET | /games | Listar todas as partidas |
| POST | /games | Criar nova partida + jogadores |
| GET | /games/:id | Detalhes de uma partida |
| PUT | /games/:id | Atualizar dados da partida |
| DELETE | /games/:id | Remover partida |
| GET | /games/:id/players | Buscar jogadores da partida |
| PUT | /games/:id/players/stats | Atualizar estatísticas dos jogadores |
Para rodar os testes:
npm testPara gerar o relatório de cobertura:
npm run test:coverage✅ Cobertura de testes: 100%
Documentação interativa da API disponível em:
http://localhost:3000/api-docs
{
"nameGame": "Final Feminina",
"gameCategory": "Feminino A",
"players": [1, 2]
}{
"1": {
"vitorias": 1,
"derrotas": 0,
"saldo": 3,
"gamespro": 6
},
"2": {
"vitorias": 0,
"derrotas": 1,
"saldo": -3,
"gamespro": 3
}
}Um front-end de testes está disponível em:
🔗 https://github.com/VilacaGabriel/FrontEnd-para-API
Como usar:
- Clone o repositório
- Abra com Live Server (VS Code)
- Rode a API localmente em
http://localhost:3000
O projeto utiliza GitHub Actions para rodar testes automaticamente a cada push ou PR.
- Gabriel Felipe da Cruz Vilaça
- Eduarda Dobre Dicalo
Estudantes de Engenharia de Software — 6º período