https://github.com/gui-lfm/football-api-with-typescript
Projeto que simula a API de um site de futebol
https://github.com/gui-lfm/football-api-with-typescript
backend crud mvc mysql sequelize typescript
Last synced: about 2 months ago
JSON representation
Projeto que simula a API de um site de futebol
- Host: GitHub
- URL: https://github.com/gui-lfm/football-api-with-typescript
- Owner: Gui-lfm
- Created: 2023-07-23T23:53:27.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-07-25T21:00:20.000Z (almost 3 years ago)
- Last Synced: 2025-02-02T03:26:33.283Z (over 1 year ago)
- Topics: backend, crud, mvc, mysql, sequelize, typescript
- Language: TypeScript
- Homepage:
- Size: 654 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## 🖥 Sobre o projeto:
Projeto realizado no final do módulo de backend do curso de desenvolvimento web da Trybe, realizado em junho de 2023. O projeto realizado é a criação de uma API que é consumida por um front-end já disponibilizado pela Trybe. A API fornece dados sobre partidas finalizadas e em andamento, bem como informações dos times e permite a autenticação de usuários. É possível adicionar uma partida, sendo necessário o uso de um token, portanto a pessoa deverá estar logada para fazer as alterações. o projeto está estruturado em containers, sendo os serviços de database e backend onde eu trabalhei, o frontend, como citado anteriormente, foi disponibilizado pela Trybe.
## 🛠 Tecnologias e libs utilizadas:
As seguintes ferramentas foram utilizadas na construção do projeto:
- [Typescript](https://www.typescriptlang.org/)
- [Sequelize](https://sequelize.org/)
- [Mysql](https://www.mysql.com/)
- [Docker](https://www.docker.com/)
- [node.js](https://nodejs.org/en)
- [express](https://expressjs.com/pt-br/)
- [bcrypt](https://www.npmjs.com/package/bcrypt)
- [JWT](https://jwt.io/)
## ↗️ Endpoints:
### Teams
```
/teams
```
- Utiliza o método do tipo GET.
- Retorna um json com todos os times armazenados no banco de dados. cada time possui um id e um teamName.
```
/teams/:id
```
- Utiliza o método do tipo GET.
- Retorna os dados do time especificado pelo id presente no parâmetro da URL.
### Users e Login (credenciais de acesso)
```
/login
```
- Utiliza o método do tipo POST.
- o enpoint não permite o acesso caso o email ou a senha não sejam informados, retornando um erro de código 400.
- Caso o login seja realizado com sucesso, é retornado um token que será requisitado ao tentar adicionar ou alterar partidas.
### Matches
```
/matches
```
- Utilizado o método do tipo GET:
- Retorna um json com todas as partidas presentes no banco de dados
- É possível filtrar as partidas, mostrando somente as em andamento ou finalizadas utilizado query strings: ex: ```matches?inProgress=true```
- Utilizando o método do tipo POST:
- Deve inserir uma partida no banco de dados
- É necessário um token válido para que a inserção ocorra, caso contrário, a requisição retornará um erro de código 401.
- Não é possível inserir uma partida com dois times iguais ou com um time que não exista na tabela de times (/teams)
- Em caso de sucesso, retorna a partida inserida no banco de dados.
```
/matches/:id
```
- Utiliza o método do tipo PATCH.
- Atualiza uma partida em andamento, sendo necessário um token válido para que a operação ocorra.
- Caso o token não esteja presente ou não seja válido, retorna um erro de código 401
```
/matches/:id/finish
```
- Utiliza o método do tipo PATCH.
- Finaliza uma partida em andamento, sendo necessário um token válido para que a operação ocorra.
- Caso o token não esteja presente ou não seja válido, retorna um erro de código 401.
### Leaderboards
```
/leaderboard/home
```
- Utilizado o método do tipo GET.
- Retorna um json com as informações do desempenho dos times da casa
- Partidas em andamento (não foram finalizadas) não são consideradas.
```
/leaderboard/away
```
- Utilizado o método do tipo GET.
- Retorna um json com as informações do desempenho dos times visitantes.
- Partidas em andamento (não foram finalizadas) não são consideradas.
```
/leaderboard
```
- Utilizado o método do tipo GET.
- Retorna um json com as informações do desempenho geral dos times.
- Partidas em andamento (não foram finalizadas) não são consideradas.
## 👾Autor
Guilherme Lucena
### ✉contato: