O TFC é um site informativo sobre partidas e classificações de futebol! ⚽
Nesse projeto, foi construido um back-end dockerizado que é consumido por um front-end já desenvolvido. com a modelagem de dados através do Sequelize e respeitando as regras de negócio. Esse projeto tem 4 entidades que são importantes para sua estrutura, são elas:
- Banco de Dados;
- Back-End;
- Front-End;
- Docker;
⚠️ 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;
- 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;
- Acesse o link da documentação oficial com passos para desinstalar caso necessário.
🔰 Iniciando o projeto
- Clone o repositório
[email protected]:georgia-rocha/TFC-Brazilian-Soccer-Rankings.git
- Entre na pasta do repositório que você acabou de clonar:
cd TFC-Brazilian-Soccer-Rankings
- Instale as dependências (Isso ja ira instalar tanto o front quanto o backend).
npm install
- Execute o docker compose.
npm run compose:up
- Obs: São utilizas as portas 3306, 3001 e 3000 , certifique-se que elas estão disponíveis no momento de executar o comando.
- Para acessar.
- Porta Front-End - http://localhost:3000
- Porta Back-End - http://localhost:3001
🛠 Execução de testes localmente
Para executar os testes localmente, basta executar o comando npm run test:coverage
.
Você verá a lista de testes aprovados e a tabela de cobertura deles.
- 1- Desenvolvi em /app/backend/src/database nas pastas correspondentes, uma migration e um model para a tabela de times;
- 2- Desenvolvi o endpoint /teams no back-end de forma que ele retorna todos os times corretamente;
- 3- Desenvolvi o endpoint /teams/:id no back-end de forma que ele retorna dados de um time específico;
- 1- Desenvolvi em /app/backend/src/database nas pastas correspondentes, uma migration e um model para a tabela de pessoas usuárias;
- 2- Desenvolvi o endpoint /login no back-end de maneira que ele permite o acesso com dados válidos no front-end;
- 3- Desenvolvi o endpoint /login no back-end de maneira que ele não permite o acesso com um email não cadastrado ou senha incorreta no front-end;
- 4- Desenvolvi um middleware de validação para o token, verificando se ele é válido, e desenvolvi o endpoint /login/role no back-end de maneira que ele retorna os dados corretamente no front-end;
- 1- Desenvolvi em /app/backend/src/database nas pastas correspondentes, uma migration e um model para a tabela de partidas;
- 2- Desenvolvi o endpoint /matches de forma que os dados aparecem corretamente na tela de partidas no front-end;
- 3- Desenvolvi o endpoint /matches de forma que é possível filtrar somente as partidas em andamento, e também filtrar somente as partidas finalizadas, na tela de partidas do front-end;
- 4- Desenvolvi o endpoint /matches/:id/finish de modo que é possível finalizar uma partida no banco de dados;
- 5- Desenvolvi o endpoint /matches/:id de forma que é possível atualizar partidas em andamento;
- 6- Desenvolvi o endpoint /matches de modo que é possível cadastrar uma nova partida em andamento no banco de dados;
- 7- Desenvolvi o endpoint /matches de forma que não é possível inserir uma partida com times iguais nem com um time que não existe na tabela de times;
- 1- Desenvolvi o endpoint /leaderboard/home de forma que retorna as informações do desempenho dos times da casa com as seguintes propriedades: name, totalPoints, totalGames, totalVictories, totalDraws, totalLosses, goalsFavor e goalsOwn;
- 2- Desenvolvi o endpoint /leaderboard/home de forma que é possível filtrar as classificações dos times da casa na tela de classificação do front-end com os dados iniciais do banco de dados, incluindo as propriedades goalsBalance e efficiency, além das propriedades do requisito anterior;
- 3- Desenvolvi o endpoint /leaderboard/home de forma que é possível filtrar as classificações dos times da casa na tela de classificação do front-end, e atualizar a tabela ao inserir a partida Corinthians 2 X 1 Internacional;
- 4- Desenvolvi o endpoint /leaderboard/away de forma que retorna as informações do desempenho dos times visitantes com as seguintes propriedades: name, totalPoints, totalGames, totalVictories, totalDraws, totalLosses, goalsFavor e goalsOwn;
- 5- Desenvolvi o endpoint /leaderboard/away, de forma que é possível filtrar as classificações dos times quando visitantes na tela de classificação do front-end, com os dados iniciais do banco de dados, incluindo as propriedades goalsBalance e efficiency, além das propriedades do requisito anterior;
- 6- Desenvolvi o endpoint /leaderboard/away de forma que é possível filtrar as classificações dos times quando visitantes na tela de classificação do front-end e atualizar a tabela ao inserir a partida Corinthians 2 X 1 Internacional;