Skip to content

Projeto fullstack feito para consulta e construção de uma tabela de um campeonato de futebol. Construção feita através de API Restful com aplicação de POO e SOLID em docker, utilizando Sequelize para consulta no banco de dados MySQL, Node.Js para a backend. Frontend foi disponibilizado pela Trybe

Notifications You must be signed in to change notification settings

ludson96/project-trybe-football-club

Repository files navigation

Repositório do projeto Trybe Futebol Clube ⚽

Módulo: BACK-END

Repositório possuí projeto desenvolvido no período que estive na Trybe, abordando os conceitos de API Rest com CRUD completo em TypeScript, com utilização da ORM Sequelize, além de construir o projeto de acordo com o paradigma de orientação a objetos (POO) e SOLID. Docker para rodar o frontend, backend e database, separados e utilizando a arquitetura MSC.
Para testar a abordagem fora usados testes via Mocha, Chai, Sinon, com abordagem variando entre TDD e BDD;

Informações de aprendizados

  • Este é um projeto desenvolvido para me ajudar a aprender TypeScript;
  • Meu terceiro projeto usando TypeScript;
  • Segundo projeto usando princípios da arquitetura SOLID;
  • Segundo projeto usando princípios POO;
  • Utilizei o Cliente Rest Thunder Client, como extensão, para visualizar o retorno do meu acesso.

Linguagem usadas

JavaScript NodeJS Docker Nodemon ESLint TypeScript ts-node Express JWT MySQL Sequelize .ENV Jest Mocha Chai

O que foi desenvolvido

Criação de uma API Rest utilizando POO e princípios SOLID com construção de CRUD utilizando Sequelize para queries e docker para rodas os ambientes de forma separada. O projeto é fullstack e representa uma simulação de uma tabela de um campeonato de futebol, com uma validação via login para saber se o usuário é admin ou não, o que libera novas features onde podemos alterar dados da partida, inserir novas partidas ou finalizar partidas em andamento. Na parte de frontend podemos filtrar os resultados, modificar e finalizar partidas, desde que seja admin, além de poder verificar a classificação geral, classificação de time mandante e de time visitante de forma separada.

Instruções para instalar e rodar

  1. Clone o repo:

    git clone git@github.com:Ludson96/project-trybe-futebol-clube.git
  2. Entre na pasta do repositório que você acabou de clonar:

    cd project-trybe-futebol-clube
  3. Instale as dependências e inicialize o projeto:

    npm install
  4. Execute o docker compose:

    npm run compose:up

Uso

O npm run compose:up script criará o banco de dados e iniciará o frontend e backend serviços.

Você pode verificar o site em localhost:3000/login

  • e teste o aplicativo usando o login(usuário comum):

É possível:

  • criar novas partidas;
  • editar partidas em andamento;
  • finalizar as partidas.

Detalhes

Estrutura do projeto

O projeto é composto de 4 entidades importantes para sua estrutura:

  1. Banco de dados:

    • Será um container docker MySQL já configurado no docker-compose através de um serviço definido como db;
    • Tem o papel de fornecer dados para o serviço de backend.
    • Durante a execução dos testes sempre vai ser acessado pelo sequelize e via porta 3002 do localhost;
    • Você também pode conectar a um Cliente MySQL (Workbench, Beekeeper, DBeaver e etc), colocando as credenciais configuradas no docker-compose no serviço db
  2. Back-end:

    • Será o ambiente que você realizará a maior parte das implementações exigidas.
    • Deve rodar na porta 3001, pois o front-end faz requisições para ele nessa porta por padrão;
    • Sua aplicação deve ser inicializada a partir do arquivo app/backend/src/server.ts;
    • Garanta que o express é executado e a aplicação ouve a porta que vem das variáveis de ambiente;
    • Todas as dependências extras (tal como joi, boom, express-async-errors...) devem ser listadas em app/backend/packages.npm.
  3. Front-end:

    • O front já está concluído, não é necessário realizar modificações no mesmo. A única exceção será seu Dockerfile que precisará ser configurado.
    • Todos os testes a partir do requisito de login usam o puppeteer para simular uma pessoa acessando o site http://localhost:3000/;
    • O front se comunica com serviço de back-end pela url http://localhost:3001 através dos endpoints que você deve construir nos requisitos.
    • Recomendamos que sempre que implementar um requisito no back-end acesse a página no front-end que consome a implementação para validar se está funcionando como esperado.
  4. Docker:

    • O docker-compose tem a responsabilidade de unir todos os serviços conteinerizados (backend, frontend e db) e subir o projeto completo com o comando npm run compose:up ou npm run compose:up:dev;
    • Você deve configurar as Dockerfiles corretamente nas raízes do front-end e back-end, para conseguir inicializar a aplicação;
Rotas
  1. Rotas de usuários:

    • POST /login
      • responsável por registrar o login e retornar um token de usuário.
    • GET /login/validate
      • responsável validar o login e retornar a 'role' do usuário.
  2. Rotas de times:

    • GET /teams
      • responsável por retornar times cadastrados no DB.
    • GET /teams/:id
      • responsável por retornar times cadastrados no DB através do ID.
  3. Rotas de Partidas:

    • GET /matches
      • responsável por retornar todas as partidas.
    • POST /matches/
      • responsável por cadastrar uma partida no DB. -PATCH /matches/:id
      • responsável por atualizar goas de uma partida específica
    • PATCH /matches/:id/finish
      • responsável por atualizar o status de uma partida em andamento para partida finalizada ('inProgress: false') no DB.
  4. Rotas de Líderes:

    • GET /leaderboard
      • responsável por retornar os líderes do campeonato (dentro ou fora de casa).
    • GET /leaderboard/home
      • responsável por retornar os líderes do campeonato jogando em casa.
    • GET /leaderboard/away
      • responsável por retornar os líderes do campeonato jogando fora de casa

frontend, seeders e docker-compose.yml foram fornecidos pela Trybe, o dockerfile foi construído por mim.

About

Projeto fullstack feito para consulta e construção de uma tabela de um campeonato de futebol. Construção feita através de API Restful com aplicação de POO e SOLID em docker, utilizando Sequelize para consulta no banco de dados MySQL, Node.Js para a backend. Frontend foi disponibilizado pela Trybe

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published