Skip to content

RodrigoPresida/agenda-spring-boot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📒 Agenda de Contatos — API REST com Spring Boot

CRUD completo de contatos com Spring Boot 3, PostgreSQL, Swagger e Bean Validation.

Java Spring Boot PostgreSQL Maven Status Testes


Sobre o Projeto

API REST para gerenciamento de uma agenda de contatos. O projeto é uma refatoração de um CRUD original em C# ASP.NET MVC, reescrito em Java com Spring Boot seguindo boas práticas de mercado: separação em camadas, DTOs, validações e tratamento centralizado de erros.

Projeto original (C# MVC): Projeto-MVC--Crud-completo-


Endpoints

Método Rota Descrição
GET /api/contatos Lista todos os contatos
GET /api/contatos/ativos Lista apenas contatos ativos
GET /api/contatos/{id} Busca contato por ID
GET /api/contatos/buscar?nome= Busca por nome (parcial)
GET /api/contatos/categoria/{categoria} Filtra por categoria
POST /api/contatos Cria um novo contato
PUT /api/contatos/{id} Atualiza um contato
DELETE /api/contatos/{id} Remove um contato

Documentação interativa: http://localhost:8080/swagger-ui.html


Modelo de Dados

{
  "nome": "João Silva",
  "telefone": "(11) 99999-9999",
  "email": "[email protected]",
  "categoria": "TRABALHO",
  "ativo": true
}

Categorias disponíveis: PESSOAL · TRABALHO · FAMILIA · OUTRO


Validações

Campo Regra
nome Obrigatório
telefone Obrigatório · formato (99) 99999-9999
email Opcional · deve ser e-mail válido
categoria Obrigatória · deve ser um valor do enum

Erros de validação retornam 400 Bad Request com detalhes por campo.


Stack

Tecnologia Versão Uso
Java 21 Linguagem
Spring Boot 3.5 Framework principal
Spring Data JPA 3.5 Persistência
PostgreSQL 16 Banco de dados
Hibernate 6.x ORM
Bean Validation 3.x Validações
SpringDoc OpenAPI 2.x Swagger / documentação
Lombok latest Redução de boilerplate
Maven 3.x Build

Arquitetura

Controller (HTTP)
    ↓
Service (regras de negócio)
    ↓
Repository (JPA / banco)
    ↓
PostgreSQL
src/main/java/com/rodrigopresida/agenda/
├── config/
│   └── SwaggerConfig.java
├── controller/
│   └── ContatoController.java
├── dto/
│   ├── ContatoRequestDTO.java
│   └── ContatoResponseDTO.java
├── exception/
│   ├── ApiErrorResponse.java
│   ├── ContatoNotFoundException.java
│   └── GlobalExceptionHandler.java
├── model/
│   ├── Categoria.java
│   └── Contato.java
├── repository/
│   └── ContatoRepository.java
├── service/
│   └── ContatoService.java
└── AgendaSpringBootApplication.java

Como Executar

Pré-requisitos

  • Java 21+
  • Maven 3.x
  • PostgreSQL 16+

Configuração do banco

CREATE DATABASE agenda_db;

Configuração da aplicação

Edite src/main/resources/application.properties:

spring.datasource.url=jdbc:postgresql://localhost:5432/agenda_db
spring.datasource.username=seu_usuario
spring.datasource.password=sua_senha

Executar

git clone https://github.com/RodrigoPresida/agenda-spring-boot.git
cd agenda-spring-boot
./mvnw spring-boot:run

A API estará disponível em http://localhost:8080
Swagger UI em http://localhost:8080/swagger-ui.html


Testes

30 testes automatizados com JUnit 5 + Mockito:

Classe Testes Cobertura
ContatoServiceTest 14 Todos os métodos do Service, incluindo cenários de erro
ContatoControllerTest 15 Todos os endpoints REST com MockMvc, validações de request
AgendaSpringBootApplicationTests 1 Smoke test — contexto Spring sobe sem erros

Banco H2 em memória configurado para o ambiente de teste (não requer PostgreSQL).

./mvnw test
# Tests run: 30, Failures: 0, Errors: 0, Skipped: 0 — BUILD SUCCESS

Autor

Rodrigo Cruz dos Santos — Analista de Dados

LinkedIn GitHub

About

API REST de agenda de contatos com Spring Boot 3, PostgreSQL, Swagger e Bean Validation — refatoracao de projeto C# MVC

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages