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 entrada
  • service/ – regras de negócio
  • repository/ – persistência
  • model/ – entidades
  • doc/ – 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étodoEndpointDescrição
POST/tasksCriar uma nova Task
GET/tasksListar 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

📂 Repositório do Projeto

Tasks no Github