Um sistema avançado de gestão de tarefas (To-Do List) desenvolvido com Spring Boot, focado em boas práticas de Clean Architecture e Domain-Driven Design (DDD). O projeto visa ir além do CRUD básico, incorporando funcionalidades como autenticação JWT, categorias personalizadas, tags, lembretes por e-mail e compartilhamento de tarefas entre usuários. A API REST será documentada com Swagger/OpenAPI.
- Setup do Projeto Spring Boot: Configuração inicial com Spring Initializr.
- Configuração de Banco de Dados: Uso de Flyway para gerenciamento de migrações (PostgreSQL/H2).
- Estrutura Clean Architecture/DDD: Definição de pacotes para
domain,application,infrastructureeapi. - Modelagem do Domínio: Entidades POJO (
User,Task,Category,Tag,TaskShare) e Value Objects/Enums (TaskStatus,TaskPriority,SharePermissionLevel). - Contratos de Repositório: Interfaces de repositório definidas na camada de
domain. - DTOs de Aplicação: Objetos de transferência de dados para input/output de Use Cases na camada de
application. - Autenticação e Autorização (JWT com Spring Security)
- Gerenciamento de Usuários (Registro, Login, Perfil)
- CRUD Completo de Tarefas
- Categorias e Tags
- Compartilhamento de Tarefas
- Lembretes por E-mail (@Scheduled)
- Documentação da API com Swagger/OpenAPI
- Conteinerização com Docker e Docker Compose
- Backend: Java 21+, Spring Boot (Web, Data JPA, Security, Mail)
- Banco de Dados: PostgreSQL (Produção/Docker), H2 (Desenvolvimento/Testes)
- Gerenciamento de DB Migrações: Flyway
- ORM: Hibernate
- Construção: Maven
- Auxiliar de Código: Lombok
- API Docs: Swagger/OpenAPI
- Ferramentas de Desenvolvimento: Git, Docker, IntelliJ IDEA (ou outro IDE Java)
Instruções para configurar e executar o projeto localmente, incluindo o uso de Docker.
Informações sobre como contribuir para o projeto (futuro).
Desenvolvido como um projeto de estudo aprofundado em engenharia de software e arquiteturas modernas.