Este projeto é o backend de um sistema de vendas completo para as "Lojas ACME". Desenvolvido com foco em boas práticas de engenharia de software, o sistema gerencia o catálogo de produtos, controle de estoque, criação de orçamentos com cálculos de impostos e descontos, efetivação de vendas e consultas gerenciais.
A aplicação foi estruturada seguindo os princípios da Arquitetura Limpa (Clean Architecture). Essa abordagem garante um sistema desacoplado, testável e de fácil manutenção, separando as responsabilidades em quatro camadas principais:
- Domínio: O núcleo do sistema. Contém as entidades de negócio (
ClienteModel,OrcamentoModel, etc.) e os serviços de domínio (ServicoDeVendas,ServicoDeEstoque) que encapsulam as regras de negócio mais importantes. - Aplicação: Contém os Casos de Uso (Use Cases, ex:
CriaOrcamentoUC), que orquestram a execução das funcionalidades do sistema, conectando as camadas externas à lógica de domínio. - Adaptadores de Interface: A "cola" do sistema. Inclui o
Controller(que adapta as requisições HTTP para chamadas de Casos de Uso) e as implementações dos Repositórios (que adaptam a necessidade de persistência do domínio para a tecnologia de banco de dados). - Frameworks e Drivers: A camada mais externa, composta por tecnologias como Spring Boot, JPA/Hibernate e o banco de dados H2.
- Java 21: Versão da linguagem Java utilizada no projeto.
- Spring Boot 3.2.3: Framework principal para a criação da aplicação, facilitando a configuração e o desenvolvimento.
- Spring Data JPA & Hibernate: Para a camada de persistência, abstraindo o acesso ao banco de dados e mapeando objetos Java para tabelas (ORM).
- Maven: Ferramenta de gerenciamento de dependências e build do projeto.
- H2 Database: Banco de dados em memória, ideal para ambientes de desenvolvimento e testes rápidos.
- Java Development Kit (JDK): Versão 21 ou superior.
- Apache Maven: Versão 3.9 ou superior (ou utilize o Maven Wrapper incluído).
-
Clone o Repositório (se aplicável):
git clone <URL_DO_REPOSITORIO> cd sistema-vendas
-
Execute com o Maven Wrapper (recomendado): O wrapper garante que a versão correta do Maven seja utilizada.
-
No Linux ou macOS:
./mvnw spring-boot:run
(Se necessário, dê permissão de execução com
chmod +x ./mvnw) -
No Windows:
.\mvnw.cmd spring-boot:run
-
-
A aplicação será iniciada e estará disponível em
http://localhost:8080.
- Página de Boas-vindas: http://localhost:8080/ ou http://localhost:8080/welcome.html
- Aplicação Principal: http://localhost:8080/index.html
- Documentação da API: http://localhost:8080/documentacao.html
- Dependências do Projeto: http://localhost:8080/dependencias.html
É possível acessar o console do banco de dados H2 diretamente pelo navegador para inspecionar as tabelas e os dados em tempo real. Esta funcionalidade está habilitada pela propriedade spring.h2.console.enabled=true em application.properties.
-
Acesse a URL: http://localhost:8080/h2-console
-
Na tela de login, utilize as seguintes configurações, que estão definidas no arquivo
application.properties:- Driver Class:
org.h2.Driver - JDBC URL:
jdbc:h2:mem:testdb - User Name:
sa - Password: (deixe em branco)
- Driver Class:
-
Clique em "Connect". Você poderá executar queries SQL diretamente no banco de dados em memória.
A aplicação expõe uma API REST completa para todas as suas funcionalidades. A documentação detalhada de cada endpoint, incluindo parâmetros e exemplos de resposta, está disponível na Página de Documentação da API.
Exemplos de endpoints:
POST /novoOrcamento: Para criar um novo orçamento.GET /gerencial/volumeVendas?dataInicial=...&dataFinal=...: Para consultar o volume de vendas.GET /todosProdutosStatus: Para listar todos os produtos e seus estoques.