Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TaskFlow

Aplicação full stack para gerenciamento seguro de tarefas pessoais.

CI Java Spring Boot Angular License

Visão geral

O TaskFlow permite que cada usuário crie, consulte, filtre, atualize e exclua suas próprias tarefas. A aplicação utiliza autenticação JWT stateless e aplica isolamento de dados no backend: uma tarefa só é localizada quando pertence ao usuário autenticado.

Destaques técnicos

  • API REST em Java 17 e Spring Boot.
  • Autenticação JWT e senhas protegidas com BCrypt.
  • DTOs específicos para entrada e saída; entidades JPA não são expostas pela API.
  • Isolamento de tarefas por usuário no próprio acesso ao repositório.
  • Angular standalone com interceptor HTTP para o Bearer token.
  • Testes unitários, de repositório e de integração HTTP.
  • Relatório de cobertura com JaCoCo e pipeline de CI no GitHub Actions.
  • H2 no perfil de desenvolvimento e SQL Server + Flyway no perfil de produção.

Arquitetura

flowchart LR
    UI[Angular 20] -->|HTTP + JWT| API[Spring Boot REST API]
    API --> SECURITY[Spring Security]
    SECURITY --> SERVICES[Services]
    SERVICES --> REPOSITORIES[Spring Data JPA]
    REPOSITORIES --> DB[(H2 / SQL Server)]
Loading
TaskFlow-Backend/
└── src/
    ├── main/java/.../
    │   ├── controller
    │   ├── domain/dto
    │   ├── domain/model
    │   ├── domain/repository
    │   ├── domain/configuration
    │   └── service
    └── test/java/.../
        ├── service
        ├── repository
        └── integration

TaskFlow-Frontend/
└── src/app/
    ├── guards
    ├── interceptors
    ├── pages
    └── services

Funcionalidades

  • Cadastro e autenticação de usuário.
  • CRUD de tarefas pessoais.
  • Alteração rápida de status por endpoint PATCH.
  • Filtros por texto, status e prioridade.
  • Paginação disponível na API.
  • Datas de vencimento, prioridade e status.
  • Documentação interativa com Swagger UI.

Endpoints principais

Método Endpoint Acesso Finalidade
POST /auth Público Autenticar e emitir JWT
POST /users Público Criar conta
GET /users/me Autenticado Consultar o próprio perfil
PUT /users/me Autenticado Atualizar o próprio perfil
DELETE /users/me Autenticado Excluir a própria conta
GET /tasks Autenticado Listar tarefas do usuário
GET /tasks/paged Autenticado Listar tarefas com paginação
GET /tasks/{id} Autenticado Consultar uma tarefa própria
POST /tasks Autenticado Criar tarefa
PUT /tasks/{id} Autenticado Atualizar tarefa
PATCH /tasks/{id}/status Autenticado Alterar somente o status
DELETE /tasks/{id} Autenticado Excluir tarefa

Executando localmente

Pré-requisitos

  • Java 17+
  • Node.js 22+
  • npm

1. Clone o repositório

git clone https://github.com/Rafael-Bessa/TaskFlow.git
cd TaskFlow

2. Configure a chave JWT

A API não possui segredos fixos no código. Defina uma chave com pelo menos 32 caracteres.

PowerShell

$env:JWT_SECRET="troque-por-uma-chave-segura-com-32-caracteres"

Prompt de Comando

set JWT_SECRET=troque-por-uma-chave-segura-com-32-caracteres

Linux/macOS

export JWT_SECRET="troque-por-uma-chave-segura-com-32-caracteres"

3. Inicie o backend

No Windows:

cd TaskFlow-Backend
mvnw.cmd spring-boot:run

No Linux/macOS:

cd TaskFlow-Backend
./mvnw spring-boot:run

O perfil padrão dev usa H2 e cria os dados em TaskFlow-Backend/data/.

  • API: http://localhost:8080
  • Swagger: http://localhost:8080/swagger.html
  • H2 Console: http://localhost:8080/h2-console

Se você já executou uma versão anterior localmente e encontrar erro de schema, remova a pasta TaskFlow-Backend/data/ para recriar o banco H2 de desenvolvimento.

4. Inicie o frontend

Em outro terminal:

cd TaskFlow-Frontend
npm ci
npm start

Aplicação: http://localhost:4200

Testes e qualidade

Backend

cd TaskFlow-Backend
./mvnw verify

O relatório JaCoCo é gerado em:

TaskFlow-Backend/target/site/jacoco/index.html

A suíte foi organizada em três níveis:

  1. Unitários: regras dos services com Mockito.
  2. Repositório: consultas de propriedade e isolamento com @DataJpaTest.
  3. Integração: cadastro, login, JWT, CRUD e tentativa de acesso à tarefa de outro usuário com MockMvc.

Frontend

cd TaskFlow-Frontend
npm run test:ci
npm run build

O relatório de cobertura do frontend é salvo em TaskFlow-Frontend/coverage/.

Configuração de produção

Ative o perfil prod e forneça as variáveis:

SPRING_PROFILES_ACTIVE=prod
JWT_SECRET=...
DB_URL=jdbc:sqlserver://...
DB_USERNAME=...
DB_PASSWORD=...
CORS_ALLOWED_ORIGINS=https://seu-frontend.example

As migrations SQL Server são aplicadas pelo Flyway.

Telas

Tela de login

Dashboard de tarefas

Decisões de segurança

  • Nenhum hash de senha é retornado nos DTOs.
  • Endpoints de perfil operam somente sobre o usuário autenticado.
  • Consultas de tarefa incluem simultaneamente o ID da tarefa e o e-mail do proprietário.
  • Recursos de outro usuário retornam 404, evitando revelar sua existência.
  • Segredos e credenciais são recebidos por variáveis de ambiente.
  • Respostas de erro não expõem stack trace nem mensagens internas.

Autor

Rafael Morangon Bessa LinkedIn · GitHub · Portfólio

About

TaskFlow : Uma API RESTful para gerenciamento de tarefas colaborativas, inspirada em ferramentas como Trello.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages