Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/elisaborba/trybe-futebol-club

Aplicação em TypeScript que gerencia times de futebol. Usa Express.js para as requisições HTTP, com Sequelize para armazenar dados dos times e partidas, JWT para autenticação e oferece funcionalidades de CRUD para times, classificação e partidas.
https://github.com/elisaborba/trybe-futebol-club

docker express jwt-authentication mocha mocha-chai mysql nodejs sequelize sinon typescript

Last synced: about 1 month ago
JSON representation

Aplicação em TypeScript que gerencia times de futebol. Usa Express.js para as requisições HTTP, com Sequelize para armazenar dados dos times e partidas, JWT para autenticação e oferece funcionalidades de CRUD para times, classificação e partidas.

Awesome Lists containing this project

README

        

# ⚽ Trybe Futebol Club
Esta aplicação foi desenvolvida para gerenciar partidas de futebol entre times. Utiliza TypeScript, Express.js e Sequelize para proporcionar uma experiência de gerenciamento de partidas de forma eficiente e segura.

## 💻 Tecnologias Utilizadas
* Node.js
* Express.js
* TypeScript
* MySQL
* JWT Authentication
* Sequelize
* Docker

### Estrutura do Projeto
```
├── backend/
│ ├── src/
│ │ ├── controllers/
│ │ ├── database/
│ │ ├── interfaces/
│ │ ├── middlewares/
│ │ ├── models/
│ │ ├── routes/
│ │ ├── services/
│ │ ├── tests/
│ │ ├── utils/
│ │ ├── app.ts
│ │ └── server.ts
│ ├── frontend/
│ └── ...
```
### JWT Authentication
Para acessar rotas protegidas, é necessário adicionar o token JWT no header da requisição:
`Bearer `

* **Controllers**: Gerenciam as requisições HTTP, como LeaderboardController para classificação, MatchesController para partidas e TeamsController para times.

* **Middlewares**: validateLogin (valida o formato de login) e validateToken (validação do token).

* **Models**: Fornece métodos de interação com o database, como LeaderboardModel para classificação, MatchesModel para partidas, UserModel para o login e TeamModel para times.

* **Services**: Contêm a lógica de negócio e interagem com os models para operações no banco de dados.

* **Utils**: Possui as funções, teamStandingFormatter para formatar dados de classificação, sortLeaderboard para ordenar a classificação e mapStatusHTTP para mapear status HTTP para códigos numéricos.

### Como Executar
1️⃣ Instale as dependências:
```
npm install
```
2️⃣ Inicializando com docker:
```
npm run compose:up
```
🎲 Execute as migrations e popule o banco de dados:
```
npm run db:reset
```
### 🧪 Execução dos no diretório tests/
```
npm run test
```