Projeto desenvolvido ao cursar Desenvolvimento Web na Trybe.
Todo desenvolvimento realizado por mim se localiza na pasta app/backend/src. As outras partes desse projeto foram providas pela Trybe
O
TFC
é um site informativo sobre partidas e classificações de futebol! ⚽️
Nesse projeto, é construído um back-end dockerizado utilizando modelagem de dados através do Sequelize. O desenvolvimento respeita regras de negócio providas no projeto e a API é capaz de ser consumida por um front-end já provido nesse projeto.
Para adicionar uma partida é necessário ter um token, portanto a pessoa deverá estar logada para fazer as alterações.
O back-end implementa regras de negócio para popular adequadamente a tabela disponível no front-end que será exibida para a pessoa usuária do sistema.
- Docker;
- TypeScript;
- Node e Express;
- Mocha, Chai e Sinnon
- Sequelize e MySql;
- Json Web Token;
- Utilizar conceitos da Programação Orientada a Objetos e Conceitos de SOLID;
- Arquitetura MVC e API RESTful.
É necessário possuir o Git e Docker Compose ^v1.29
Abrindo o terminal, execute:
git clone [email protected]:jonatasqueirozlima/trybe-futebol-clube.git
cd trybe-futebol-clube
npm install && npm run compose:up
O Frontend está disponível na url: http://localhost:3000/
Para rodar testes de cobertura no Backend, estando na pasta app/backend/ execute o comando:
npm run test:coverage
Visualizar
-
O endpoint é capaz de realizar um login e retornar um token;
-
O corpo da requisição deverá ter o seguinte formato:
{ "email": "[email protected]", "password": "secret_admin" }
-
O campo
email
é obrigatório e deve ser válido no banco de dados. -
O campo
password
é obrigatório e deve ser válido no banco de dados. -
Caso 'email' e 'password' estejam corretos, retorna o
status 200
e um token válido.
-
O endpoint retorna o tipo de acesso do usuário cadastrado. Devendo retornar o
status 200
, com os dados no corpo. -
Este endpoint nessecita de um campo
authorization
no header da requisição com um token válido gerado no endpoints POST/login
.
- O endpoint retorna um array com todos os temes cadastrados. Devendo retornar o
status 200
, com os dados no corpo.
- O endpoint retorna um time com base no id da rota. Devendo retornar o
status 200
ao fazer uma requisição com um time existente (ex:/teams/1
).
- O endpoint retorna um array com todos os jogos cadastrados. Devendo retornar o
status 200
, com os dados no corpo.
- O endpoint retorna um array com todos os jogos cadastrados que a partida ainda esteja em andamento. Devendo retornar o
status 200
, com os dados no corpo.
- O endpoint retorna um array com todos os jogos cadastrados que a partida já tenha acabado. Devendo retornar o
status 200
, com os dados no corpo.
-
O endpoint adiciona uma nova partida ao banco de dados;
-
Este endpoint nessecita de um campo
authorization
no header da requisição com um token válido gerado no endpoints POST/login
. -
O corpo da requisição deverá ter o seguinte formato:
{ "homeTeam": 16, "awayTeam": 8, "homeTeamGoals": 2, "awayTeamGoals": 2 }
-
O campo
homeTeam
deve ser o id de um time válido. Ele é obrigatório. -
O campo
awayTeam
deve ser o id de um time válido. Ele é obrigatório. -
O campo
homeTeam
não pode ser igual ao campoawayTeam
. -
O campo
homeTeamGoals
é obrigatório. -
O campo
awayTeamGoals
é obrigatório. -
Caso esteja tudo certo, retorna o
status 201
e a nova partida no corpo.
-
O endpoint finaliza uma partido em andamento disponibilizada pelo id da rota.
-
Retorna o
status 200
e o seguinte corpo:{ "message": "Finished" }
-
O endpoint atualiza uma partida no banco de dados disponibilizada pelo id da rota.
-
O corpo da requisição deverá ter o seguinte formato:
{ "homeTeamGoals": 3, "awayTeamGoals": 1 }
-
O campo
homeTeamGoals
é obrigatório. -
O campo
awayTeamGoals
é obrigatório. -
Caso esteja tudo certo, retorna o
status 200
e o seguinte corpo:{ "message": "Successfully updated" }
- O endpoint retorna um array com o placar das partidas finalizadas de todos os times. Devendo retornar o
status 200
, com os dados no corpo.
-Obs
: todas as informações do placar são fornecidas através de regras de negócio no backend, o frontend é respnsável apenas por reenderizar essas informações.
- O endpoint retorna um array com o placar das partidas finalizadas de todos os times em casa. Devendo retornar o
status 200
, com os dados no corpo.
-Obs
: todas as informações do placar são fornecidas através de regras de negócio no backend, o frontend é respnsável apenas por reenderizar essas informações.
- O endpoint retorna um array com o placar das partidas finalizadas de todos os times visitantes. Devendo retornar o
status 200
, com os dados no corpo.
-Obs
: todas as informações do placar são fornecidas através de regras de negócio no backend, o frontend é respnsável apenas por reenderizar essas informações.
Login
Primeiro, se autentique. No header clicando no botão 'Login'.
Utilize as credenciais abaixo:
email: [email protected]
password: secret_admin
Partidas
[Criar partida]
No canto superior direito tem a possibilidade de criar a partida.
[Filtrar partidas]
No canto superior esquerdo tem a filtragem das partidas por 'Finalizadas' ou 'Em andamento'.
[Editar partida]
Para cada partida na tabela, possui um icone de lapis que clicando nele é possível editar os dados da respectiva partida, mudando o placar ou atualizar a partida como 'finalizada'.
OBS: não é possível editar partida que já foi finalizada.
Classificação
No header, no canto superior direito clicando no botão 'Classificação'.
Uma visão geral da situação de cada time.
É possível filtrar por classificação dos times
- Times da casa
- Times de fora
- Geral, ambos times
OBS: Os filtros do time de casa e time de fora ainda não foram implementados.