Skip to content

Projeto de um site informativo sobre partidas e tabela de classificação de pontos

Notifications You must be signed in to change notification settings

LucianooDutra/project-TFC-BackEnd

Repository files navigation

Projeto Trybe Futebol Clube!

Sobre o projeto:

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;

Técnologias utilizadas:

  • TypeScript;
  • Node;
  • Sequelize;
  • Express;
  • MYSQL;
  • ES6;
  • JWT;
  • Bcrypt;
  • Docker;
  • POO, Programação orientação a objetos;
  • Testes: Mocha, Chai e Sinon;

Instalando as dependências

  git clone git@github.com:LucianooDutra/project-TFC-BackEnd.git
  cd project-TFC-BackEnd/
  npm install

Executando a aplicação

Para rodar a aplicação você vai precisar ter o Docker instalado e usar os seguintes comandos no terminal:
  cd app/
  npm run compose:up

Para rodar o back-end

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.

Endpoints

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
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

Rodando o front-end

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

Executando os testes

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