https://github.com/janascher/desafio-typescript
Desafio final em grupo do módulo de TypeScript da Alpha EdTech.
https://github.com/janascher/desafio-typescript
backend crud-application regex typescript
Last synced: over 1 year ago
JSON representation
Desafio final em grupo do módulo de TypeScript da Alpha EdTech.
- Host: GitHub
- URL: https://github.com/janascher/desafio-typescript
- Owner: janascher
- License: mit
- Created: 2022-11-14T20:02:06.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-12-06T17:19:30.000Z (over 3 years ago)
- Last Synced: 2023-10-05T16:48:05.901Z (over 2 years ago)
- Topics: backend, crud-application, regex, typescript
- Language: TypeScript
- Homepage:
- Size: 146 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## 🧐 Sobre o projeto
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.
## 📌 Regras do grupo
### Sobre as atividades:
- 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.
### Sobre Pull Request (PR):
1. É proibido realizar commits e push na branch main;
2. Ir para branch main, realizar fetch e merge com a origin/main;
3. Retornar a sua topic branch e realizar merge com a main. **Observação: resolver os conflitos caso exista**;
4. Fazer push com repositório remoto;
5. Abrir a PR e solicitar via Whatsapp para que os demais possam revisar;
6. Pelo menos um revisor deve aprovar ou solicitar explicitamente quais correções devem ser feitas;
7. 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**;
8. Após concluir uma PR, fica ao critério da pessoa em apagar ou não a topic branch.
## ✨ Requisitos do projeto
**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).
## 🔗 Links de sobrevivência
- [Guia Git e Github - Boas Práticas](https://diegocoliveira.github.io/equipe10-dev-html/index.html);
- [Guia com alguns comandos para trabalhar com Git e GitHub](https://github.com/janascher/guia-git-github);
- [TypeScript: JavaScript With Syntax For Types. (typescriptlang.org)](https://www.typescriptlang.org/).
## 🛠 Tecnologias
As seguintes ferramentas foram usadas na construção do projeto:
- **[Bcrypt](https://github.com/kelektiv/node.bcrypt.js#readme)**
- **[Cookie-parser](https://github.com/expressjs/cookie-parser#readme)**
- **[Dotenv](https://github.com/motdotla/dotenv)**
- **[Express](http://expressjs.com/)**
- **[JWT](https://jwt.io/)**
- **[NPM](https://www.npmjs.com/)**
- **[Node.js](https://nodejs.org/en/)**
- **[Nodemon](https://github.com/remy/nodemon)**
- **[PostgreSQL](https://www.postgresql.org/)**
- **[TypeScript](https://www.typescriptlang.org/)**
- **[UUID](https://github.com/uuidjs/uuid#readme)**
- **[Discord](https://discord.com/)**
- **[Trello](https://trello.com/pt-BR)**
- **[WhatsApp](https://www.whatsapp.com/?lang=pt_br)**
## 🤝 Contribuidores

Daniel Rocha
🚀

Fábio César
🚀

Janaína Scher
🚀

Marlisson Silva
🚀

Rogério Kotsubo
🚀