📚 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.
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
- ➡️ v1 (este): CRUD Básico (Criar, Listar, Excluir) · H2 local · Spring Boot 3 + HTMX
- v2: Edição Dinâmica · Tema Claro/Escuro · Padrão
innerHTML- v3: Paginação de Dados · Saldo em Tempo Real · Bean Validation
- v4: Trabalho em Equipe Ágil · Backlog & Sprints · Git Flow · 3 Novas Features
🎓 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.
—`
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.
—`
“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.”
| 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 |
—`
| 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 |
| User Story | To Do | Doing | Done |
|---|---|---|---|
| US01 — Cadastro de Gastos | ✅ | ||
| US02 — Exclusão Dinâmica HTMX | ✅ |
—`
# Branch da funcionalidade
git checkout -b feature/US01-crud-gastos-htmx
# Executar a aplicacao via Maven Wrapper
./mvnw spring-boot:run
—`
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
}
}
—`
No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:
cd javaweb_gastos_01_htmx
./mvnw spring-boot:run
./mvnw test
[!TIP] Dica para execução a partir da raiz do repositório: Se você abriu o repositório completo no VS Code, basta navegar até a pasta antes de executar: cd proj_aplicacoes_full_stack/projetos/javaweb_gastos_01_htmx`
—`
# Executar testes unitarios com JUnit 5
./mvnw test
—`
- CRUD de gastos persistindo no banco H2.
- Requisições HTMX substituindo o fragmento da tabela de forma reativa.
| ⬅️ Ver Todos os Projetos no Super-Hub | 🏠 Página Inicial do Portal |