Tabela do Campeonato - TFC
Aplicação realizada enquanto aluno da Trybe para reforçar os conhecimentos sobre Typescript, API RESTful, POO, SOLID, entre outras.
O projeto "Tabela do Campeonato" é um site informativo sobre partidas e classificações de futebol. Durante o desenvolvimento, minha responsabilidade foi criar uma API e integrar as aplicações através de Docker Compose, para que elas funcionem com um banco de dados. Utilizamos modelagem de dados com Sequelize para construir um back-end dockerizado.
Para adicionar uma partida, é necessário ter um token de autenticação válido. Isso significa que é preciso estar logado para realizar quaisquer alterações na tabela de partidas. Utilizamos modelagem de dados com Sequelize para criar relacionamentos entre as tabelas "teams" e "matches", permitindo assim a atualização das partidas de forma precisa e eficiente.
Com esse projeto, é possível verificar a tabela geral do campeonato, filtrar pela classificação de jogos em casa e fora de casa, além de adicionar e atualizar partidas (desde que esteja logado). Além disso, você pode experimentar o site com o usuário [email protected]
e a senha secret_user
ou como administrador com o email [email protected]
e a senha secret_admin
para ter algumas permissões adicionais.
Para garantir a qualidade e confiabilidade da API construída, foram realizados testes automatizados utilizando as bibliotecas Mocha, Sinon, Chai e Jest. Essas ferramentas permitem a criação de testes unitários, de integração e de aceitação, possibilitando a validação do comportamento da aplicação em diferentes níveis.
Rotas
Login
- GET
/validate
: Utiliza o métodotokenControllerValidation
do controlador de login para validar um token de autenticação. - POST
/
: Utiliza o métodologinValidation
do controlador de login para validar as credenciais de login enviadas e, em seguida, o métodologinValidation
para efetuar o login.
Partidas
- GET
/
: Utiliza o métodogetMatches
do controlador de partidas para recuperar todas as partidas. - POST
/
: Utiliza o métodocreateMatch
do controlador de partidas para criar uma nova partida. - PATCH
/:id/finish
: Utiliza o métodomatchFinished
do controlador de partidas para marcar uma partida como finalizada. - PATCH
/:id
: Utiliza o métodoupdateMatch
do controlador de partidas para atualizar uma partida existente.
Times
- GET
/
: Utiliza o métodogetAllTeams
do controlador de times para recuperar todos os times. - GET
/:id
: Utiliza o métodogetTeamById
do controlador de times para recuperar um time específico pelo ID.
Tabelas
- GET
/
: Utiliza o métodoleaderboard
do controlador de tabelas para recuperar a tabela geral. - GET
/home
: Utiliza o métodohomeLeaderboard
do controlador de tabelas para recuperar a tabela de jogos em casa. - GET
/away
: Utiliza o métodoawayLeaderboard
do controlador de tabelas para recuperar a tabela de jogos fora de casa.
Como instalar a Tabela de Campeonato
Instalação
⚠️ Configurações mínimas para execução do projeto
Na sua máquina você deve ter:
- Sistema Operacional Distribuição Unix (Preferencialmente)
- 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;
- 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
➡️ Odocker-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;
- Acesse o link da documentação oficial com passos para desinstalar caso necessário.
Docker
Rodando a aplicação via
⚠️ Antes de começar, seu docker-compose precisa estar na versão 1.29 ou superior. Veja aqui ou na documentação como instalá-lo. No primeiro artigo, você pode substituir onde está com1.26.0
por1.29.2
.
⚠️ Caso opte por utilizar o Docker, TODOS os comandos disponíveis nopackage.json
(npm start, npm test, npm run dev, ...) devem ser executados DENTRO do container, ou seja, no terminal que aparece após a execução do comandodocker exec
citado acima
⚠️ Se você se deparar com o erro abaixo, quer dizer que sua aplicação já esta utilizando aporta 3000
, seja com outro processo do Node.js (que você pode parar com o comandokillall node
) ou algum container! Neste caso você pode parar o container com o comandodocker stop <nome-do-container>
- Clone o repositório
[email protected]:Rafael-Souza-97/tabela-do-campeonato.git
:
git clone [email protected]:Rafael-Souza-97/tabela-do-campeonato.git
- Entre na pasta do repositório que você acabou de clonar:
cd tabela-do-campeonato
- Instale as depëndencias, caso necessário, com
npm install
(fora do container):
- Esse serviço irá instalar as dependências do Front End e do Back End`.
npm install
- Rode o serviço
node
com o comandonpm run compose:up:dev -- --build
:
- Esse serviço irá inicializar três containers chamados
app_backend
,app_frontend
emysql:8.0.21
.- A partir daqui você pode rodar o container via CLI ou abri-lo no VS Code.
npm run compose:up:dev -- --build
- Use o comando
docker exec -it app_backend sh
para acessar o containerapp_backend
:
- Ele te dará acesso ao terminal interativo do container do backend criado pelo compose, que está rodando em segundo plano.
docker exec -it app_backend sh
A aplicação é executada com nodemon, inicializado junto ao container;
- Para rodar os testes unitários e testes de integração localmente, acesse o container
app_backend
com o comandodocker exec -it app_backend sh
, e em seguida, rode o serviço de cobertura de testes com o comandonpm run test:coverage
:
docker exec -it app_backend sh
npm run test:coverage
Autor
Referências
- Trybe - (Base do Front End, consumo de API e estilizaçào)
Tecnologias / Ferramentas utilizadas
- Typescript
- Javascript
- Node
- Docker
- API RESTful
- Express
- MySQL
- MySQL Workbench
- Sequelize
- JWT
- Bcrypt
- POO
- SOLID
- Thunder Client
- Zoom
- Slack
- ESLint
- VsCode
- Git & GitHub
- Linux - Ubuntu
Testes
Infos Adicionais
-
Trybe)- 100%
Percentual de cumprimento de requisitos (