Giter Site home page Giter Site logo

rafael-souza-97 / tabela-do-campeonato Goto Github PK

View Code? Open in Web Editor NEW
3.0 1.0 1.0 989 KB

Fullstack Project

JavaScript 50.59% Shell 1.81% Dockerfile 0.29% TypeScript 32.52% HTML 1.55% CSS 13.24%
bcrypt fullstack javascript jwt mysql node sequelize typescript workbench api-restful

tabela-do-campeonato's Introduction

Tabela do Campeonato - TFC

Aplicação realizada enquanto aluno da Trybe para reforçar os conhecimentos sobre Typescript, API RESTful, POO, SOLID, entre outras.

O projeto "Tabela do Campeonato" é um site informativo sobre partidas e classificações de futebol. Durante o desenvolvimento, minha responsabilidade foi criar uma API e integrar as aplicações através de Docker Compose, para que elas funcionem com um banco de dados. Utilizamos modelagem de dados com Sequelize para construir um back-end dockerizado.

Para adicionar uma partida, é necessário ter um token de autenticação válido. Isso significa que é preciso estar logado para realizar quaisquer alterações na tabela de partidas. Utilizamos modelagem de dados com Sequelize para criar relacionamentos entre as tabelas "teams" e "matches", permitindo assim a atualização das partidas de forma precisa e eficiente.

Com esse projeto, é possível verificar a tabela geral do campeonato, filtrar pela classificação de jogos em casa e fora de casa, além de adicionar e atualizar partidas (desde que esteja logado). Além disso, você pode experimentar o site com o usuário [email protected] e a senha secret_user ou como administrador com o email [email protected] e a senha secret_admin para ter algumas permissões adicionais.

Para garantir a qualidade e confiabilidade da API construída, foram realizados testes automatizados utilizando as bibliotecas Mocha, Sinon, Chai e Jest. Essas ferramentas permitem a criação de testes unitários, de integração e de aceitação, possibilitando a validação do comportamento da aplicação em diferentes níveis.


Rotas

Login

  • GET /validate: Utiliza o método tokenControllerValidation do controlador de login para validar um token de autenticação.
  • POST /: Utiliza o método loginValidation do controlador de login para validar as credenciais de login enviadas e, em seguida, o método loginValidation para efetuar o login.

Partidas

  • GET /: Utiliza o método getMatches do controlador de partidas para recuperar todas as partidas.
  • POST /: Utiliza o método createMatch do controlador de partidas para criar uma nova partida.
  • PATCH /:id/finish: Utiliza o método matchFinished do controlador de partidas para marcar uma partida como finalizada.
  • PATCH /:id: Utiliza o método updateMatch do controlador de partidas para atualizar uma partida existente.

Times

  • GET /: Utiliza o método getAllTeams do controlador de times para recuperar todos os times.
  • GET /:id: Utiliza o método getTeamById do controlador de times para recuperar um time específico pelo ID.

Tabelas

  • GET /: Utiliza o método leaderboard do controlador de tabelas para recuperar a tabela geral.
  • GET /home: Utiliza o método homeLeaderboard do controlador de tabelas para recuperar a tabela de jogos em casa.
  • GET /away: Utiliza o método awayLeaderboard do controlador de tabelas para recuperar a tabela de jogos fora de casa.


Como instalar a Tabela de Campeonato

Instalação


⚠️ Configurações mínimas para execução do projeto

Na sua máquina você deve ter:

  • Sistema Operacional Distribuição Unix (Preferencialmente)
  • 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

➡️ Odocker-compose deve ter versão igual ou superior àˆ1.29.2:

Rodando a aplicação via Docker

  • ⚠️ Antes de começar, seu docker-compose precisa estar na versão 1.29 ou superior. Veja aqui ou na documentação como instalá-lo. No primeiro artigo, você pode substituir onde está com 1.26.0 por 1.29.2.
  • ⚠️ Caso opte por utilizar o Docker, TODOS os comandos disponíveis no package.json (npm start, npm test, npm run dev, ...) devem ser executados DENTRO do container, ou seja, no terminal que aparece após a execução do comando docker exec citado acima
  • ⚠️ Se você se deparar com o erro abaixo, quer dizer que sua aplicação já esta utilizando a porta 3000, seja com outro processo do Node.js (que você pode parar com o comando killall node) ou algum container! Neste caso você pode parar o container com o comando docker stop <nome-do-container>

git clone [email protected]:Rafael-Souza-97/tabela-do-campeonato.git

  • Entre na pasta do repositório que você acabou de clonar:
cd tabela-do-campeonato
  • Instale as depëndencias, caso necessário, com npm install (fora do container):
  • Esse serviço irá instalar as dependências do Front End e do Back End`.
npm install

  • Rode o serviço node com o comando npm run compose:up:dev -- --build:
  • Esse serviço irá inicializar três containers chamados app_backend, app_frontend e mysql:8.0.21.
  • A partir daqui você pode rodar o container via CLI ou abri-lo no VS Code.
npm run compose:up:dev -- --build

  • Use o comando docker exec -it app_backend sh para acessar o container app_backend:
  • Ele te dará acesso ao terminal interativo do container do backend criado pelo compose, que está rodando em segundo plano.
docker exec -it app_backend sh

A aplicação é executada com nodemon, inicializado junto ao container;


  • Para rodar os testes unitários e testes de integração localmente, acesse o container app_backend com o comando docker exec -it app_backend sh, e em seguida, rode o serviço de cobertura de testes com o comando npm run test:coverage:
docker exec -it app_backend sh
npm run test:coverage


Autor

Referências

  • Trybe - (Base do Front End, consumo de API e estilizaçào)

Tecnologias / Ferramentas utilizadas

Testes

Infos Adicionais

  • Percentual de cumprimento de requisitos (Trybe)- 100%

Preview

TFC.mp4

tabela-do-campeonato's People

Contributors

rafael-souza-97 avatar trybe-tech-ops avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Forkers

abbijamal

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.