https://github.com/kacielriff/project-task-management
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.
https://github.com/kacielriff/project-task-management
java junit jwt mockito postgresql spring swagger
Last synced: 2 months ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/kacielriff/project-task-management
- Owner: kacielriff
- License: mit
- Created: 2024-10-04T22:26:27.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-10-16T17:12:54.000Z (over 1 year ago)
- Last Synced: 2025-04-07T00:52:22.236Z (about 1 year ago)
- Topics: java, junit, jwt, mockito, postgresql, spring, swagger
- Language: Java
- Homepage:
- Size: 51.8 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Task Management API
## Descrição
A 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.
## Tecnologias Utilizadas
- Java 17
- Spring Boot
- Spring Security
- Spring Data JPA
- PostgreSQL
- JUnit 5
- Mockito
- Maven
- FreeMarker (Templates de E-mail)
## Funcionalidades
### Autenticação e Autorização
- **Autenticação JWT:** Login, verificação e manutenção de sessões de usuário.
- **Autorização com papéis:** Diferentes níveis de acesso com base no papel do usuário em cada quadro (OWNER, MEMBER, VIEWER).
### Gerenciamento de Quadros
- **Criação de Quadros:** O usuário pode criar quadros para organizar suas tarefas.
- **Gerenciamento de Membros:** Cada quadro pode ter membros com diferentes papéis e permissões.
- **Listagem de Quadros e Membros:** Retorna detalhes de todos os membros de um quadro, incluindo o ID, nome, dono, membros e suas funções.
### Gerenciamento de Tarefas
- **Criação e Atualização de Tarefas:** Tarefas podem ser criadas e atribuídas a quadros.
- **Atribuição de Membros a Tarefas:** Os membros de um quadro podem ser designados a tarefas.
- **Alteração de Status de Tarefas:** Atualizar o status das tarefas (ex.: `ToDo`, `In Progress`, `Done`).
### Recuperação de Senha
- **Esqueci minha Senha:** Gera um link único para redefinir a senha, enviado por e-mail.
- **Alteração de Senha:** Autenticação do usuário e alteração de senha utilizando JWT.
### Envio de E-mails
- **Notificação de Cadastro e Recuperação de Senha:** E-mails automáticos para confirmação de conta e recuperação de senha.
- **Agendamento de E-mails:** Lembretes automáticos de entrevistas e outros eventos importantes.
## Instalação e Execução
### Pré-requisitos
- Java 17
- Maven
- PostgreSQL
### Passos
1. Clone o repositório:
```bash
git clone https://github.com/kacielriff/project-task-management.git
```
2. Configure as variáveis de ambiente
```bash
-Dspring.datasource.url=
-Dspring.datasource.username=
-Dspring.datasource.password=
-Djwt.secret=
-Djwt.expiration=
-Dspring.mail.host=
-Dspring.mail.username=
-Dspring.mail.password=
```
3. Rode o projeto
## Endpoints
### Autenticação (auth)
- **POST /auth/login:** Autenticar um usuário e retornar um token JWT.
- **POST /auth/register:** Registrar um novo usuário.
- **POST /auth/forgot-password:** Enviar e-mail de recuperação de senha.
- **POST /auth/recover-password:** Recuperar de senha.
- **PUT /auth/change-password:** Alterar a senha do usuário autenticado.
- **GET /auth/logged-user:** Recupera o usuário logado.
### Quadros (board)
- **POST /boards:** Criar um novo quadro.
- **GET /boards/{boardId}:** Obter detalhes de um quadro.
- **PUT /boards:** Edita um quadro.
- **DELETE /boards:** Exclui um quadro.
- **GET /boards/list-user-boards:** Listar os quadros que o usuário faz parte.
## Estrutura do Projeto
O projeto segue uma estrutura modular utilizando o padrao MVC:
```
📦src
┣ 📂main
┃ ┣ 📂java
┃ ┃ ┗ 📂com
┃ ┃ ┗ 📂kacielriff
┃ ┃ ┗ 📂task_management
┃ ┃ ┣ 📂config
┃ ┃ ┣ 📂controller
┃ ┃ ┣ 📂docs
┃ ┃ ┣ 📂dto
┃ ┃ ┣ 📂entity
┃ ┃ ┣ 📂exception
┃ ┃ ┣ 📂repository
┃ ┃ ┣ 📂security
┃ ┃ ┣ 📂service
┃ ┃ ┗ 📜TaskManagementApplication.java
┃ ┗ 📂resources
┃ ┣ 📂db
┃ ┃ ┗ 📂changelog
┃ ┃ ┗ 📂migrations
┃ ┗ 📂templates
┗ 📂test
┗ 📂java
┗ 📂com
┗ 📂kacielriff
┗ 📂task_management
┗ 📂service
```
## Contribuição
Contribuições são bem-vindas! Siga os passos abaixo para colaborar:
1. Faça um fork do projeto.
2. Crie uma branch com sua feature: `git checkout -b feat/minha-feature`.
3. Commit suas mudanças: `git commit -m 'add: adiciona minha feature'`.
4. Faça um push para a branch: `git push -u origin feat/minha-feature`.
5. Abra um Pull Request.
## Licença
Este projeto está licenciado sob a MIT License.