{"id":22125920,"url":"https://github.com/neemiasborges/csharp_clientproductmanager","last_synced_at":"2026-05-06T20:36:52.802Z","repository":{"id":246459651,"uuid":"818421380","full_name":"NeemiasBorges/CSharp_ClientProductManager","owner":"NeemiasBorges","description":"sistema de gerenciamento de clientes e produtos desenvolvido em C# com Windows Forms e .NET. Permite cadastrar, editar, remover e listar clientes e produtos, além de registrar e listar vendas. Utiliza PostgreSQL para persistência de dados e segue a Clean Architecture.","archived":false,"fork":false,"pushed_at":"2024-07-15T00:26:09.000Z","size":64185,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T08:16:45.584Z","etag":null,"topics":["clean-architecture","clean-code","csharp","postgresql","studies","tdd","testing"],"latest_commit_sha":null,"homepage":"","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NeemiasBorges.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-06-21T20:19:53.000Z","updated_at":"2024-07-15T00:46:51.000Z","dependencies_parsed_at":"2024-07-15T01:44:40.181Z","dependency_job_id":null,"html_url":"https://github.com/NeemiasBorges/CSharp_ClientProductManager","commit_stats":null,"previous_names":["neemiasborges/si_gerenciamentoclientprodutos","neemiasborges/csharp_clientproductmanager"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/NeemiasBorges/CSharp_ClientProductManager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NeemiasBorges%2FCSharp_ClientProductManager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NeemiasBorges%2FCSharp_ClientProductManager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NeemiasBorges%2FCSharp_ClientProductManager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NeemiasBorges%2FCSharp_ClientProductManager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NeemiasBorges","download_url":"https://codeload.github.com/NeemiasBorges/CSharp_ClientProductManager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NeemiasBorges%2FCSharp_ClientProductManager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32711625,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T19:35:05.142Z","status":"ssl_error","status_checked_at":"2026-05-06T19:35:03.996Z","response_time":117,"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","clean-code","csharp","postgresql","studies","tdd","testing"],"created_at":"2024-12-01T16:41:07.948Z","updated_at":"2026-05-06T20:36:52.783Z","avatar_url":"https://github.com/NeemiasBorges.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Documentação do Sistema [For study purposes]\n\n## Requisitos do Sistema\n\n#### Gerenciamento de Clientes\n- **Cadastrar Cliente**: Permite a inclusão de novos clientes com as seguintes informações: nome, endereço, telefone e email.\n- **Editar Cliente**: Permite a modificação das informações de clientes já cadastrados.\n- **Remover Cliente**: Permite a exclusão de clientes do sistema.\n- **Listar Clientes**: Permite o sistema de listar todos os clientes ja criados\n\n#### Gerenciamento de Produtos\n- **Cadastrar Produto**: Permite a inclusão de novos produtos com as seguintes informações: nome, descrição, preço e estoque.\n- **Editar Produto**: Permite a modificação das informações de produtos já cadastrados.\n- **Remover Produto**: Permite a exclusão de produtos do sistema.\n- **Listar Produtor**: Permite o sistema de listar todos os produtos criados pelo usuario\n\n#### Realização de Vendas\n- **Registrar Venda**: Permite a realização de vendas registrando o cliente, os produtos e a quantidade, preço de cada item vendido.\n- ** Listar Vendas**: Permite listar todas as vendas ja feitas pelo usuario\n\n### Relatórios\n- **Relatório de Vendas**: Gera um relatório detalhando a venda realizada, incluindo informações sobre o cliente,produto,preço e quantidade total no documento.\n\n\n## Requisitos Técnicos e Linguagens utilizads\n\n- **Linguagem de Programação**: C#\n- **Interface Gráfica**: Windows Forms com MetroSet_UI\n- **Banco de Dados**: PostgreSQL versão 16.3-2\n- **Driver de Conexão com PostgreSQL**: NPGSQL 8.03\n- **Ferramenta de Relatórios**: ReportViewer RDLC 17.0.0\n- **Arquitetura escolhida**: Clean Architecture\n- **Testes**: MSTest e Moq para testes\n- **Logging e Alertas**: SEQ\n\n## System Design\n\n![image](https://github.com/NeemiasBorges/SI_GerenciamentoClientProdutos/assets/51499704/04d6e6ba-6cf0-4cf2-b8cc-5bdd5deceb68)\n\n\n## Estrutura do Banco de Dados e Tabelas\n\n### clientes\n\n| Coluna      | Tipo                  | Descrição                |\n|-------------|-----------------------|--------------------------|\n| id          | integer               | Identificador único      |\n| nome        | character varying(100)| Nome do cliente          |\n| id_endereco | integer               | Referência ao endereço   |\n| id_telefone | integer               | Referência ao telefone   |\n| email       | character varying(100)| Email do cliente         |\n\n### contato\n\n| Coluna      | Tipo                  | Descrição                  |\n|-------------|-----------------------|----------------------------|\n| id          | integer               | Identificador único        |\n| nome        | character varying(100)| Nome do contato            |\n\n### endereco\n\n| Coluna      | Tipo                  | Descrição                  |\n|-------------|-----------------------|----------------------------|\n| id          | integer               | Identificador único        |\n| nome        | character varying(100)| Nome do endereço           |\n\n### produto\n\n| Coluna      | Tipo                  | Descrição                  |\n|-------------|-----------------------|----------------------------|\n| id          | integer               | Identificador único        |\n| nome        | character varying(100)| Nome do produto            |\n| descricao   | character varying(255)| Descrição do produto       |\n| preco       | numeric(10,2)         | Preço do produto           |\n\n### vendas\n\n| Coluna      | Tipo                  | Descrição                      |\n|-------------|-----------------------|--------------------------------|\n| id          | integer               | Identificador único            |\n| data_criacao| timestamp             | Data de criação da venda       |\n| id_usuario  | integer               | Identificador do usuário       |\n| id_cliente  | integer               | Identificador do cliente       |\n\n### vendascorpo\n\n| Coluna      | Tipo                  | Descrição                      |\n|-------------|-----------------------|--------------------------------|\n| id          | integer               | Identificador único            |\n| id_venda    | integer               | Referência à venda             |\n| id_produto  | integer               | Referência ao produto          |\n| id_estoque  | integer               | Referência ao estoque          |\n| quantidade  | double precision      | Quantidade do produto          |\n| preco       | numeric(10,2)         | Preço do produto na venda      |\n\n## Estrutura do Projeto e Pastas\n\nAbaixo está a estrutura de pastas do projeto, organizada de acordo com a minha interpretação da Clean Architecture:\n\n```\n/src\n├── scriptsSQL.sql\n├── /UnitTests\n│   ├── DominioTest\n│   ├── ApplicationTest\n├── /Dominio\n│   ├── /Entidades\n├── /Aplicacao\n│   ├── /DTO\n│   ├── /Interfaces\n│   ├── /Services\n├── /Repositorio\n│   ├── /Exceptions\n│   ├── /Infra\n│   └── /Interfaces\n├── /View\n│   ├── /Views\n│   └── /Forms\n│   ├── /Scripts\n│   ├── /Content\n│   ├── /Database\n│   ├── /Fonts\n│   ├── /Relatorios/\n│   ├───── /PedidoVenda\n└── /Infraestrutura\n    ├── /Configuracoes\n    ├── /Logging\n    └── /Integracoes\n```\n\n### 1. Configuração do Ambiente\n\n1. Instale o [PostgreSQL](https://www.postgresql.org/docs/current/release-16-3.html) versão 16\n\n2. Instale e configure o [SEQ](https://datalust.co/seq) para logging e alertas\n   ![image](https://github.com/NeemiasBorges/SI_GerenciamentoClientProdutos/assets/51499704/2a444ea4-b8a9-4ea6-8fbb-c4067729b2f1)\n\n### 2. Conexão com o Banco de Dados\nA conexão com o banco de dados PostgreSQL é realizada através do NPGSQL. Para fazer a conexao com o banco de dados, devemos configurar a String de Conexao no arquivo `App.config` localizado na camada `View`\nDeve se alterar a tag PorstgresConnection\n\n\n#### 3. Configuração do SEQ (Opcional)\nCaso deseje configurar tambem o ``Seq``, basta no mesmo arquiv `App.config` alterar a key Serilog:SeqUrl\n \n### 4. Configurando o Banco de Dados\nExecute os scripts SQL fornecidos na pasta raiz com o nome de `scriptsSQL` para criar as tabelas necessárias no PostgreSQL.\n\nNo momento de configurar o projeto e criar o script, adicionei alguns registros previos nas tabelas para facilitar a primeira utilização do sistema\n\n\n\n### 5. Testes\nOs testes unitários e de integração são realizados na camada de Tests importando os objetos da camada de Applicação (DTO) e os de Modelagem na camada Dominio (Entidade)\nPara executar os testes basta Clicar com o botão direito na camada e selecionar ‘Executar Testes’\n\n\n### 6. Executando o Sistema\nAbra o projeto no Visual Studio, configure a string de conexão no código e execute o projeto. A interface gráfica será exibida, permitindo a utilização das funcionalidades descritas acima.\n\n#### Clientes\n- **Cadastro/Edição/Exclusão**\n- ![clienteGIF](https://github.com/NeemiasBorges/SI_GerenciamentoClientProdutos/assets/51499704/b7a3facf-43e9-46fa-a350-83539c5e4d05)\n\n#### Produtos\n- **Cadatro/Edição/Exclusão/Listar**\n- ![produto](https://github.com/NeemiasBorges/SI_GerenciamentoClientProdutos/assets/51499704/cb4f53cc-6a82-4d33-9a84-3550f4dc78c2)\n  \n#### Vendas\n- **Cadatro/Edição/Listar**\n- ![vendas](https://github.com/NeemiasBorges/SI_GerenciamentoClientProdutos/assets/51499704/99d7a6d3-4b97-4124-80ce-7f2fd6a2f11c)\n\n### Relatórios\n- ![relatorio](https://github.com/NeemiasBorges/SI_GerenciamentoClientProdutos/assets/51499704/be133622-234b-4ca5-a8e6-61b98505338a)\n\n***\n\n## Contato\nentre em contato comigo através dos seguintes canais:\n\n- E-mail: neemiasb.dev@gmail.com\n- Telefone: +55 11 96292-6357\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneemiasborges%2Fcsharp_clientproductmanager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneemiasborges%2Fcsharp_clientproductmanager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneemiasborges%2Fcsharp_clientproductmanager/lists"}