Esta é uma aplicação informativa sobre partidas e classificações de futebol!
Neste projeto, desenvolvemos uma API utilizando a metodologia TDD (Test-Driven Development) e integramos as aplicações por meio do docker-compose para que elas funcionem consumindo um banco de dados.
O back-end foi dockerizado e utiliza o Sequelize para modelagem de dados. A API pode ser consumida por um front-end.
Para adicionar uma partida, é necessário possuir um token de autenticação, o que requer que o usuário esteja logado para efetuar alterações. Existe um relacionamento entre as tabelas 'teams' e 'matches' para realizar as atualizações das partidas.
Foram implementadas regras de negócio no back-end para popular adequadamente a tabela disponível no front-end, que será exibida para o usuário do sistema.
Durante o desenvolvimento deste projeto, foram utilizadas as seguintes tecnologias:
- Node.js: Plataforma JavaScript para construção de aplicações do lado do servidor.
- Express: Framework web para Node.js utilizado na construção de APIs.
- Programação Orientada a Objetos (POO): Metodologia de programação que utiliza objetos para organizar o código.
- TypeScript: Superset do JavaScript que adiciona tipagem estática e outros recursos.
- Mocha, Chai, Sinon: Ferramentas de teste para JavaScript e TypeScript.
- Sequelize: ORM (Object-Relational Mapping) para Node.js, utilizado para interagir com bancos de dados relacionais.
- MySQL: Sistema de gerenciamento de banco de dados relacional.
- Docker: Plataforma para desenvolvimento, envio e execução de aplicações em containers.
Utilize os links acima para acessar as documentações oficiais de cada tecnologia e aprender mais sobre como utilizá-las em seus projetos.
O projeto é composto por 4 entidades principais, cada uma detalhada abaixo:
Banco de Dados
- Um container docker MySQL é configurado no docker-compose por meio do serviço denominado 'db'.
- Este container tem o papel de fornecer dados para o serviço de backend.
- Durante a execução dos testes, o banco de dados é acessado pelo Sequelize através da porta 3002 do localhost.
- É possível conectar ao banco de dados utilizando um Cliente MySQL (por exemplo: Workbench, Beekeeper, DBeaver) e inserindo as credenciais configuradas no docker-compose para o serviço 'db'.
Back-end
- O back-end é executado na porta 3001, uma vez que o front-end faz requisições a esta porta por padrão.
- A aplicação é inicializada a partir do arquivo 'app/backend/src/server.ts'.
- O Express é utilizado e a aplicação escuta na porta configurada nas variáveis de ambiente.
- Todas as dependências extras, como 'joi', 'cors', '@types/cors', estão listadas em 'app/backend/packages.npm'.
Front-end
- O front-end foi disponibilizado pela escola Trybe para permitir a integração com o back-end.
Docker
- O arquivo docker-compose é responsável por unir os serviços containerizados (backend, frontend e db).
- As Dockerfiles foram configuradas nas raízes do front-end e back-end para inicializar as aplicações.
Certifique-se de que sua máquina atenda aos seguintes requisitos:
- Sistema Operacional: Distribuição Unix
- Node: Versão 16. Guia de Instalação
- Docker: Guia de Instalação
- Docker Compose: Versão >=1.29.2. Guia de Instalação
Siga os passos abaixo para iniciar o projeto em sua máquina:
- Clone o repositório utilizando o comando:
git clone git@github.com:claytongom/trybe-futebol-clube-project.git
- Instale as dependências utilizando o seguinte comando:
npm install
- Execute o projeto utilizando o comando:
npm run compose:up
Foram implementados testes de cobertura no back-end utilizando TypeScript, mocha, chai e sinon. Os testes estão localizados na pasta app/backend/src/tests/
.
Para executar os testes de cobertura no back-end, siga os comandos abaixo:
- Para rodar os testes:
npm run test
- Para rodar os testes de cobertura:
npm run test:coverage
Isso garantirá que o back-end do projeto seja testado e que você tenha informações sobre a cobertura dos testes realizados.
Desenvolvido por Clayton Gomes, © 2023