📌 Descrição
Este projeto é uma API REST desenvolvida com Java + Spring Boot, utilizando arquitetura MVC, com autenticação baseada em JWT (JSON Web Token) e persistência de dados em PostgreSQL.
O sistema simula um mercado online, onde:
- Administradores gerenciam produtos (CRUD completo).
- Clientes podem se cadastrar, autenticar, visualizar produtos e realizar compras.
- Java 25
- Spring Boot
- Spring Web
- Spring Data JPA
- Spring Security
- JWT (JSON Web Token)
- PostgreSQL
- Maven
O projeto segue o padrão MVC (Model-View-Controller):
src/
├── controller → Camada de entrada (requisições HTTP)
├── service → Regras de negócio
├── repository → Acesso ao banco de dados
├── model → Entidades (JPA)
├── dto → Transferência de dados
└── security → Configurações de segurança e JWTsrc/
├── controller → Camada de entrada (requisições HTTP)
├── service → Regras de negócio
├── repository → Acesso ao banco de dados
├── model → Entidades (JPA)
├── dto → Transferência de dados
├── security → Configurações de segurança e JWT
A autenticação é feita via JWT, onde:
- O usuário realiza login e recebe um token
- O token deve ser enviado no header:
Authorization: Bearer
Perfis de Usuário:
- "ADMIN" → Pode cadastrar, listar e remover produtos
- "CLIENT" → Pode visualizar produtos e realizar compras
👤 Cliente
- Cadastro de usuário
- Login
- Listagem de produtos
- Escolha/compra de produtos
🛠️ Administrador
- Cadastro de produtos
- Listagem de produtos
- Exclusão de produtos
O sistema utiliza PostgreSQL.
Configuração (application.properties):
spring.datasource.url=jdbc:postgresql://localhost:5432/mercado_db
spring.datasource.username=seu_usuario
spring.datasource.password=sua_senha
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
- Senhas criptografadas com BCrypt
- Autenticação stateless com JWT
- Filtros de segurança com Spring Security
- Lucas Vieira
- Mateus
- Desenvolvido para fins de estudo em Spring Boot + Segurança com JWT + Arquitetura MVC.
Este projeto é de uso educacional.