Skip to content

DaviSantos-Dev/order-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 

Repository files navigation

Order Manager

📌 Overview

Order Manager é um sistema de gerenciamento de pedidos desenvolvido como projeto de evolução técnica em backend Java.

O foco principal do projeto é aplicar princípios de arquitetura, separação de responsabilidades e desacoplamento entre camadas. A aplicação iniciou como uma estrutura simples e foi refatorada para suportar crescimento sustentável, preparando o terreno para se tornar uma API usando Spring Boot e JPA.

Além do objetivo técnico, o projeto poderá evoluir para auxiliar no gerenciamento de pedidos da sorveteria da minha irmã, servindo como aplicação prática do que está sendo desenvolvido.


🎯 Objetivo do Projeto

Este projeto tem como finalidade:

  • Aplicar conceitos de orientação a objetos
  • Aplicar princípios arquiteturais inspirados em Clean Architecture
  • Praticar desacoplamento entre regras de negócio e infraestrutura
  • Servir como ponte para aprendizado de JDBC, JPA e Spring Boot
  • Evoluir gradualmente para uma API REST

O sistema começou como laboratório de estudo e está sendo evoluído de forma incremental.


🏗 Arquitetura

O projeto está estruturado em camadas:

  • domain → Entidades, regras de negócio, enums e exceções
  • usecase → Orquestração das ações do sistema
  • repository → Interfaces que definem contratos de persistência
  • infra → Implementação de banco de dados
  • ui → Interação via console

Princípios aplicados

  • Separação clara de responsabilidades
  • Dependência de abstrações (use cases dependem de interfaces)
  • Regras de negócio concentradas no domínio
  • Infraestrutura desacoplada da lógica principal

🚀 Funcionalidades Atuais

  • Cadastro de clientes
  • Validação básica de autenticação
  • Criação de pedidos
  • Associação de produtos ao pedido
  • Salvar pedidos, produtos e clientes em banco de dados SQL

🛠 Tecnologias Utilizadas

Atualmente

  • Java 17
  • Programação Orientada a Objetos
  • Arquitetura em camadas
  • JDBC
  • MySQL

Planejadas

  • JPA (Hibernate)
  • Spring Boot
  • PostgreSQL
  • Testes unitários (JUnit)
  • API REST

🔄 Roadmap

  • Implementação com JDBC (MySQL)
  • Migração para JPA
  • API REST com Spring Boot
  • Implementação de testes unitários
  • Integração com frontend simples
  • Implementação de desconto para clientes VIP
  • Sistema de frete
  • Evolução da autenticação

⚙️ Decisões Técnicas

Persistência em MySQL para facilitar a implementação com JDBC.

Script SQL de criação do banco de dados para garantir que o sistema funcione em outras máquinas.

Uso de PreparedStatement para evitar SQL injection.

A geração de ID foi delegada ao banco de dados, e atribuida ao objeto após salvo no banco.

Foi criada uma BusinessRuleException para diferenciar falhas de regra de negócio de erros técnicos do sistema.


📚 Aprendizados

Durante o desenvolvimento, o projeto passou por uma mudança estrutural significativa.

Inicialmente, todas as classes estavam concentradas em uma única pasta, o que dificultava manutenção e crescimento. A reorganização em camadas marcou um ponto de virada, tornando o sistema mais previsível e sustentável.

Entre os principais aprendizados:

  • Importância da separação de responsabilidades
  • Benefícios do desacoplamento via interfaces
  • Posicionamento correto das regras de negócio
  • Diferença entre erro técnico e violação de regra
  • Planejamento arquitetural antes do crescimento

O projeto representa uma transição de código funcional para código estruturado.


▶️ Como Executar

Pré-requisitos

  • JDK 17
  • MySQL Server ou WAMP Server

Passos

git clone https://github.com/DaviSantos-Dev/order-manager.git Abrir o projeto na IDE (preferencialmente IntelliJ) e executar a classe Main. A aplicação é configurada automaticamente e inicia via console.

📌 Status

Projeto em evolução contínua, utilizado como laboratório técnico e futura aplicação prática.

About

Projeto criado como exercício pessoal em Java para praticar POO, regras de negócio e arquitetura de sistemas.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages