Este repositorio entrega a Etapa 1 do TP com uma aplicacao monolitica composta por:
- Backend Spring Boot com arquitetura em camadas (
controller,service,repository). - API REST para gerenciamento de tarefas.
- Frontend React para consumo da API e interacao do usuario.
- Base de DDD com separacao por contexto (
tarefas) e estrutura pronta para evolucao.
O objetivo desta etapa e consolidar fundamentos de:
- autoconfiguracao do Spring Boot,
- gerenciamento de dependencias,
- padronizacao de APIs REST,
- codigo limpo e manutencao,
- modelagem de dominio pensando em migracao futura para microsservicos.
- Implementacao de aplicacao Spring Boot em camadas.
- Uso de auto-configuracao e starters oficiais.
- Gerenciamento de dependencias com Maven e NPM.
- API REST com Spring MVC e validacao de payload.
- Tratamento global de erros com contrato padrao.
- Modelagem de dominio com contexto delimitado (DDD enxuto).
- Frontend React integrado ao backend.
Pacotes principais:
com.tp1.monolito.tarefas.domain: entidades e contratos do dominio.com.tp1.monolito.tarefas.application: servicos, DTOs e mapeamentos.com.tp1.monolito.tarefas.infrastructure: persistencia JPA.com.tp1.monolito.tarefas.interfaces: camada REST.com.tp1.monolito.shared: excecoes e padrao de resposta de erro.
Decisoes tecnicas:
Taskcomo entidade principal.TaskStatuscomo enum de negocio (TODO,IN_PROGRESS,DONE).- DTOs (
TaskRequest,TaskResponse) para nao expor entidade JPA diretamente. @ControllerAdvicepara padronizar erros HTTP.- H2 em memoria para execucao simples nesta etapa.
- Vite para build e dev server.
- Axios para chamadas HTTP.
- Componentes separados:
TaskFormpara criacao/edicao.TaskListpara listagem e acoes.
- Proxy
/apino Vite para integrar localmente com backend em:8080.
.
|-- backend
| |-- pom.xml
| `-- src
| |-- main
| | |-- java/com/tp1/monolito
| | `-- resources/application.yml
| `-- test
| |-- java/com/tp1/monolito
| `-- resources/application-test.yml
|-- frontend
| |-- package.json
| |-- vite.config.js
| `-- src
| |-- api/taskApi.js
| |-- components/TaskForm.jsx
| |-- components/TaskList.jsx
| |-- App.jsx
| `-- main.jsx
`-- README.md
- Backend: Java 17, Spring Boot 3.3.5, Spring Web, Spring Data JPA, Bean Validation, H2.
- Frontend: React 18, Vite 5, Axios.
- Testes: JUnit 5, Mockito, Spring Boot Test + MockMvc.
- Java 17+
- Maven 3.9+
- Node.js 20+
cd backend
mvn spring-boot:runDisponivel em: http://localhost:8080
cd frontend
npm install
npm run devDisponivel em: http://localhost:5173
Base URL: http://localhost:8080/api/tasks
GET /api/tasks: lista tarefas ordenadas por prazo e id.GET /api/tasks/{id}: busca tarefa por id.POST /api/tasks: cria uma nova tarefa.PUT /api/tasks/{id}: atualiza tarefa existente.DELETE /api/tasks/{id}: remove tarefa.
{
"title": "Entregar Etapa 1",
"description": "Aplicacao monolitica com Spring Boot e React",
"status": "TODO",
"dueDate": "2030-01-10"
}{
"id": 1,
"title": "Entregar Etapa 1",
"description": "Aplicacao monolitica com Spring Boot e React",
"status": "TODO",
"dueDate": "2030-01-10",
"createdAt": "2030-01-02T10:15:30",
"updatedAt": "2030-01-02T10:15:30"
}title: obrigatorio, maximo 120 caracteres.description: opcional, maximo 500 caracteres.status: obrigatorio (TODO,IN_PROGRESS,DONE).dueDate: obrigatorio, data atual ou futura.
Backend:
- Testes unitarios de servico.
- Testes de integracao de controller com MockMvc.
Comando:
cd backend
mvn testFrontend:
cd frontend
npm run buildO projeto inclui pipeline GitHub Actions em .github/workflows/ci.yml com:
- build e testes do backend (
mvn test); - build do frontend (
npm run build); - execucao automatica em
pushepull_request.
Este monolito ja foi estruturado para facilitar separacao futura por bounded contexts:
- extracao do contexto
tarefaspara servico independente; - troca do H2 por PostgreSQL;
- adicao de gateway, descoberta de servicos e mensageria;
- autenticacao/autorizacao centralizada.
- Turma TP1 PB-2026