An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

README

          



Alpha EdTech


Desafio TypeScript da

Alpha EdTech


## 🧐 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
Daniel Rocha

🚀



Fábio César
Fábio César

🚀



Janaína Scher
Janaína Scher

🚀



Marlisson Silva
Marlisson Silva

🚀



Rogério Kotsubo
Rogério Kotsubo

🚀