{"id":18153253,"url":"https://github.com/kacielriff/project-task-management","last_synced_at":"2026-04-17T03:02:48.593Z","repository":{"id":258298194,"uuid":"867870171","full_name":"kacielriff/project-task-management","owner":"kacielriff","description":"API desenvolvida em Java, Spring e PostgreSQL para gerenciamento de quadros e tarefas, semelhante ao Trello. O sistema permite a criação de quadros, gerenciamento de membros com diferentes roles e atribuição de tarefas a um quadro. A autenticação é feita com JWT e a API oferece envio de notificações por email.","archived":false,"fork":false,"pushed_at":"2024-10-16T17:12:54.000Z","size":53,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T00:52:22.236Z","etag":null,"topics":["java","junit","jwt","mockito","postgresql","spring","swagger"],"latest_commit_sha":null,"homepage":"","language":"Java","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/kacielriff.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-04T22:26:27.000Z","updated_at":"2024-10-16T17:15:54.000Z","dependencies_parsed_at":"2024-10-18T10:47:59.753Z","dependency_job_id":"a69b5e96-e982-4416-8f85-36c38bd2e8fe","html_url":"https://github.com/kacielriff/project-task-management","commit_stats":null,"previous_names":["kacielriff/project-task-management"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kacielriff/project-task-management","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kacielriff%2Fproject-task-management","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kacielriff%2Fproject-task-management/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kacielriff%2Fproject-task-management/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kacielriff%2Fproject-task-management/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kacielriff","download_url":"https://codeload.github.com/kacielriff/project-task-management/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kacielriff%2Fproject-task-management/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31913078,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","response_time":62,"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":["java","junit","jwt","mockito","postgresql","spring","swagger"],"created_at":"2024-11-02T03:06:08.541Z","updated_at":"2026-04-17T03:02:48.569Z","avatar_url":"https://github.com/kacielriff.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003ca href=\"https://project-task-management.onrender.com\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/-Deploy-%4DC71F?style=for-the-badge\u0026logo=render\u0026logoColor=white\" target=\"_blank\"\u003e\u003c/a\u003e\n\u003cimg src=\"https://img.shields.io/badge/-Java-%23ED8B00?style=for-the-badge\u0026logo=java\u0026logoColor=white\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/-Spring-%236DB33F?style=for-the-badge\u0026logo=spring\u0026logoColor=white\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/-JUnit5-%25A162?style=for-the-badge\u0026logo=junit5\u0026logoColor=white\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/-Mockito-%2300BFA5?style=for-the-badge\u0026logo=mockito\u0026logoColor=white\"\u003e\n\n\u003c/div\u003e\n\n# Task Management API\n\n## Descrição\n\nA Task Management API é uma aplicação desenvolvida em Java com Spring Framework para o gerenciamento de tarefas e quadros. O sistema permite a criação de quadros, gerenciamento de membros com diferentes papéis (proprietário, membro, visualizador) e atribuição de tarefas a cada quadro. A autenticação é baseada em JWT e a API conta com endpoints para cadastro de usuários, autenticação e recuperação de senha, além de envio de notificações por e-mail.\n\n## Tecnologias Utilizadas\n\n- Java 17\n- Spring Boot\n- Spring Security\n- Spring Data JPA\n- PostgreSQL\n- JUnit 5\n- Mockito\n- Maven\n- FreeMarker (Templates de E-mail)\n\n## Funcionalidades\n\n### Autenticação e Autorização\n\n- **Autenticação JWT:** Login, verificação e manutenção de sessões de usuário.\n- **Autorização com papéis:** Diferentes níveis de acesso com base no papel do usuário em cada quadro (OWNER, MEMBER, VIEWER).\n\n### Gerenciamento de Quadros\n\n- **Criação de Quadros:** O usuário pode criar quadros para organizar suas tarefas.\n- **Gerenciamento de Membros:** Cada quadro pode ter membros com diferentes papéis e permissões.\n- **Listagem de Quadros e Membros:** Retorna detalhes de todos os membros de um quadro, incluindo o ID, nome, dono, membros e suas funções.\n\n### Gerenciamento de Tarefas\n\n- **Criação e Atualização de Tarefas:** Tarefas podem ser criadas e atribuídas a quadros.\n- **Atribuição de Membros a Tarefas:** Os membros de um quadro podem ser designados a tarefas.\n- **Alteração de Status de Tarefas:** Atualizar o status das tarefas (ex.: `ToDo`, `In Progress`, `Done`).\n\n### Recuperação de Senha\n\n- **Esqueci minha Senha:** Gera um link único para redefinir a senha, enviado por e-mail.\n- **Alteração de Senha:** Autenticação do usuário e alteração de senha utilizando JWT.\n\n### Envio de E-mails\n\n- **Notificação de Cadastro e Recuperação de Senha:** E-mails automáticos para confirmação de conta e recuperação de senha.\n- **Agendamento de E-mails:** Lembretes automáticos de entrevistas e outros eventos importantes.\n\n## Instalação e Execução\n\n### Pré-requisitos\n\n- Java 17\n- Maven\n- PostgreSQL\n\n### Passos\n\n1. Clone o repositório:\n    ```bash\n    git clone https://github.com/kacielriff/project-task-management.git\n    ```\n\n2. Configure as variáveis de ambiente\n    ```bash\n    -Dspring.datasource.url=\n    -Dspring.datasource.username=\n    -Dspring.datasource.password=\n    -Djwt.secret=\n    -Djwt.expiration=\n    -Dspring.mail.host=\n    -Dspring.mail.username=\n    -Dspring.mail.password=\n   ```\n   \n3. Rode o projeto\n\n## Endpoints\n\n### Autenticação (auth)\n\n- **POST /auth/login:** Autenticar um usuário e retornar um token JWT.\n- **POST /auth/register:** Registrar um novo usuário.\n- **POST /auth/forgot-password:** Enviar e-mail de recuperação de senha.\n- **POST /auth/recover-password:** Recuperar de senha.\n- **PUT /auth/change-password:** Alterar a senha do usuário autenticado.\n- **GET /auth/logged-user:** Recupera o usuário logado.\n\n### Quadros (board)\n\n- **POST /boards:** Criar um novo quadro.\n- **GET /boards/{boardId}:** Obter detalhes de um quadro.\n- **PUT /boards:** Edita um quadro.\n- **DELETE /boards:** Exclui um quadro.\n- **GET /boards/list-user-boards:** Listar os quadros que o usuário faz parte.\n\n## Estrutura do Projeto\n\nO projeto segue uma estrutura modular utilizando o padrao MVC: \n\n```\n📦src\n ┣ 📂main\n ┃ ┣ 📂java\n ┃ ┃ ┗ 📂com\n ┃ ┃   ┗ 📂kacielriff\n ┃ ┃     ┗ 📂task_management\n ┃ ┃       ┣ 📂config\n ┃ ┃       ┣ 📂controller\n ┃ ┃       ┣ 📂docs\n ┃ ┃       ┣ 📂dto\n ┃ ┃       ┣ 📂entity\n ┃ ┃       ┣ 📂exception\n ┃ ┃       ┣ 📂repository\n ┃ ┃       ┣ 📂security\n ┃ ┃       ┣ 📂service\n ┃ ┃       ┗ 📜TaskManagementApplication.java\n ┃ ┗ 📂resources\n ┃   ┣ 📂db\n ┃   ┃ ┗ 📂changelog\n ┃   ┃   ┗ 📂migrations\n ┃   ┗ 📂templates\n ┗ 📂test\n   ┗ 📂java\n     ┗ 📂com\n       ┗ 📂kacielriff\n         ┗ 📂task_management\n           ┗ 📂service\n```\n\n## Contribuição\n\nContribuições são bem-vindas! Siga os passos abaixo para colaborar:\n\n   1. Faça um fork do projeto.\n   2. Crie uma branch com sua feature: `git checkout -b feat/minha-feature`.\n   3. Commit suas mudanças: `git commit -m 'add: adiciona minha feature'`.\n   4. Faça um push para a branch: `git push -u origin feat/minha-feature`.\n   5. Abra um Pull Request.\n\n## Licença\n\nEste projeto está licenciado sob a \u003ca href=\"./LICENSE\"\u003eMIT License\u003c/a\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkacielriff%2Fproject-task-management","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkacielriff%2Fproject-task-management","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkacielriff%2Fproject-task-management/lists"}