Skip to content

Projeto realizado no curso da Trybe onde foi desenvolvido uma aplicação para gerenciar partidas de futebol.

Notifications You must be signed in to change notification settings

fredleles/Trybe-Futebol-Clube

Repository files navigation

Trybe Futebol Clube

Projeto de backend desenvolvido durante o curso da Trybe para alimentar uma aplicação de gerenciamento da tabela de classificação de um campeonato de futebol. Consiste numa API restful com CRUD no MySql, integrados via Docker compose, e desenvolvida sob as diretivas de SOLID.

Stacks utilizadas até o momento

  • NodeJs
  • Typescript
  • Express
  • Sequelize
  • Mocha - Chai - Sinon
  • Docker
  • SQL (MySql)
  • JWT

Próximos passos

  • Criar a rota para cadastro de usuários
  • Criar a rota para gerenciamento dos times participantes.
  • Atingir 100% de cobertura nos testes.

Orientações

  • Clone o repositório e entre na pasta do projeto

  • Execute o script de desenvolvimento:

  npm run compose:up:dev
  • Entre no bash do container:
  docker exec -it app_backend sh
  • Instale as dependências, caso existam:
  npm install

Scripts

  • Executa o Docker Compose em modo dev (nodemon integrado):
  npm run compose:up:dev
  • Limpa os containers:
  npm run compose:down:dev

Principais rotas

Login

[POST] /login
  • Efetua o login e recebe o token do usuário.

    • Dados devem estar no corpo da requisição, no formato Json:
      {
        "email": "user@user.com",
        "password": "secret_user"
      }

Times

[GET] /teams
  • Listar os times cadastrados

Partidas

[GET] /matches
  • Listar as partidas cadastradas
[POST] /matches
  • Criar uma nova partida

    • Dados devem estar no corpo da requisição, no formato Json:
      {
        "homeTeam": 16, // O valor deve ser o id do time
        "awayTeam": 8, // O valor deve ser o id do time
        "homeTeamGoals": 2,
        "awayTeamGoals": 2,
        "inProgress": true
      }
[PATCH] /matches/:id
  • Atualizar uma partida pelo seu id

  • Dados devem estar no corpo da requisição, no formato Json:

      {
        "homeTeamGoals": 3,
        "awayTeamGoals": 1
      }
[PATCH] /matches/:id/finish
  • Finaliza uma partida a partir de seu id.

Tabela de classificação

[GET] /leaderboard
  • Listar a classificação dos times. Os critérios são baseados nos pontos, número de vitórias, saldo de gols e gols a favor.