Projeto backend RESTful desenvolvido com Java e Spring Boot com foco em aprendizado, organização e boas práticas básicas de mercado para nível Estagiário/Júnior.
Este projeto simula uma API de gerenciamento de tarefas com autenticação via JWT, persistência em PostgreSQL, migrações de banco e deploy simples em nuvem.
Demonstrar que eu entendo:
- Como criar uma API REST bem organizada
- Como estruturar um projeto Spring Boot
- Comunicação com banco de dados (PostgreSQL)
- Autenticação JWT
- Conteinerização com Docker
- Deploy básico em nuvem (AWS EC2)
- Controle de versão e documentação básica
- Java (LTS)
- Spring Boot
- Spring Security (básico)
- JPA / Hibernate
- PostgreSQL
- JWT (simples)
- Flyway (migrations)
- Docker
- Swagger (OpenAPI)
- Lombok
- AWS EC2 (deploy simples)
O sistema gerencia usuários e tarefas.
Cada usuário pode:
- Criar conta
- Fazer login
- Criar, visualizar, atualizar e deletar suas próprias tarefas
Toda comunicação com a API é protegida via JWT, exceto autenticação.
| Atributo | Tipo | Descrição |
|---|---|---|
| id | Long | Identificador |
| name | String | Nome |
| String | ||
| password | String | Senha criptografada |
| createdAt | LocalDateTime | Data de criação |
| Atributo | Tipo | Descrição |
|---|---|---|
| id | Long | Identificador |
| title | String | Título |
| description | String | Descrição |
| status | Enum | PENDING, DONE |
| user | User | Dono da tarefa |
| createdAt | LocalDateTime | Criação |
A aplicação utiliza autenticação stateless com JWT.
Fluxo:
-
Usuário se registra
-
Usuário faz login
-
API retorna um token JWT
-
Token é enviado no Header:
-
Token é validado a cada requisição protegida
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /auth/register | Criação de usuário |
| POST | /auth/login | Login e geração de token |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /tasks | Lista tarefas |
| POST | /tasks | Cria tarefa |
| PUT | /tasks/{id} | Atualiza tarefa |
| DELETE | /tasks/{id} | Remove tarefa |
src/main/java
└── com.project.taskmanager
├── controller
├── service
├── repository
├── model
├── dto
├── security
├── config
├── exception
└── TaskManagerApplication.java
Gerenciado automaticamente pelo Flyway.
Migrações ficam em:
src/main/resources/db/migration
FROM eclipse-temurin:17
WORKDIR /app
COPY target/*.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
version: '3.8'
services:
db:
image: postgres
container_name: postgres-db
environment:
POSTGRES_DB: taskmanager
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
ports:
- "5432:5432"
api:
build: .
container_name: taskmanager-api
ports:
- "8080:8080"
depends_on:
- db
bash git clone https://github.com/delsinx/TaskManager
2️⃣ Build Bash
mvn clean package
3️⃣ Suba com Docker Bash
docker-compose up --build
4️⃣ Acesse API: http://localhost:8080