📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Especialização em Backend com Java e Spring Boot. Recomendado revisar antes de começar.

🚀 Controle de Gastos com Spring Boot e HTMX (v1)

📁 Código deste projeto: web-spring/ (os caminhos citados abaixo são relativos à subpasta).

Diagrama de arquitetura do projeto

v1.0 — CRUD Básico, Spring Data JPA, H2 Database e Server-Driven UI com HTMX

Trilha de Especialização Pedagógica — Projeto 1 de 4

🎓 Nível Profissional Simulado: Desenvolvedor Java Júnior. Todo desenvolvedor backend Java precisa dominar o ecossistema Spring Boot (Controllers, Services, Repositories, JPA Entities). Com HTMX, você constrói aplicações modernas e interativas sem precisar de frameworks JavaScript pesados.


🎯 Objetivo & Escopo do Projeto

Construir do zero a primeira versão (v1) do Sistema de Controle de Gastos Pessoais, implementando operações de cadastro, listagem e exclusão de lançamentos financeiros com Spring Boot 3, persistência com Spring Data JPA, banco em memória H2 e interface reativa com Thymeleaf + HTMX.


🧑‍💼 Fase 1 — Levantamento de Requisitos

O Briefing do Cliente (Usuário Individual de Finanças)

“Preciso de um sistema simples onde eu possa lançar meus gastos do dia a dia com descrição, valor e data. Quero ver a lista dos meus gastos em uma tabela com o valor total somado e poder excluir lançamentos errados clicando em um botão sem a página inteira piscar ou recarregar.”

Requisitos Funcionais (RF) e Não-Funcionais (RNF)

ID Tipo Descrição Origem no Briefing
RF01 Funcional Cadastrar novos lançamentos financeiros (descrição, valor em reais e data). “lançar meus gastos do dia a dia”
RF02 Funcional Listar todos os gastos em ordem cronológica com formatação monetária. “ver a lista dos meus gastos”
RF03 Funcional Excluir um gasto específico com atualização atômica da tabela via HTMX. “excluir lançamentos sem recarregar”
RNF01 Não-Funcional Resposta da interface em menos de 100ms utilizando HTMX swaps (hx-target). Interatividade sem SPA
RNF02 Não-Funcional Banco em memória H2 configurado para inicialização rápida de desenvolvimento. Agilidade Local

📋 Fase 2 — Backlog & User Stories

ID User Story Prioridade
US01 Como usuário, quero cadastrar uma despesa e vê-la adicionada na tabela imediatamente. Alta
US02 Como usuário, quero excluir uma despesa com um clique sem recarregar a tela. Alta

Quadro Kanban da Sprint

User Story To Do Doing Done
US01 — Cadastro de Gastos     ✅
US02 — Exclusão Dinâmica HTMX     ✅

🌿 Fase 3 — Engenharia em Equipe (Git Flow & Setup)

# Branch da funcionalidade
git checkout -b feature/US01-crud-gastos-htmx

# Executar a aplicacao via Maven Wrapper
./mvnw spring-boot:run

🛠️ Fase 4 — Implementação Guiada (GastoController.java)

@Controller
@RequestMapping("/gastos")
public class GastoController {

    private final GastoRepository repository;

    public GastoController(GastoRepository repository) {
        this.repository = repository;
    }

    @GetMapping
    public String listar(Model model) {
        model.addAttribute("gastos", repository.findAll());
        return "gastos/index";
    }

    @PostMapping
    public String criar(@ModelAttribute Gasto gasto, Model model) {
        repository.save(gasto);
        model.addAttribute("gastos", repository.findAll());
        return "gastos/index :: tabela-gastos"; // Retorna apenas o fragmento HTML para o HTMX
    }
}


🚀 Roteiro de Execução

1. Iniciar a Aplicação

cd catalogo_projetos/javaweb_gastos_01_htmx/web-spring
./mvnw spring-boot:run

No Windows (PowerShell):

cd catalogo_projetos\javaweb_gastos_01_htmx\web-spring
.\mvnw.cmd spring-boot:run

2. Acessar e Testar a Reatividade

Abra http://localhost:8080/gastos. Cadastre um novo gasto e observe a adição instantânea na tabela sem recarregamento de página.


🧭 Decisões de Arquitetura (ADRs)


🧪 Testes de Validação & Asserções

# Executar testes unitarios com JUnit 5
./mvnw test

✅ Checkpoint Final

  1. CRUD de gastos persistindo no banco H2.
  2. Requisições HTMX substituindo o fragmento da tabela de forma reativa.

⬅️ Ver Todos os Projetos no Catálogo de Projetos 🏠 Página Inicial do Portal