{"id":26175317,"url":"https://github.com/fernandozuchi/projeto-01","last_synced_at":"2026-03-27T02:15:44.568Z","repository":{"id":255507925,"uuid":"835306307","full_name":"FernandoZuchi/projeto-01","owner":"FernandoZuchi","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-04T13:25:15.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-26T18:47:58.212Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FernandoZuchi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-29T15:06:24.000Z","updated_at":"2024-09-04T14:26:12.000Z","dependencies_parsed_at":"2024-09-05T21:49:29.477Z","dependency_job_id":null,"html_url":"https://github.com/FernandoZuchi/projeto-01","commit_stats":null,"previous_names":["fernandozuchi/projeto-01"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/FernandoZuchi/projeto-01","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FernandoZuchi%2Fprojeto-01","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FernandoZuchi%2Fprojeto-01/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FernandoZuchi%2Fprojeto-01/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FernandoZuchi%2Fprojeto-01/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FernandoZuchi","download_url":"https://codeload.github.com/FernandoZuchi/projeto-01/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FernandoZuchi%2Fprojeto-01/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31009856,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-27T01:56:05.093Z","status":"online","status_checked_at":"2026-03-27T02:00:08.055Z","response_time":164,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2025-03-11T20:56:11.451Z","updated_at":"2026-03-27T02:15:44.536Z","avatar_url":"https://github.com/FernandoZuchi.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Documento de Requisitos do Sistema de Gerenciamento de Projetos\n\nEsta documentação tem como objetivo detalhar os requisitos para o desenvolvimento de um \u003cstrong\u003eSistema de Gerenciamento de Projetos (SGP).\u003c/strong\u003e O sistema será uma aplicação web completa, com backend e frontend integrados, projetada para facilitar a gestão de projetos e usuários/colaboradores. \n\n## Objetivo\n\nO objetivo principal do Sistema de Gerenciamento de Projetos é fornecer uma plataforma intuitiva e robusta para a administração de projetos. Através do SGP, os usuários poderão criar, editar, visualizar e remover projetos, além de gerenciar usuários vinculados a esses projetos, categorizando-os por seus papéis específicos.\n\n\n## Tecnologias obrigatórias\n- **Node JS (API REST)**\n- **React JS**\n- **Typescript**\n- **MySQL**\n- **JWT**\n- **GIT**\n  \n\n## Estrutura do Projeto \n\n```\n- 📂gerenciamento-projetos\n  - 📂backend\n    - Container(Caso utilize)\n  - 📂frontend\n    - Container(Caso utilize)\n```\n\n- 📂**gerenciamento-projetos**: Pasta raiz do projeto.\n- 📂**backend**: Contém o código relacionado ao servidor (API RESTful).\n- 📂**frontend**: Contém o código da interface do usuário.\n\n## Banco de dados \n\nAbaixo está a estrutura da base de dados do projeto:\n\nProjetos:\n```\nid: integer\nnome: varchar\ndescricao: text\ndata_inicio: date\ndata_fim: date\nstatus: varchar (ex: 'Em andamento', 'Concluído', 'Pendente')\n```\n\nUsuários:\n```\nid: integer\nnome: varchar\nemail: varchar\nsenha: varchar\npapel: varchar (ex: 'Gerente', 'Desenvolvedor', 'Designer')\n```\n\nProjetos_Usuários:\n```\nusuario_id: integer (referência ao usuário)\nprojeto_id: integer (referência ao projeto)\n```\n\n# **Backend** \n\nO backend será responsável por fornecer uma API RESTful que permitirá a interação com os dados do sistema. A API terá endpoints para realizar operações CRUD (Create, Read, Update, Delete) em projetos e usuários além da autenticação do login e registro de usuários usando JWT.\n\n# **Estrutura do Backend**\n\n- Diretório backend: Contém o código do servidor.\n- Container (opcional): Para facilitar a execução e o isolamento do ambiente.\n\n## Observação\n\nSolicitamos que façam o uso do Node JS em uma versão 18 ou superior\n\n## Endpoints da API \n\nEsperamos os seguintes endpoints da API para este primeiro projeto: \n\n### **Projetos**\n\n- **Listar projetos (GET):** `/api/projetos`\n\n  - **Resposta de Sucesso (200):** Retorna um array com os projetos.\n\n  ```json\n  [\n    {\n      \"id\": 1,\n      \"nome\": \"Nome do Projeto\",\n      \"descricao\": \"Descrição do Projeto\",\n      \"data_inicio\": \"2024-01-01\",\n      \"data_fim\": \"2024-12-31\",\n      \"status\": \"Em andamento\"\n    },\n  ]\n  ```\n\n  - **Resposta de Erro (404):** Retorna uma mensagem indicando que nenhum projeto foi encontrado.\n \n    \n\n- **Cadastrar Projeto (POST):** `/api/projetos`\n\n  - **Corpo da Requisição:**\n\n  ```json\n  {\n    \"nome\": \"Nome do Projeto\",\n    \"descricao\": \"Descrição do Projeto\",\n    \"data_inicio\": \"2024-12-31\",\n    \"status\": \"Em andamento\"\n  }\n  ```\n\n  - **Resposta de Sucesso (200):** Retorna o novo projeto criado.\n  - **Resposta de Erro (400):** Retorna uma mensagem indicando que o corpo da requisição está incorreto.\n \n    \n\n- **Editar Projeto (PUT):** `/api/projetos/:id`\n\n  - **Corpo da Requisição:**\n\n  ```json\n  {\n    \"nome\": \"Novo Nome do Projeto\",\n    \"descricao\": \"Nova Descrição do Projeto\",\n    \"data_inicio\": \"2024-01-01\",\n    \"data_fim\": \"2024-12-31\",\n    \"status\": \"Concluído\"\n  }\n  ```\n\n  - **Resposta de Sucesso (200):** Retorna o projeto atualizado.\n  - **Resposta de Erro (400):** Retorna uma mensagem indicando que o corpo da requisição está incorreto.\n    \n\n- **Remover Projeto (DELETE):** `/api/projetos/:id`\n  - **Resposta de Sucesso (204):** Confirma que o projeto foi removido com sucesso.\n  - **Resposta de Erro (400):** Retorna uma mensagem indicando problemas na remoção.\n    \n\n\n### **Usuários em Projetos**\n\n- **Listar usuários em um projeto (GET):** `/api/projetos/{projetoId}/usuarios`\n\n  - **Resposta de Sucesso (200):** Retorna a lista de usuários vinculados ao projeto.\n\n  ```json\n  [\n    {\n      \"id\": 1,\n      \"nome\": \"Nome do Usuário\",\n      \"email\": \"email@exemplo.com\",\n      \"papel\": \"Desenvolvedor\"\n    },\n  ]\n  ```\n\n  - **Resposta de Erro (404):** Retorna uma mensagem indicando que nenhum usuário foi encontrado para o projeto especificado..\n \n    \n\n- **Cadastrar Usuário em Projeto (POST):** `/api/projetos/{projetoId}/usuarios`\n\n  - **Corpo da Requisição:**\n\n  ```json\n  {\n    \"usuario_id\": 1\n  }\n  ```\n\n  - **Resposta de Sucesso (201):** Retorna o usuário adicionado ao projeto.\n  - **Resposta de Erro (400):** Retorna uma mensagem indicando que o corpo da requisição está incorreto.\n\n    \n    \n- **Remover Usuário em Projeto (DELETE):** `/api/projetos/{projetoId}/usuarios/{usuarioId}`\n  - **Resposta de Sucesso (204):** Confirma que o usuário foi removido do projeto com sucesso.\n  - **Resposta de Erro (400):** Retorna uma mensagem indicando problemas na remoção.\n\n\n### **Autenticação**\n\n- **Registrar novo usuário (POST):** `/api/auth/register`\n\n  - **Corpo da Requisição:**\n\n  ```json\n  {\n    \"nome\": \"Nome do Usuário\",\n    \"email\": \"email@exemplo.com\",\n    \"senha\": \"senha123\",\n    \"papel\": \"Desenvolvedor\"\n  }\n  ```\n\n  - **Resposta de Sucesso (201):** Usuário criado com sucesso:\n    \n  ```json\n  {\n    \"id\": 1, \n    \"nome\": \"Nome do Usuário\", \n    \"email\": \"email@exemplo.com\", \n    \"papel\": \"Desenvolvedor\", \n    \"token\": \"jwt_token\" \n  }\n  ```\n\n  - **Resposta de Erro (400):** Dados inválidos ou usuário já existente.\n\n- **Realizar login de usuário (POST): ** `/api/auth/login`\n\n  - **Resposta de Sucesso (201):** Retorna um token JWT válido:\n  - **Resposta de Erro (400):** Credenciais inválidas.\n\n- **Retornar dados do usuário autenticado (GET):** `/api/auth/me`\n\n  - **Resposta de Sucesso (201):** Retorna os dados do usuário autenticado:\n  - **Resposta de Erro (400):** Token inválido ou não fornecido.\n\n\n# **Frontend** \n\nO frontend será uma SPA (Single Page Application) que interage com a API criada para fornecer uma interface de usuário intuitiva. A interface permitirá logar/cadastrar no sistema, visualizar, adicionar, editar e remover projetos e visualizar, adicionar, editar e remover usuários em projetos. \n\n# **Estrutura do Frontend**\n\n- Diretório Frontend: Contém o código da interface do usuário.\n- Container (opcional): Para isolar o ambiente de desenvolvimento do frontend.\n\n\n## **Páginas:**\n\n  - **Cadastro**:\n      - Registro de novos usuários no sistema.\n   \n  - **Login**:\n      - Permitirá a autenticação de usuários.\n\n  - **Gestão de Projetos**:\n    - Listagem: Tabela com os projetos cadastrados, com opções de adicionar, editar e remover.\n    - Cadastro/Edição: Formulário para cadastro ou edição de projetos, pode ser uma modal ou uma página separada.\n    - Exclusão: Confirmação antes de excluir um projeto.\n   \n  - **Gestão de Usuários em Projetos**:\n    - Listagem de Usuários em Projetos: Tabela com os usuários vinculados ao projeto, com opções de adicionar, editar e remover.\n    - Cadastro: Formulário para associação de um usuário ao projeto.\n    - Exclusão: Confirmação antes de excluir um usuário de um projeto.\n\n\n## O que será avaliado? \n\nNo geral, tudo será avaliado. Porém nosso foco é descobrir como você aplica os conceitos da programação nos seus projetos, como você soluciona problemas e como irá gerar valor ao produto desenvolvido.\n\n- Estrutura do Código: Organização e clareza do código.\n- Cumprimento de Requisitos: Atendimento aos requisitos especificados.\n- Lógica de Programação: Soluções implementadas e sua eficiência.\n- Metodologia Aplicada: Abordagem para resolver problemas e entregar valor.\n- Criatividade: Criatividade na solução dos requisitos propostos.\n\n## Entrega\n\nFaça o projeto calmamente e organizadamente! E após finaliza-lo envie-nos e aguarde a correção.\n\n- **OBS**: Faça commits claros e descritivos, estaremos atentos a cada detalhe do seu desenvolvimento.\n\n## Checklist 📝\n\nAbaixo estão as implementações que terão de ser feitas no seu projeto. Quanto mais itens você entregar, melhor será sua avaliação. Utilize este checklist como um guia e faça os itens que conseguir.\n\nOs itens estão separados por níveis, e o nível 1 é o mínimo que esperamos que vocês entreguem. Considerem diferenciais para este primeiro projeto itens do nível 2 em diante.\n\n\n---\n\n**Legenda:**\n\n- B -\u003e Backend\n- F -\u003e Frontend\n\n---\n\n### Nível 1\n\n|     | Descrição                  | Local |\n| --- | -------------------------- | ----- |\n| [ ] | Listar projetos            |  F B  |\n| [ ] | Cadastrar um projeto       |  F B  |\n| [ ] | Editar um projeto          |  F B  |\n| [ ] | Remover um projeto         |  F B  |\n| [ ] | Listar usuários em projetos             |  F B  |\n| [ ] | Cadastrar usuários em projetos       |  F B  |\n| [ ] | Remover usuários em projetos         |  F B  |\n| [ ] | Tipagem de dados           |  F B  |\n| [ ] | Registro de usuários no sistema     |  F B  |\n| [ ] | Autenticação via login         |  F B  |\n| [ ] | Validações de campos     |  F B  |\n\n\n### Nível 2\n\n|     | Descrição\t                                            | Local |\n| --- | ------------------------------------------------      | ----- |\n| [ ] |\tTratamento de exceções / Retornos erros concisos\t    |  F B  |\n| [ ] | Mensagens de sucesso e/ou erros\t                      |  F   |\n| [ ] | Impedir remoção de projetos não concluídos            |   B   |\n| [ ] | Paginação na listagem de projetos\t                    |  F B  |\n| [ ] | Paginação na listagem de usuários\t                    |  F B  |\n| [ ] | Confirmação para exclusão de itens\t                  |  F   |\n\n\n### Nível 3\n\n|     | Descrição                              | Local |\n| --- | -------------------------------------- | ----- |\n| [ ] | Testes de integração                   |    B  |\n| [ ] | Organização e estrutura de pastas      |  F B  |\n| [ ] | Clean Code                             |  F B  |\n\n### Nível 4\n\n|     | Descrição                                                               | Local |\n| --- | ----------------------------------------------------------------------- | ----- |\n| [ ] | Disponibilização do backend via Containers                              |    B  |\n| [ ] | Disponibilização do frontend via Containers                             |  F    |\n| [ ] | Disponibilização dos containers (backend + frontend)                    |  F B  |\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffernandozuchi%2Fprojeto-01","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffernandozuchi%2Fprojeto-01","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffernandozuchi%2Fprojeto-01/lists"}