Desafio TypeScript da Alpha EdTech
Desafio final do módulo Typescript, em grupos de 5 pessoas, onde cada integrante deve enviar os arquivos do projeto, exceto node_modules, .env e a pasta de compilação.
- Atualizar a versão atual com a remota;
- Criar ou voltar para branch;
- Adicionar e escolher uma atividade no Trello;
- Ao concluir uma atividade, abrir uma PR (pull request);
- Após atualizar na branch main, marcar a atividade como concluída no Trello.
- É proibido realizar commits e push na branch main;
- Ir para branch main, realizar fetch e merge com a origin/main;
- Retornar a sua topic branch e realizar merge com a main. Observação: resolver os conflitos caso exista;
- Fazer push com repositório remoto;
- Abrir a PR e solicitar via Whatsapp para que os demais possam revisar;
- Pelo menos um revisor deve aprovar ou solicitar explicitamente quais correções devem ser feitas;
- Somente após todas as correções terem sido realizadas e, pelo menos um revisor ter aprovado, que o dono da PR pode realizar o merge na main. Observação: caso na hora de realizar o merge o GitHub acusar algum conflito, a PR deve ir para o estado de draft e retomar para o passo 2;
- Após concluir uma PR, fica ao critério da pessoa em apagar ou não a topic branch.
Leia atentamente as regras de negócio e os endpoints antes de começar a codar:
- Criar uma API para gerenciamento de funcionários e equipes, deve incluir 3 tipos de usuários e suas respectivas permissões;
- Tipos de Usuários:
- Administrador;
- Líder;
- Funcionários.
- Devem ter Validators, que foram aprendidos em aula ao decorrer das aulas. Todos os dados inseridos devem ser validados pelo backend;
- Cada administrador tem permissão para ver e modificar qualquer dado de qualquer usuário ou equipe;
- Cada equipe tem um líder, que deve receber sua respectiva permissão para alterar os dados da equipe, mas não de seus membros, poderá também ver os dados de outras equipes e seus líderes (exceto password).
- Cada funcionário poderá alterar seus próprios dados e ver os dados da própria equipe e os outros membros (exceto password) da própria equipe;
- Podem existir usuários sem equipe.
Entidades:
- Usuario: id(uuid), username, email, first_name, last_name, password, squad(fk), is_admin;
- Equipe: id(uuid), name, leader(fk).
EndPoints:
- GET “/users/me” - Ver seu próprio usuário (Todos);
- GET “/users/” - Ver todos os usuários (Admin);
- GET “/users/:user_id” - Ver determinado usuário (Admin, Líder);
- GET “/teams/” - Ver todas as equipes (Admin);
- GET “/teams/:team” - Ver determinada equipe (Admin, Líderes, Funcionário);
- POST “/users/” - Criar um novo usuário (Todos e não autenticado);
- POST “/team/” - Criar uma nova equipe (Admin);
- PATCH “/users/:user_id” - Atualizar usuário (Somente o próprio usuário);
- PATCH “/team/:team_id” - Atualizar equipe (Admin, Líder da equipe);
- POST “/team/:team_id/member/:user_id” - Adicionar membro na equipe (Admin, Líder da equipe);
- DELETE “/team/:team_id/member/:user_id” - Retirar membro da equipe (Admin, Líder da equipe);
- DELETE “/users/:user_id” - Deletar usuário (Admin);
- DELETE “/team/:team_id” - Deletar equipe (Admin).
- Guia Git e Github - Boas Práticas;
- Guia com alguns comandos para trabalhar com Git e GitHub;
- TypeScript: JavaScript With Syntax For Types. (typescriptlang.org).
As seguintes ferramentas foram usadas na construção do projeto:
- Bcrypt
- Cookie-parser
- Dotenv
- Express
- JWT
- NPM
- Node.js
- Nodemon
- PostgreSQL
- TypeScript
- UUID
- Discord
- Trello
Daniel Rocha 🚀 |
Fábio César 🚀 |
Janaína Scher 🚀 |
Marlisson Silva 🚀 |
Rogério Kotsubo 🚀 |