API RESTful para gerenciamento de estoque de supermercado, com frontend simples em HTML, CSS e JavaScript.
Objetivo principal: aprender validações, DTOs e tratamento global de exceções em Spring Boot.
- Java 17+
- Spring Boot
- Spring Data JPA (com MySQL)
- Bean Validation (Jakarta Validation)
- MapStruct (Entity ↔ DTO)
- Lombok
- Exception Handling centralizado (@RestControllerAdvice)
- Configuração customizada de CORS
- HTML5
- CSS3
- JavaScript (Fetch API)
- Arquitetura em camadas (Controller, Service, Repository)
- Criação de APIs REST com Spring Boot
- Persistência de dados com JPA/Hibernate
- Validações e tratamento de erros
- Versionamento de código com Git/GitHub
- Criar produto:
POST /market - Listar produtos:
GET /market - Atualizar produto:
PUT /market/{id} - Excluir produto:
DELETE /market/{id} - Buscar por nome:
GET /market/search?name=...
{
"id": 1,
"name": "Arroz Integral",
"description": "Pacote de 5kg",
"price": 25.90,
"quantity": 50,
"date": "2025-09-13"
}src/main/java/com/supermarket/supermarket/controller/MarketController.java– Endpoints REST
service/MarketService.java– Lógica de negócio
repository/MarketRepository.java– Interface JPA
entity/MarketEntity.java– Entidade JPA
dto/MarketCreateDto.java– Dados de entradaMarketResponseDto.java– Dados de saídaApiError.java– DTO de erro
mapper/MarketMapper.java– MapStruct mapeamentos
exception/GlobalExceptionHandler.java– Handler centralizadoResourceNotFoundException.java
CORS/CorsConfig.java– Configuração de CORS
Interface em HTML + CSS + JS que consome os endpoints do backend:
Formulário para cadastrar novos produtos
Tabela dinâmica com listagem
Edição e exclusão de produtos
Busca em tempo real por nome
Notificações de sucesso/erro (toast)
- CLONAR O REPOSITTÓRIO :
git clone https://github.com/seu-usuario/SuperMarket.git - IR PARA O LOCAL DO ARQUIVO :
cd supermarket-api
Crie o banco de dados supermarket no MySQL e configure suas credenciais em src/main/resources/application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/supermarket spring.datasource.username=SEU_USUARIO_AQUI spring.datasource.password=SUA_SENHA_AQUI spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql=true Rodar o Backend
Usando Maven:
mvn spring-boot:run
Ou, se já tiver o .jar gerado:
java -jar target/supermarket-0.0.1-SNAPSHOT.jar
O backend ficará disponível em: http://localhost:8080/market
Abrir index.html diretamente no navegador ou
Usar o Live Server (VSCode) → acessa em: http://localhost:5500
DTOs: separar entrada (CreateDto) e saída (ResponseDto)
Bean Validation: validar dados antes de persistir
Tratamento centralizado de erros: respostas JSON padronizadas com mensagens claras
Padrão em camadas: Controller → Service → Repository
Integração Front + Back: fetch() e JSON