Este repositório contém uma API REST simples para gerenciamento de tarefas (ToDo List), desenvolvida com Java 17 e Spring Boot.
O projeto foi criado com foco em prática, exploração de configurações e refinamento de ambiente de desenvolvimento, incluindo execução com Docker, automações com Makefile, documentação com Swagger, além da aplicação de boas práticas de arquitetura.
Apesar de ser um projeto de estudo, foi estruturado para que sirva como base para práticas, experimentações e evolução contínua.
🚀 Tecnologias Utilizadas
- Java 17
- Spring Boot 3 (Web, Data JPA)
- Spring Data JPA
- H2 Database
- Springdoc OpenAPI (Swagger UI)
- Lombok
- Maven
- Docker + Makefile
- JUnit (Spring Boot Test)
Arquitetura em camadas:
controller/– camadas de entradaservice/– regras de negóciorepository/– persistênciamodel/– entidadesdoc/– configuração Swagger
📂 Estrutura do Projeto
src/
├── main/
│ ├── java/com/big/tasks/
│ │ ├── controller/ # Endpoints REST
│ │ ├── service/ # Regras de negócio
│ │ ├── repository/ # CRUD JPA
│ │ ├── model/ # Entidades
│ │ ├── doc/ # Config OpenAPI/Swagger
│ │ └── TasksApplication.java
│ └── resources/
│ ├── application.properties
│ ├── static/
│ └── templates/
└── test/
└── java/com/big/tasks/
└── TasksApplicationTests.java
🐳 Executando com Docker + Makefile
Este projeto utiliza um Dockerfile preparado para desenvolvimento, mantendo o código no host e dependências/cache dentro da imagem.
O Makefile automatiza build, execução, reload, limpeza e entrada no container.
🔨 Build da imagem Docker
make build
▶️ Subir o container em modo interativo (debug)
make run-it
🚀 Executar a aplicação dentro do container
make load
🛑 Parar somente a aplicação (processos Java)
make stop
🧹 Parar e remover o container
make down
🔨 Build da imagem Docker
make build
🧨 Remover container + imagem
make fclean
🔁 Pipeline completo (recomendado):
make deep-run
▶️ Rodando Sem Docker (opcional)
Build:
mvn clean install
Executar:
mvn spring-boot:run
📘 Endpoints Disponíveis
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /tasks | Criar uma nova Task |
| GET | /tasks | Listar todas as Tasks |
| GET | /tasks/{id} | Buscar Task por ID |
| PUT | /tasks/{id} | Atualizar Task |
| DELETE | /tasks/{id} | Remover Task |
URL base para as rotas:
http://localhost:8080/api/v1
Acessar Swagger UI:
http://localhost:8080/swagger-ui/index.html
🧱 Exemplo de Entidade Task
{
"id": 1,
"title": "Estudar Spring Boot",
"description": "Praticar criação de APIs REST",
"deadLine": "2025-12-06T23:46:11.926Z",
"createdAt": "2025-12-06T23:46:11.926Z",
"updatedAt": "2025-12-06T23:46:11.926Z"
}
🎯 Conhecimentos Praticados
- Criação de APIs REST com Spring Boot
- Uso de Spring Data JPA
- Ambientes de desenvolvimento com H2
- Documentação automática com Swagger/OpenAPI
- Arquitetura MVC / camadas (Controller → Service → Repository)
- Organização e build com Maven
- Execução e desenvolvimento com Docker
- Automação via Makefile
🔧 Próximos Passos / Melhorias
- Hot Reload com Spring DevTools + Docker → objetivo: alterar código no host e executar automaticamente dentro do container
