Code Monkey home page Code Monkey logo

project-tfc-backend's Introduction

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 [email protected]: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: [email protected]
      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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.