O aplicativo TFC é um site informativo sobre partidas e classificações de futebol! ⚽️ com a criação de uma API consumida por um front-end já disponibilizado pela Trybe e implementação de testes de integração e cobertura
Clone o repositório:
git@github.com:yvasconcellos/api-futebol-clube.git
🐳 Rodando no Docker vs Localmente
Rode os serviços
node
edb
com o comandodocker-compose up -d
.
- Lembre-se de parar o
mysql
se estiver usando localmente na porta padrão (3306
), ou adapte, caso queira fazer uso da aplicação em containers - Esses serviços irão inicializar um container chamado
trybesmith
e outro chamadotrybesmith_db
. - A partir daqui você pode rodar o container
trybesmith
via CLI ou abri-lo no VS Code.
Use o comando
docker exec -it trybesmith bash
.
- Ele te dará acesso ao terminal interativo do container criado pelo compose, que está rodando em segundo plano.
Instale as dependências [Caso existam] com
npm install
⚠ Atenção ⚠ 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.
⚠ Atenção ⚠ O git dentro do container não vem configurado com suas credenciais. Ou faça os commits fora do container, ou configure as suas credenciais do git dentro do container.
⚠ Atenção ⚠ Não rode o comando npm audit fix! Ele atualiza várias dependências do projeto, e essa atualização gera conflitos com o avaliador.
⚠ Atenção ⚠ Caso você esteja usando macOS e ao executar o docker-compose up -d
se depare com o seguinte erro:
The Compose file './docker-compose.yml' is invalid because:
Unsupported config option for services.db: 'platform'
Unsupported config option for services.node: 'platform'
Foram encontradas 2 possíveis soluções para este problema:
- Você pode adicionar manualmente a option
platform: linux/amd64
no service do banco de dados no arquivo docker-compose.yml do projeto, mas essa é uma solução local e você deverá reproduzir isso para os outros projetos.- Você pode adicionar manualmente nos arquivos .bashrc, .zshenv ou .zshrc do seu computador a linha
export DOCKER_DEFAULT_PLATFORM=linux/amd64
, essa é uma solução global. As soluções foram com base nesta fonte.
Instale as dependências [Caso existam] com
npm install
⚠ Atenção ⚠ Não rode o comando npm audit fix! Ele atualiza várias dependências do projeto, e essa atualização gera conflitos com o avaliador.
LOGIN
POST /login
• Se o login for feito com sucesso retorna um token para o usuário.
• O endpoint deve receber a seguinte estrutura:
{
"username": "string",
"password": "string"
}
GET /login/validate
• O Token recebido no método POST deve ser passado em Authorization no Headers.
• Caso correto, retorna o Role do usúario.
TEAMS
GET /teams
• Retorna todos os times cadastrados na base de dados.
GET /teams/:id
• Retorna todos o time referente ao id passado como Params.
MATCHES
GET /matches
• Retorna todas as partidas cadastradas na base de dados.
GET /matches?inProgress=true
• Retorna as partidas em progresso cadastradas na base de dados.
GET /matches?inProgress=false
• Retorna as partidas finalizadas cadastradas na base de dados.
POST /matches
• Cadastrada partidas na base de dados.
• O endpoint deve receber a seguinte estrutura (Token deve ser passado no Header):
{
"homeTeam": "number",
"awayTeam": "number",
"homeTeamGoals": "number",
"awayTeamGoals": "number"
}
PATCH /matches/:id/finish
• Finaliza partidas em progresso na base de dados.
PATCH /matches/:id
• Atualiza partidas em progresso na base de dados.
• O endpoint deve receber a seguinte estrutura (Token deve ser passado no Header):
{
"id": "number",
"homeTeamGoals": "number",
"awayTeamGoals": "number"
}
LEADERBOARD
GET /leaderboad
• Retorna a classificação geral.
GET /leaderboard/home
• Retorna a classificação baseada no desempenho em casa.
GET /leaderboard/away
• Retorna a classificação baseada no desempenho fora de casa.
- Criação de API REST utilizando a arquitetura de camadas (Model-Service-Controller);
- Utilização de TDD ao longo do projeto para efetuar testes de integração e cobertura;
- Modelagem de dados com MySQL através do Sequelize;
- Utilização de Typescript com Banco de Dados;
- Utilização de JWT;
- Criação e associação de tabelas usando models do sequelize;
- Conhecimento dos pilares da Programação Orientada a Objetos: Herança, Abstração, Encapsulamento e Polimorfismo;
- habilidade de utilizar Composição;
- Implementação em TypeScript de Classes, Instâncias, Atributos, Métodos e Objetos;
- Validar conhecimento e aplicação dos princípios SOLID.