/Trybe-Futebol-Clube

API que permite visualizar, criar e editar times e partidas de futebol. Utiliza Typescript, Sequelize e a arquitetura model-service-controller. Endpoints possuem validação de dados.

Primary LanguageTypeScript

Projeto Trybe-Futebol-Clube

Sobre

Este projeto foi desenvolvido durante o Módulo 3 - Back-End do curso de Desenvolvimento Web da Trybe.

Esta aplicação consiste em um site informativo sobre partidas e classificações de futebol. Foi desenvolvida uma API dockerizada e integrada ao front-end através do docker-compose, cuja modelagem de dados foi feita através do Sequelize, utilizando classes e interfaces em Typescript.

A API utiliza a arquitetura MSC (model-service-controller) e permite criar, atualizar e exibir partidas. Algumas rotas possuem validações de dados, incluindo criação e validação de Token através de login. O banco de dados utilizado foi o MySQL, tendo sido explorado o relacionamento entre as tabelas teams e matches.

Também foram desenvolvidos testes de integração utilizando Mocha e sinon-chai.

Arquivos desenvolvidos por mim:

  • No diretório backend: todos do diretório src + Dockerfie.
  • No diretório front-end: Dockerfile. Os demais foram desenvolvidos pelo time da Trybe.

Descrição dos endpoints:

Método HTTP Endpoint Descrição
GET /teams Lista todos os times cadastrados e suas respectivas ids
GET /teams/:id Lista o time cuja id foi dada como parâmetro
POST /login Realiza o login do usuário validando seu email e senha
GET /login/role Retorna o tipo do usuário logado após validação do token
GET /matches Lista todas partidas cadastradas.Permite filtrar por partidas em andamento ou finalizadas
PATCH /matches/:id/finish Altera o status de uma partida em andamento para finalizada
PATCH /matches/:id Altera o placar de uma partida em andamento
POST /matches Cadastra uma nova partida em andamento
GET /leaderboard/home Lista informações de desempenho de times de casa
GET /leaderboard/away Lista informações de desempenho de times de fora

Tecnologias usadas

Back-End: Docker, docker-compose, SQL, Node.js, Sequelize, JWT, Typescript, Mocha, sinon-chai.

Instalando Dependências

  • É necessário possuir o docker instalado em sua máquina
  1. Clone este repositório em su máquina, e em seguida suba o container:
npm run compose:up
  • Serão inicializados três containers (db, app_backend e app_frontend)
  1. Para executar os scripts do back-end:
docker exec -it app_backend sh
  • As credencias de acesso ao banco de dados estão definidas no arquivo docker-compose.yml.
  1. Agora instale as dependências dentro do container:
npm install