Um projeto para aplicar meus conhecimentos na área de backend e projetar uma api, praticar programação orientada a objeto e princípios SOLID. A aplicação é Full-Stack e é para calcular a tabela de um campeonato de Futebol por completo. E um feedback pessoal, foi o projeto que mais me empolgou pela quantidade de requisitos, pratiquei tudo que aprendi no módulo de backend da Trybe e foi recompensador ver o meu nível nessa etapa, e como é a área que pretendo seguir, me senti preparado pra aprender e me aprofundar cada vez mais.
Obs.: Eu Trabalhei na parte backend da aplicação
- TypeScript
- TS-Node
- ExpressJs
- Sequelize
- MySql2
- JWT
- BCrypt
- Mocha juntamente com Chai e Sinon para fazer meus testes.
- Migrations e Models para fazer comunicação com o banco de dados da aplicação;
- Apliquei na prática o TDD(Test Driven Development) e criei testes de integração antes de desenvolver os endpoints;
- Criei diversos middlewares para validar os dados antes de fazer uma requisição;
- Criei endpoints para Times:
- endpoints GET:
- /teams que retorna todos os times;
- /teams/:id que retorna um time em específico.
- endpoints GET:
- Criei endpoints para usuários efetuarem o login:
- endpoints POST:
- /login para fazer login e criar seu token de acesso;
- endpoints GET:
- /login/role que retorna qual o cargo/função da pessoa a partir do token gerado;
- endpoints POST:
- Criei endpoints para partidas entre times:
- endpoints GET:
- /matches que retorna uma lista de partidas que estão acontecendo e acoonteceram;
- /matches?inProgress= para filtrar as partidas em andamento ou não; Uma observação, os endpoints abaixo precisam da validação do token de acesso
- endpoints PATCH:
- /matches/:id/finish para finalizar uma partida específica em andamento;
- /matches/:id para atualizar a quantidade de gols da partida;
- endpoints POST:
- /matches para cadastrar um nova partida entre times;
- endpoints GET:
- Criei endpoints para ver a tabela do campeonato, os leaderboards:
- endpoints GET:
- /leaderboard/home retorna a situação do campeonato com jogos em casa, ele vem em ordem do melhor time para o menos.
- /leaderboard/away retorna a situação do campeonato com jogos fora de cada, ele vem em ordem do melhor time para o menos.
- /leaderboard retorna a situação geral do campeonato.
- obs.: Foi a parte do projeto mais complicada de fazer, porém a mais recompesadora, e todas as tabelas vinham com a seguintes informações: name, totalPoints, totalGames, totalVictories, totalDraws, totalLosses, goalsFavor e goalsOwn.
- endpoints GET:
- Ganhar mais profiência com Programação Orientada a Objeto;
- Ganhar mais proficiência com TypeScript, que tá sendo a minha linguagem mais querida;
- Utilizar Node para criar uma API juntamente com o ExpressJs;
- Ganhar mais proficiência com o ORM SequelizeJS;
- Utilizar o Sequelize para popular, resgatar e manipular dados de um banco de dados SQL;
- Criar middleware com JWT para criar tokens e verificar os dados dos tokens;
- Juntamente com JWT, usei o Bcrypt para fazer funções de encriptamentos e foi importante pra aprender um pouco sobre segurança de dados.
- Criar fluxos pessoais para soluções de problemas;