Um gerenciador de tarefas completo no estilo Kanban, desenvolvido como um projeto full-stack para demonstrar a integração entre um backend robusto com Spring Boot e um front-end moderno e reativo com React e TypeScript.
O sistema permite que os usuários organizem suas tarefas em listas (colunas), criem, editem, finalizem e deletem tarefas, tudo com persistência de dados em um banco de dados PostgreSQL. A interface é limpa, responsiva e focada na produtividade.
- ✅ Listas (Colunas):
- Criação de novas listas com título.
- Renomeação de listas "in-loco" (clicando no título).
- Deleção de listas com modal de confirmação.
- ✅ Tarefas (Cards):
- Criação de novas tarefas dentro de uma lista.
- Abertura de um painel lateral (drawer) para visualização e edição detalhada.
- Edição de título, descrição, data de conclusão e prioridade.
- Deleção de tarefas com modal de confirmação.
- Marcar tarefas como finalizadas ou não finalizadas.
- ✅ Interface Interativa:
- Menus de opções (dropdown) para ações da lista.
- Notificações "Snackbar" para feedback de ações (ex: lista deletada).
- Layout totalmente responsivo para visualização em dispositivos móveis.
- ✅ Lógica de Negócio:
- Validação de campos obrigatórios (título da tarefa).
- Destaque visual para tarefas atrasadas.
- Destaque visual para tarefas finalizadas (com ou sem atraso).
- ✅ Ambiente de Desenvolvimento:
- Totalmente containerizado com Docker e Docker Compose para facilitar a execução.
O projeto é dividido em duas partes principais:
- Java 17
- Spring Boot 3
- Spring Data JPA / Hibernate
- PostgreSQL
- Maven
- Lombok
- React 18 com Vite
- TypeScript
- CSS Modules
- Axios para requisições HTTP
- date-fns para manipulação de datas
- react-icons
- Docker e Docker Compose
Com o ambiente containerizado, rodar o projeto é muito simples.
-
Clone o repositório:
git clone https://github.com/jpmrangel/task_manager.git cd task_manager -
Construa as imagens Docker: Este comando precisa ser executado apenas na primeira vez ou quando você alterar os
Dockerfilesou as dependências do projeto.docker-compose build
-
Inicie os containers: Este comando irá iniciar o banco de dados, o backend e o frontend de uma só vez.
docker-compose up
-
Acesse a aplicação:
- Frontend (React): http://localhost:5173
- Backend (API Spring Boot): http://localhost:8080
-
Para parar a aplicação: No terminal onde os containers estão rodando, pressione
Ctrl + Ce depois execute:docker-compose down
Isso irá parar e remover os containers, mas manterá os dados do seu banco de dados salvos no volume do Docker.
A API segue os padrões RESTful.
GET /lists: Retorna todas as listas com suas respectivas tarefas.POST /lists: Cria uma nova lista.PUT /lists/{id}: Atualiza o nome de uma lista.DELETE /lists/{id}: Deleta uma lista.
POST /tasks: Cria uma nova tarefa.PUT /tasks/{id}: Atualiza os dados de uma tarefa.PATCH /tasks/{id}: Atualiza a data de finalização de uma tarefa.DELETE /tasks/{id}: Deleta uma tarefa.