{"id":26341415,"url":"https://github.com/janascher/desafio-typescript","last_synced_at":"2025-03-16T04:29:34.290Z","repository":{"id":63204414,"uuid":"566018823","full_name":"janascher/desafio-typescript","owner":"janascher","description":"Desafio final em grupo do módulo de TypeScript da Alpha EdTech.","archived":false,"fork":false,"pushed_at":"2022-12-06T17:19:30.000Z","size":149,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2023-10-05T16:48:05.901Z","etag":null,"topics":["backend","crud-application","regex","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/janascher.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-11-14T20:02:06.000Z","updated_at":"2023-10-05T16:48:05.902Z","dependencies_parsed_at":"2023-01-23T10:55:48.515Z","dependency_job_id":null,"html_url":"https://github.com/janascher/desafio-typescript","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janascher%2Fdesafio-typescript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janascher%2Fdesafio-typescript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janascher%2Fdesafio-typescript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janascher%2Fdesafio-typescript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/janascher","download_url":"https://codeload.github.com/janascher/desafio-typescript/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243826792,"owners_count":20354220,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","crud-application","regex","typescript"],"created_at":"2025-03-16T04:29:33.786Z","updated_at":"2025-03-16T04:29:34.283Z","avatar_url":"https://github.com/janascher.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\t\u003ca  href=\"https://www.alphaedtech.org.br/\"\u003e\n\t    \u003cimg  src=\"https://user-images.githubusercontent.com/79182711/187928980-1c1c834c-d92c-4565-b7b6-9cf5b644873e.png\"  alt=\"Alpha EdTech\"  title=\"Alpha EdTech\"  width=\"250\" /\u003e\n\t\u003c/a\u003e\n\t\u003ch3\u003e\n\t\tDesafio TypeScript da\n\t\t\u003ca  href=\"https://www.alphaedtech.org.br/\"\u003e\n\t\tAlpha EdTech\n\t\t\u003c/a\u003e\n\t\u003c/h3\u003e\n\u003c/div\u003e\n\n## 🧐 Sobre o projeto \n\nDesafio 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.\n\n## 📌 Regras do grupo\n\n### Sobre as atividades:\n- Atualizar a versão atual com a remota;\n- Criar ou voltar para branch;\n- Adicionar e escolher uma atividade no Trello;\n- Ao concluir uma atividade, abrir uma PR (pull request);\n- Após atualizar na branch main, marcar a atividade como concluída no Trello.\n\n### Sobre Pull Request (PR):\n1. É proibido realizar commits e push na branch main;\n2. Ir para branch main, realizar fetch e merge com a  origin/main;\n3. Retornar a sua topic branch e realizar merge com a main. **Observação: resolver os conflitos caso exista**;\n4. Fazer push com repositório remoto;\n5. Abrir a PR e solicitar via Whatsapp para que os demais possam revisar;\n6. Pelo menos um revisor deve aprovar ou solicitar explicitamente quais correções devem ser feitas;\n7. 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.\n**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**;\n8. Após concluir uma PR, fica ao critério da pessoa em apagar ou não a topic branch.\n\n## ✨ Requisitos do projeto\n\n**Leia atentamente as regras de negócio e os endpoints antes de começar a codar**:\n\n- Criar uma  **API** para gerenciamento de funcionários e equipes, deve incluir 3 tipos de usuários e suas respectivas permissões;\n-   Tipos de  **Usuários**:\n    - Administrador;\n    - Líder;\n    - Funcionários.\n- Devem ter  **Validators**, que foram aprendidos em aula ao decorrer das aulas. Todos os dados inseridos devem ser validados pelo backend;\n- Cada **administrador** tem permissão para ver e modificar qualquer dado de qualquer usuário ou equipe;\n- 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).\n- 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;\n- Podem existir usuários sem equipe.\n\n**Entidades:**\n\n-   **Usuario**: id(uuid), username, email, first_name, last_name, password, squad(fk), is_admin;\n-   **Equipe**: id(uuid), name, leader(fk).\n\n**EndPoints:**\n\n-   GET “/users/me” - **Ver** seu próprio usuário (Todos);\n-   GET “/users/” - **Ver** todos os usuários (Admin);\n-   GET “/users/:user_id” - **Ver** determinado usuário (Admin, Líder);\n-   GET “/teams/” - **Ver** todas as equipes (Admin);\n-   GET “/teams/:team” - **Ver** determinada equipe (Admin, Líderes, Funcionário);\n-   POST “/users/” - **Criar** um novo usuário (Todos e não autenticado);\n-   POST “/team/” - **Criar** uma nova equipe (Admin);\n-   PATCH “/users/:user_id” - **Atualizar** usuário (Somente o próprio usuário);\n-   PATCH “/team/:team_id” - **Atualizar** equipe (Admin, Líder da equipe);\n-   POST “/team/:team_id/member/:user_id” - **Adicionar** membro na equipe (Admin, Líder da equipe);\n-   DELETE “/team/:team_id/member/:user_id” - **Retirar** membro da equipe (Admin, Líder da equipe);\n-   DELETE “/users/:user_id” - **Deletar** usuário (Admin);\n-   DELETE “/team/:team_id” - **Deletar** equipe (Admin).\n\n## 🔗 Links de sobrevivência\n\n- [Guia Git e Github - Boas Práticas](https://diegocoliveira.github.io/equipe10-dev-html/index.html);\n- [Guia com alguns comandos para trabalhar com Git e GitHub](https://github.com/janascher/guia-git-github);\n- [TypeScript: JavaScript With Syntax For Types. (typescriptlang.org)](https://www.typescriptlang.org/).\n\n## 🛠 Tecnologias\n\nAs seguintes ferramentas foram usadas na construção do projeto:\n\n- **[Bcrypt](https://github.com/kelektiv/node.bcrypt.js#readme)**\n- **[Cookie-parser](https://github.com/expressjs/cookie-parser#readme)**\n- **[Dotenv](https://github.com/motdotla/dotenv)**\n- **[Express](http://expressjs.com/)**\n- **[JWT](https://jwt.io/)**\n- **[NPM](https://www.npmjs.com/)**\n- **[Node.js](https://nodejs.org/en/)**\n- **[Nodemon](https://github.com/remy/nodemon)**\n- **[PostgreSQL](https://www.postgresql.org/)**\n- **[TypeScript](https://www.typescriptlang.org/)**\n- **[UUID](https://github.com/uuidjs/uuid#readme)**\n- **[Discord](https://discord.com/)**\n- **[Trello](https://trello.com/pt-BR)**\n- **[WhatsApp](https://www.whatsapp.com/?lang=pt_br)**\n\n## 🤝 Contribuidores\n\n\u003ctable\u003e\n\t\u003ctr\u003e\n\t\t\u003ctd align=\"center\"\u003e\n\t\t\t\u003ca href=\"https://github.com/dbbitz\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/81662636?v=4\" width=\"100px;\" alt=\"Daniel Rocha\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDaniel Rocha\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\t\u003cbr /\u003e🚀\u003cbr /\u003e\n\t\t\u003c/td\u003e\n\t\t\u003ctd align=\"center\"\u003e\n\t\t\t\u003ca href=\"https://github.com/Fabio-Cesar\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/103617454?v=4\" width=\"100px;\" alt=\"Fábio César\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFábio César\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\t\u003cbr /\u003e🚀\u003cbr /\u003e\n\t\t\u003c/td\u003e\n\t    \u003ctd align=\"center\"\u003e\n\t\t\t\u003ca href=\"https://github.com/janascher\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/79182711?v=4\" width=\"100px;\" alt=\"Janaína Scher\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJanaína Scher\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\t\u003cbr /\u003e🚀\u003cbr /\u003e\n\t\t\u003c/td\u003e\n\t\t\u003ctd align=\"center\"\u003e\n\t\t\t\u003ca href=\"https://github.com/marlissonls\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/103654093?v=4\" width=\"100px;\" alt=\"Marlisson Silva\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMarlisson Silva\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\t\u003cbr /\u003e🚀\u003cbr /\u003e\n\t\t\u003c/td\u003e\n\t\t\u003ctd align=\"center\"\u003e\n\t\t\t\u003ca href=\"https://github.com/rogeriokotsubo\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/81968045?v=4\" width=\"100px;\" alt=\"Rogério Kotsubo\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRogério Kotsubo\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\t\u003cbr\u003e🚀\u003c/br\u003e\n\t\t\u003c/td\u003e\n\t\u003c/tr\u003e\n\u003c/table\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjanascher%2Fdesafio-typescript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjanascher%2Fdesafio-typescript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjanascher%2Fdesafio-typescript/lists"}