O projeto Trybe Futebol Clube (TFC) é uma aplicação fullstack de um site informativo sobre partidas e classificações de futebol. Nesse projeto foi desenvolvido o back-end, composto por uma API REST que acessa banco de dados relacional, com rotas para leitura, cadastro e edição de informações sobre partidas de futebol e classificações de times. A API construída é consumida por um front-end desenvolvido e provido pela Trybe.
Esse projeto foi desenvolvido por Juliana Álvares, como parte do processo de aprendizado do Módulo de Back-end, do curso de Desenvolvimento Web da Trybe 🚀
"A Trybe é uma escola do futuro para qualquer pessoa que queira mudar de vida e construir uma carreira de sucesso em tecnologia, onde a pessoa tem a possibilidade de só pagar quando conseguir um bom trabalho."
O programa conta com mais de 1.500 horas de aulas presenciais e online, aborda introdução ao desenvolvimento de software, front-end, back-end, ciência da computação, engenharia de software, metodologias Ágeis e habilidades comportamentais.
-
Construção de banco de dados MySQL, utilizando a ORM (Object Relational Mapper) Sequelize, com base no seguinte diagrama de Entidade-Relacionamento fornecido pela Trybe:
Fonte: TRYBE, 2022
-
API REST com os seguintes endpoints, conectados ao banco de dados, desenvolvida em modelo de camadas MSC (Model, Service e Controller):
Tais rotas possibilitam as seguintes funcionalidades no front-end:
- Visualização da tabela e classificação geral dos times, com pontuações;
- Visualização da tabela e classificação dos times mandantes, com pontuações;
- Visualização da tabela e classificação dos times visitantes, com pontuações;
- Visualização de dados de todas as partidas;
- Visualização de dados das partidas em andamento;
- Visualização de dados das partidas finalizadas;
- Login com identificação da pessoa usuária e habilitação de permissões correspondentes;
- Editar gols de partida em andamento (para usuário administrador);
- Finalizar partida em andamento (para usuário administrador);
- Cadastrar nova partida (para usuário administrador).
Para rodar esta aplicação localmente é necessário garantir o cumprimento dos pré-requisitos, fazer uma cópia do repositório e executar as instruções a seguir. Neste projeto é sugerido o uso do Docker, a partir do docker-compose já configurado no repositório, que subirá os serviços frontend
, backend
e db
, via containers chamados app_frontend
, app_backend
e db
.
Obs.: No docker-compose estão configuradas as seguintes portas por serviço: db
na porta 3002
, backend
na porta 3001
(url base: http://localhost:3001
), frontend
na porta 3000
(url base: http://localhost:3000/
).
- docker-compose em versão 1.29.2 ou superior.
- node em versão 16.14.0 ou superior.
git clone git@github.com:AlvaresJu/trybe_futebol_clube.git
cd trybe_futebol_clube/
npm run compose:up
Após confirmação dos 3 containers rodando, acessar página: http://localhost:3000/
Obs.: Dados (email e senha) para login como administrador, para testes via front-end, estão contidos no arquivo: app/backend/src/database/seeders/20211205212238-users.js
docker exec -it app_backend sh
npm test
npm run test:coverage
npm run compose:down
Como descrito, este projeto foi proposto pela Trybe e desenvolvido por Juliana Álvares durante o curso de Desenvolvimento Web realizado. Por isso, foram disponibilizados pela Trybe alguns arquivos base de configurações e auxiliares ao desenvolvimento do projeto, além de toda a parte do front-end. Segue especificação de autoria dos principais documentos:
Arquivos/diretórios desenvolvidos pela autora do projeto (Juliana Álvares):
README.md | images/** | app/frontend/Dockerfile | quase todos os arquivios em app/backend/**
Arquivos/diretórios desenvolvidos pela Trybe:
Arquivos com configurações iniciais do projeto, como: .editorconfig | apps_install.sh | db.exemple.sql | dockerfile_dennylist.sh | versão inicial de package.json e package-lock.json | app/backend/.sequelizerc | app/backend/nyc.config.js | app/backend/tsc_eval.sh | app/backend/tsconfig.json | app/backend/src/database/config/** | praticamente todos os arquivos em app/frontend/**