# 🍨 Sistema de Sorveteria — Backend
Backend do sistema de sorveteria desenvolvido em **Java com Spring Boot**, responsável por gerenciar pedidos, sorvetes, atendentes e relatórios de vendas.
O projeto utiliza **arquitetura em camadas**, **JPA/Hibernate** e expõe uma **API REST** consumida por um frontend em React.
Atualmente, o backend encontra-se **online em ambiente de produção**, publicado em **servidor cloud (Railway)**, integrado a um **banco de dados PostgreSQL**.
O frontend da aplicação está publicado separadamente em **servidor cloud (Vercel)**, consumindo esta API em tempo real.
---
## 🧠 Contexto do Projeto
Inicialmente o sistema foi modelado com a entidade **Cliente**, porém durante a evolução do projeto a regra de negócio foi alterada para **Atendente**, representando o funcionário responsável pelo pedido.
Essa mudança impactou:
- Entidades
- Relacionamentos
- Relatórios
- Fluxo do pedido
---
## 🏗️ Arquitetura
O backend segue o padrão:
Controller → Service → Repository → Database
Estrutura principal:
src/main/java
├─ controller
├─ service
├─ repository
├─ domain
│ ├─ entity
│ └─ dto
└─ exception
- Java 17+
- Spring Boot
- Spring Data JPA
- Hibernate
- PostgreSQL
- Maven
- Swagger (documentação da API)
- Deploy em servidor cloud (Railway)
- Cadastro e listagem de atendentes
- Criação de pedidos
- Adição de sorvetes ao pedido
- Cálculo automático de valores
- Inativação lógica de pedidos e atendentes
- Relatórios:
- Total faturado
- Total por atendente
- Sabores mais vendidos
- Tamanhos mais vendidos
Os relatórios são gerados via queries SQL nativas utilizando projections, garantindo:
- Melhor performance
- Código limpo
- Separação entre entidade e retorno de dados
O backend utiliza PostgreSQL como banco de dados relacional em produção.
Características do banco:
- Banco hospedado em ambiente cloud
- Persistência real de dados
- Integração direta com o backend via JPA/Hibernate
- Relacionamentos normalizados entre entidades
- Queries SQL nativas para relatórios
O banco de dados encontra-se conectado diretamente ao servidor backend em produção.
ATENDENTE (1) ----< (N) PEDIDO (1) ----< (N) SORVETE >---- (1) TAMANHO
|
V
(N) SORVETE_has_SABOR >---- (1) SABOR
- Clone o repositório:
git clone https://github.com/Roggerrs/sistema-sorveteria-
Importe em sua IDE (IntelliJ / Eclipse)
-
Configure as variáveis de ambiente do banco de dados
-
Execute a aplicação:
mvn spring-boot:runA API possui documentação gerada automaticamente com Swagger/OpenAPI, facilitando:
- Visualização dos endpoints
- Validação dos contratos
- Testes durante o desenvolvimento
A API conta com configuração de segurança utilizando Spring Security, aplicando controle de acesso aos endpoints.
A documentação da API é gerada com Swagger/OpenAPI, integrada ao mecanismo de autorização, permitindo testes controlados durante o desenvolvimento.
Essa abordagem garante:
- Organização dos endpoints
- Controle de acesso às operações
- Separação entre documentação e execução da aplicação
-
Frontend React: https://github.com/Roggerrs/sorveteria-frontend
-
Modelagem e SQL do banco: https://github.com/Roggerrs/Sistema-Sorveteria-SQL
✔ API funcional ✔ Arquitetura em camadas ✔ Backend online em produção ✔ Banco PostgreSQL integrado ✔ Servidor cloud (Railway) ✔ Frontend em produção (Vercel) ✔ Comunicação frontend ↔ backend ✔ Pronto para portfólio