O TFC é um site informativo sobre partidas e classificações de futebol.
Desenvolvido uma API consumindo um banco de dados, utilizando principios SOLID e arquitetura MSC com TypeScript, POO e dockerização(dockerfile, docker-compose). Utilizando modelagem de dados através do Sequelize, onde tem a finalidade de ser consumida por um front-end, já construído pelo time da trybe nesse projeto.
Para adicionar uma partida é necessário ter um token, portanto a pessoa deverá estar logada para fazer as alterações. Temos um relacionamento entre as tabelas teams e matches para fazer as atualizações das partidas.
-
A API é responsavel por:
-
Criar e manipular dados com MySQL através do Sequelize, armazenando os dados;
-
Autenticação de usuário utilizando o JWT e Bcrypt;
-
Listar clubs cadastrados;
-
Listar partidas em andamento e finalizados;
-
Criar novas partidas;
-
Atualizar placar em partidas em andamento;
-
Finalizar partidas em andamento;
-
Gerar um leaderboard de time de fora e time de casa, e de modo geral, utilizando ordenação avaliativos de critérios para o placar;
-
Realizando a dockerização do back-end e front-end, utilizando docker-compose;
- TypeScript;
- Node;
- Sequelize;
- Express;
- MYSQL;
- ES6;
- JWT;
- Bcrypt;
- Docker;
- POO, Programação orientação a objetos;
- Testes: Mocha, Chai e Sinon;
git clone git@github.com:LucianooDutra/project-TFC-BackEnd.git
cd project-TFC-BackEnd/
npm install
cd app/
npm run compose:up
Observações:
Para realizar as requisições em back-end, você pode usar a extensão Thunder Client do VSCode ou os clientes HTTP Postman ou Insomnia.
Login
Para realizar o login utilize o método POST com a URL http://localhost:3001/login :
-
O body da requisição deve conter o seguinte formato:
{ "email": "string", "password": "string" }
-
Caso bem sucedida, a requisição deverá gerar um TOKEN.
-
Para saber o tipo de usuário que realizou o login, na aba Headers do seu cliente Http, acrescente a chave Authorization com o token gerado ao fazer o login. Em seguida utilize o método GET com a URL http://localhost:3001/login/validate.
Times
-
Para pesquisar os times cadastrados, utilize o método GET com a URL http://localhost:3001/teams;
-
Para um time pelo seu id, utilize o método GET com a URL http://localhost:3001/teams/1;
Jogos
-
Para pesquisar todos os jogos já realizados e em andamento, utilize o método GET com a URL http://localhost:3001/matches;
-
Para pesquisar apenas os jogos já finalizados, utilize o método GET com a URL http://localhost:3001/matches?inProgress=false;
-
Para pesquisar apenas os jogos em andamento, utilize o método GET com a URL http://localhost:3001/matches?inProgress=true;
-
Para adicionar um novo jogo, utilize o método POST com a URL http://localhost:3001/matches e na aba Body o json abaixo:
{ "homeTeam": 1, "awayTeam": 6, "homeTeamGoals": 2, "awayTeamGoals": 2 }
-
Obs.: É necessário que haja um TOKEN válido do tipo admin na chave Authorization da aba Headers e que os valores das chaves homeTeam e awayTeam sejam de times cadastrados no banco de dados e não sejam iguais. Caso contrário, a requisição retornará um erro indicativo.
-
Para alterar o status da partida de em andamento para finalizado, utilize o método PATCH com a URL http://localhost:3001/matches/45/finish;
-
Para alterar o placar de uma partida em andamento, utilize o método PATCH com a URL http://localhost:3001/matches/47 e na aba Body o json abaixo:
{ "homeTeamGoals": 3, "awayTeamGoals": 1 }
Tabela de Classificação
-
Para ver a classificação geral dos times, utilize o método GET com a URL http://localhost:3001/leaderboard;
-
Para ver a classificação dos times filtrado pelos jogos em que eram mandantes, utilize o método GET com a URL http://localhost:3001/leaderboard/home;
-
Para ver a classificação dos times filtrado pelos jogos em que eram visitantes, utilize o método GET com a URL http://localhost:3001/leaderboard/away;
Front-End
-
Para rodar o front-end que consome a API desenvolvida basta executar o comando abaixo a partir da raiz do projeto:
cd app/frontend/ && npm start
-
Para realizar o login na aplicação, com o perfil de administrador e ter os mesmos acessos de usuário, além de poder acrescentar um novo jogo e editar o placar de jogos em andamento:
login: admin@admin.com senha: secret_admin
Testes
Foi utilizado o Mocha, Chai e Sinon para a realização dos testes, unitários e integração;
- Para rodar todos os testes:
Para executar os testes de cobertura do back-end, entre na pasta backend rodando o seguinte comando no terminal a partir da raiz do projeto:
cd app/backend/
Renomeie o arquivo .env.example para .env e rode o comando abaixo:
npm run test:coverage
ou
npm run test