{"id":19739805,"url":"https://github.com/stpfeffer/oms-api","last_synced_at":"2026-01-24T18:03:10.266Z","repository":{"id":219200022,"uuid":"744741910","full_name":"StPfeffer/oms-api","owner":"StPfeffer","description":"Sistema de Gestão de Pedidos (OMS) desenvolvido em Java com Spring, seguindo os princípios da arquitetura limpa.","archived":false,"fork":false,"pushed_at":"2024-05-20T17:40:48.000Z","size":560,"stargazers_count":2,"open_issues_count":2,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-06T01:32:14.909Z","etag":null,"topics":["clean-architecture","java","oms","spring"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/StPfeffer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-17T23:05:24.000Z","updated_at":"2024-05-20T17:40:51.000Z","dependencies_parsed_at":"2024-02-28T02:52:18.408Z","dependency_job_id":"3fb8b87a-b262-4ec8-acdd-0522dac1c430","html_url":"https://github.com/StPfeffer/oms-api","commit_stats":null,"previous_names":["stpfeffer/oms","stpfeffer/oms-inventory"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/StPfeffer/oms-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StPfeffer%2Foms-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StPfeffer%2Foms-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StPfeffer%2Foms-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StPfeffer%2Foms-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/StPfeffer","download_url":"https://codeload.github.com/StPfeffer/oms-api/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StPfeffer%2Foms-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28733350,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T17:51:25.893Z","status":"ssl_error","status_checked_at":"2026-01-24T17:50:48.377Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clean-architecture","java","oms","spring"],"created_at":"2024-11-12T01:18:30.463Z","updated_at":"2026-01-24T18:03:10.238Z","avatar_url":"https://github.com/StPfeffer.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sistema OMS (Order Management System)\n\nEste repositório contém um projeto em andamento para um sistema OMS (Order Management System), desenvolvido utilizando os conceitos de arquitetura limpa e Java com Spring.\n\n## Visão Geral\n\nUm Sistema de Gestão de Pedidos (OMS) é uma aplicação que facilita o processo de gestão e monitoramento de pedidos em um ambiente empresarial. Ele lida com várias etapas do ciclo de vida de um pedido, desde o recebimento inicial até o cumprimento e entrega final. O sistema OMS permite que as empresas controlem e otimizem seus processos de pedidos, gerenciando eficientemente as informações relacionadas aos clientes, produtos, estoques e pedidos em andamento.\n\n## Funcionalidades Previstas\n\nO sistema em desenvolvimento pretende abranger as seguintes funcionalidades:\n\n- **Gestão de Pedidos**: Gerenciamento do fluxo de entrega de um pedido, com a possibilidade de possuir múltiplos fulfillments e canais de vendas.\n- **Gestão de Filiais**: Cadastro e gerenciamento das funcionalidades da filial, tais como capacidade de atendimento, horários e formas de entrega disponíveis.\n- **Gestão de Estoque**: Monitoramento e atualização dos níveis de estoque.\n- **Relatórios e Estatísticas**: Geração de relatórios e análises sobre pedidos, entregas, clientes e produtos.\n\n## Arquitetura Limpa e Tecnologias Utilizadas\n\nO projeto segue os princípios da Arquitetura Limpa, proposta por Robert C. Martin, também conhecido como Uncle Bob. Essa abordagem enfatiza a separação de preocupações e a manutenção da independência das camadas do sistema. A arquitetura limpa promove a escalabilidade, testabilidade e manutenibilidade do código.\n\nAs principais tecnologias utilizadas no projeto incluem:\n\n- **Java**: Linguagem de programação principal.\n- **Spring Framework**: Utilizado para a implementação da infraestrutura da aplicação, injeção de dependências, e configuração de APIs REST.\n- **Hibernate**: Mapeamento objeto-relacional para persistência de dados.\n- **Spring Boot**: Facilita a configuração e inicialização do projeto Spring.\n- **JUnit e Mockito**: Frameworks de teste para garantir a qualidade e robustez do código.\n\n## Estrutura do Projeto\n\nO projeto é dividido em três módulos distintos, cada um com sua responsabilidade bem definida. A estrutura modular permite uma organização clara e a separação de preocupações, facilitando o desenvolvimento, manutenção e escalabilidade do sistema.\n\nA estrutura de packages de cada módulo segue um padrão organizacional consistente, que promove a clareza e a separação de responsabilidades. Abaixo está uma descrição detalhada de cada diretório presente nos módulos:\n\n### Controllers\n\nO diretório `controllers` contém as classes responsáveis por receber requisições HTTP, interagir com os casos de uso apropriados e retornar as respostas adequadas. Eles atuam como a camada de entrada da aplicação e são responsáveis por direcionar o fluxo da requisição para os componentes internos apropriados.\n\n### Domain\n\nO diretório `domain` encapsula a lógica de negócios da aplicação. Ele é dividido em subdiretórios que representam diferentes aspectos do domínio da aplicação:\n\n- **dtos**: Contém os Data Transfer Objects (DTOs), que são utilizados para transferir dados entre diferentes camadas da aplicação e a interface de usuário.\n- **entities (BOs)**: Classes que representam as entidades de negócio do domínio da aplicação. Elas encapsulam o comportamento e as regras de negócio relacionadas a cada entidade.\n- **enums**: Enumerações que definem conjuntos fixos de constantes ou valores que representam propriedades específicas.\n- **exceptions**: Classes que representam exceções específicas do domínio, que podem ser lançadas em caso de erros ou situações excepcionais.\n- **interfaces**: Interfaces que definem contratos para as operações e comportamentos que devem ser implementados pelas classes concretas.\n- **mappers**: Classes responsáveis por mapear objetos de transferência de dados (DTOs) para entidades de negócio e vice-versa.\n- **repositories (somente um contrato)**: Interfaces que definem contratos para acessar e manipular dados no banco de dados. Eles representam abstrações dos mecanismos de persistência de dados.\n- **usecases**: Classes que implementam os casos de uso da aplicação, contendo a lógica de negócios e a coordenação das operações relacionadas a um determinado cenário de uso.\n\n### Infra\n\nO diretório `infra` é responsável pela implementação dos detalhes de infraestrutura da aplicação. Ele inclui subdiretórios que abrigam componentes relacionados à infraestrutura técnica da aplicação:\n\n- **jakarta**: Classes e componentes específicos do Jakarta EE (anteriormente Java EE), como implementações de repositórios, mappers, e modelos de dados.\n    - **mappers**: Classes responsáveis por mapear objetos de domínio para modelos de dados específicos da infraestrutura e vice-versa.\n    - **model (a entidade, como representada no banco)**: Classes que representam os modelos de dados específicos da infraestrutura, como são armazenados no banco de dados.\n    - **repository (a implementação em si)**: Implementações concretas dos repositórios definidos nas interfaces do diretório `domain.repositories`.\n- **services**: Classes que encapsulam a lógica de infraestrutura e serviços técnicos, como acesso a banco de dados, comunicação com APIs externas, entre outros.\n\nEssa estrutura organizacional ajuda a manter um código limpo, coeso e modular, facilitando o desenvolvimento, teste e manutenção do sistema. Além disso, promove uma clara separação de responsabilidades entre os diferentes componentes da aplicação.\n\n### Módulo \"**inventory**\"\n\nO módulo \"inventory\" concentra-se no gerenciamento do estoque dos SKUs (Stock Keeping Units). Suas responsabilidades incluem:\n\n- **Gestão de Estoque**: Implementação das operações para verificar, atualizar e monitorar o estoque dos SKUs.\n### Módulo \"**order**\"\n\nO módulo \"order\" é responsável pelo gerenciamento dos pedidos realizados pelos clientes. Ele depende do módulo \"inventory\" para funcionar corretamente. Suas responsabilidades incluem:\n\n- **Gestão de Pedidos**: Implementação das funcionalidades relacionadas à criação, edição e cancelamento de pedidos.\n- **Dependência do Módulo \"inventory\"**: Utiliza funcionalidades comuns do módulo \"inventory\" para verificar a disponibilidade de produtos em estoque.\n\nA estrutura modular adotada neste projeto promove a reutilização de código, facilita a manutenção e permite que cada parte do sistema seja desenvolvida e testada independentemente das outras. Isso resulta em um código mais limpo, coeso e escalável.\n\n## Como Contribuir\n\nContribuições são bem-vindas! Se você deseja contribuir para este projeto, por favor siga estas etapas:\n\n1. Faça um fork do repositório e clone-o em sua máquina local.\n2. Crie uma branch para a sua feature (`git checkout -b feature/NomeDaFeature`).\n3. Implemente suas alterações e faça commits explicativos (`git commit -am 'Adiciona uma nova feature'`).\n4. Faça push para a branch (`git push origin feature/NomeDaFeature`).\n5. Abra um pull request explicando suas alterações.\n\n## Licença\n\nEste projeto está licenciado sob a [Licença MIT](LICENSE).\n\n---\n\nEsse README fornece uma visão geral do projeto, suas funcionalidades previstas, tecnologias utilizadas, estrutura do projeto, orientações para contribuições e informações sobre a licença. Se você tiver dúvidas ou sugestões, sinta-se à vontade para entrar em contato com os mantenedores do projeto.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstpfeffer%2Foms-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstpfeffer%2Foms-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstpfeffer%2Foms-api/lists"}