Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tonyycruz/trybe-futebol-clube
Neste projeto, foi desenvolvido um site informativo sobre partidas e classificações de futebol
https://github.com/tonyycruz/trybe-futebol-clube
bcrypt chai commit-conventions express jwt mocha mysql mysql2 nodejs nodemon poo sequelize typescript
Last synced: 28 days ago
JSON representation
Neste projeto, foi desenvolvido um site informativo sobre partidas e classificações de futebol
- Host: GitHub
- URL: https://github.com/tonyycruz/trybe-futebol-clube
- Owner: TonyyCruz
- Created: 2022-10-06T17:56:29.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2022-11-18T00:23:52.000Z (about 2 years ago)
- Last Synced: 2023-03-03T21:03:09.178Z (almost 2 years ago)
- Topics: bcrypt, chai, commit-conventions, express, jwt, mocha, mysql, mysql2, nodejs, nodemon, poo, sequelize, typescript
- Language: TypeScript
- Homepage:
- Size: 813 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Trybe Futebol Clube
Neste projeto, foi desenvolvido um site informativo sobre partidas e classificações de futebol.
---
📃 Sobre o Projeto
- A aplicação foi feita de forma "dockerizada", tendo um container para o front-end, um para o back-end e um para o banco de dados (MySql).
- O back-end utiliza modelagem de dados através do Sequelize com typeScript e POO além de atender aos princípios do SOLID, padrões REST e arquitetura MSC.
- O front-end já havia sido implementado, sendo assim, tive que respeitar algumas regras de negócio para que minha API pudesse ser consumida corretamente.
- Para fazer modificações nas tabelas é necessário fazer login, o que lhe atribuirá um token de validação.
As senhas são armazenadas no banco de dados de maneira criptografada através do bcrypt.js e os tokens são gerados pelo jwt (json web token).
- Também foram feitos testes de integração para mais de 80% da aplicação.
Rotas utilizáveis
Ver rotas
- POST `/login` para fazer login e receber um token. Utilize um body nesse formato:```jsx
{
"email": "[email protected]",
"password": "secret_admin"
}
```
---
- POST `/matches` para criar uma nova partida. Utilize um body nesse formato:```jsx
{
"homeTeam": 16, // O valor deve ser o id do time
"homeTeamGoals": 2,
"awayTeam": 8, // O valor deve ser o id do time
"awayTeamGoals": 2,
"inProgress": true,
}
```---
- GET `/login/validate` deverá ter um `header` com parâmetro `authorization`, onde ficará armazenado o `token` gerado no login, retorna a role do usuário .
---
- GET `/teams` retorna todos os times.
---
- GET `/teams/:id` retornar dados de um time específico.
---
- GET `/matches` retorna dados de todas as partidas.---
- GET `/matches/search?inProgress=true` retorna dados das partidas em andamento.
---
- GET `/matches/search?inProgress=false` retorna dados das partidas finalizadas.---
- GET `/leaderboard` retorna a classificação geral dos times.---
- GET `/leaderboard/home` retorna a classificações dos times da casa.---
- GET `/leaderboard/away` retorna a classificações dos times fora de casa.---
- PATCH `/matches/:id/finish` para atualizar a partida com o id correspondente para finalizada.
---
- PATCH `/matches/:id` para atualizar o saldo de gols da partida com o id correspondente. Utilize um body nesse formato:
```jsx
{
"homeTeamGoals": 2,
"awayTeamGoals": 1
}
```
---
🛠 Tecnologias e Bibliotecas utilizadas no desenvolvimento do projeto
- **[Node.js](https://nodejs.org/en/)**
- **[MySQL](https://www.mysql.com/products/workbench/)**
- **[Mysql2](https://www.npmjs.com/package/mysql2)**
- **[Express](http://expressjs.com/pt-br/)**
- **[Nodemon](https://www.npmjs.com/package/nodemon)**
- **[Sequelize](https://sequelize.org/)**
- **[JWT](https://jwt.io/introduction)**- **[TypeScript](https://www.typescriptlang.org/pt/)**
- **[Mocha](https://mochajs.org/)**
- **[Chai](https://www.chaijs.com/)**
- **[bcrypt](https://www.npmjs.com/package/bcrypt)**
---
🚀 Como executar o projeto
_Pré-requisitos_
Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas:
- [Git](https://git-scm.com)
- [Node.js](https://nodejs.org/en/)
- [Docker](https://docs.docker.com/get-docker/).É recomendado utilizar algum cliente HTTP, como [Postman](https://www.postman.com/) ou o [Insomnia](https://insomnia.rest/download).
Também é bom ter um editor para trabalhar com o código como [VSCode](https://code.visualstudio.com/)
---
⚠️ Configurações mínimas para execução do projeto
Na sua máquina você deve ter:
- Sistema Operacional Distribuição Unix
- Node versão 16
- Docker
- Docker-compose versão >=1.29.2➡️ O `node` deve ter versão igual ou superior à `16.14.0 LTS`:
- Para instalar o nvm, [acesse esse link](https://github.com/nvm-sh/nvm#installing-and-updating);
- Rode os comandos abaixo para instalar a versão correta de `node` e usá-la:
- `nvm install 16.14 --lts`
- `nvm use 16.14`
- `nvm alias default 16.14`➡️ O`docker-compose` deve ter versão igual ou superior à`ˆ1.29.2`:
* Use esse [link de referência para realizar a instalação corretamente no ubuntu](https://app.betrybe.com/learn/course/5e938f69-6e32-43b3-9685-c936530fd326/module/94d0e996-1827-4fbc-bc24-c99fb592925b/section/5987fa2d-0d04-45b2-9d91-1c2ffce09862/day/2f1a5c4d-74b1-488a-8d9b-408682c93724/lesson/b883b81d-21f6-4b60-aa62-8508f6017ea0
);
* Acesse o [link da documentação oficial com passos para desinstalar] (https://docs.docker.com/compose/install/#uninstallation) caso necessário.---
_Antes de tudo clone o repositório_
```jsx
git clone [email protected]:TonyyCruz/trybe-futebol-clube.git
```---
_Execute na raiz do projeto_
```jsx
npm run install:apps
``````jsx
npm run compose:up:dev
```
- Esse serviço irá inicializar três containers chamados app_frontend_1, app_backend e outro chamado db.
- O back-end ficará acessível em `http://localhost:3001`
- O front-end ficará acessível em `http://localhost:3000`
- ⚠️Atenção: Não esqueça de renomear o arquivo `.env.example` em /app/backend para `.env`
---💡 Scripts prontos
Scripts
- Iniciar a aplicação com nodemon:
```sh
npm run compose:up:dev
```
- Finalizar a aplicação com nodemon:
```sh
npm run compose:up:dev
```
- Iniciar a aplicação padrão:
```sh
npm run compose:up
```- Finalizar a aplicação padrão:
```sh
npm run compose:down
```
- Resetar o banco de dados, precisa estar em app/backend:
```sh
npm run db:reset
```
- Testes de integração, precisa estar em app/backend:
```sh
npm test
```
---
🎲 Diagrama