Skip to content

delsinx/TaskManager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧠 Backend Portfolio Project — Task Manager API

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.


🎯 Objetivo do Projeto

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

🛠️ Stack Utilizada

  • Java (LTS)
  • Spring Boot
  • Spring Security (básico)
  • JPA / Hibernate
  • PostgreSQL
  • JWT (simples)
  • Flyway (migrations)
  • Docker
  • Swagger (OpenAPI)
  • Lombok
  • AWS EC2 (deploy simples)

📚 Descrição do Sistema

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.


📦 Entidades Principais

👤 User

Atributo Tipo Descrição
id Long Identificador
name String Nome
email String Email
password String Senha criptografada
createdAt LocalDateTime Data de criação

✅ Task

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

🔒 Autenticação JWT

A aplicação utiliza autenticação stateless com JWT.

Fluxo:

  1. Usuário se registra

  2. Usuário faz login

  3. API retorna um token JWT

  4. Token é enviado no Header:

  5. Token é validado a cada requisição protegida


🔗 Endpoints Principais

🔐 AuthController

Método Endpoint Descrição
POST /auth/register Criação de usuário
POST /auth/login Login e geração de token

✅ TaskController

Método Endpoint Descrição
GET /tasks Lista tarefas
POST /tasks Cria tarefa
PUT /tasks/{id} Atualiza tarefa
DELETE /tasks/{id} Remove tarefa

🗂️ Estrutura de Pastas

src/main/java
└── com.project.taskmanager
 ├── controller
 ├── service
 ├── repository
 ├── model
 ├── dto
 ├── security
 ├── config
 ├── exception
 └── TaskManagerApplication.java

🛢️ Banco de Dados


Gerenciado automaticamente pelo Flyway.

Migrações ficam em:

src/main/resources/db/migration

🐳 Dockerfile

FROM eclipse-temurin:17
WORKDIR /app
COPY target/*.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]

🐘 docker-compose.yml

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

▶️ Como Rodar Localmente

1️⃣ Clone

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

Swagger: http://localhost:8080/swagger-ui.html

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages