Skip to content

Aplicação Web para gerenciamento de dívidas de clientes, inclui interfaces web feitas com html css js e react, uma web api com asp.net em c# e um banco de dados postgresql, a conexão entre banco e api é feita via ORM NHibernate.

Notifications You must be signed in to change notification settings

samubarreto/Vendinha-Samu

Repository files navigation

Aplicação Web para administração de Clientes e suas Dívidas💵

Vendinha Fullstack do Samu 😎

Prints
Interface principal

image


Paginamento/Pesquisa com grid dinâmico de acordo com a quantidade de clientes na tela

image image image image image


Inserção de Cliente

image


Edição de Cliente

image


Exclusão de Cliente

image


Edição/Remoção/Inserção de Imagem de Perfil de Cliente

image image image


Tabela de Dívidas de um cliente inadimplente

image


Tabela de Dívidas de um cliente adimplente

image


Confirmação de Baixa de Dívida em Aberto

image


Inserção de Dívida

image


Edição de Dívida

image


Exclusão de Dívida

image


Interface de Página não encontrada

image


Resumo do Projeto
  • Interface web com HTML, CSS, JS e REACT.JS
  • Uma WEB API REST, feita com ASP.NET em C#
  • Um banco de dados PostgreSQL para permanencia de dados via ORM NHibernate
  • Organiza e administra Dívidas de Clientes

Features
  • Paginação de 10 em 10 clientes
  • Busca de Clientes
  • Ordenação de Cliente com maior somatório de dívidas para menor
  • Exibição dinâmica para buscas/páginas com 8, 6, 4, 2, 1 e 0 clientes (Busque por: "Retorna8", "Retorna6", "Retorna4", "Retorna2", "Retorna1", "Retorna0" Para ver)
  • Fácil Cadastro, Cdição e Remoção de Clientes
  • Adição, alteração e remoção de imagem de perfil de Cliente
  • Paginação de 10 em 10 dívidas de clientes
  • Fácil Cadastro, Edição, Baixa e Remoção de Dívidas de um Cliente
  • Limitação automática de 200 reais de somatório de dívidas de um Cliente

To do List
PLANEJAMENTO INICIAL
  • Organizar o ínicio do README.md, com as regras e requisitos já préviamente analisados
  • Montar diagrama geral da aplicação
BANCO
  • Desenvolver schema.sql das Tabelas Clientes e Dívidas
  • Gerar Inserts de Mockup para clientes e dívidas
  • Desenvolver triggers e funções para validações à nível de banco e auxiliares
BACKEND BASE
  • /Console/Entidades
  • /Console/Mappings
  • /Console/Services
BACKEND ENDPOINTS CLIENTES
  • READ [+Postman Collection]
  • CREATE [+Postman Collection]
  • UPDATE [+Postman Collection]
  • DELETE [+Postman Collection]
URGÊNCIAS
  • Urgente: Refatorar Email, não é NOT NULL, é NULLABLE, oreiei, não vi direito o requisito
  • Urgente: Fazer checagem de Data de Nascimento < hoje no back e banco
  • Urgente: Refatoração dos retornos de erro, usar o ValidationResult certo (junto com um HandleException cabuloso, retornando o membername sempre, pra facilitar no front)
  • Urgente: Validar CPF na API (usei uma tal de biblioteca Cpf.Cnpj muito foda, documentação brasileira, não validei 100% a nível de banco pois daria um trabalho inifinito, no banco só valida se tem 11 dígitos)
  • Ter certeza que não estou esquecendo de nada (Eu acho que não esqueci de nada)
BACKEND ENDPOINTS DÍVIDAS
  • READ DÍVIDAS/{idcliente} [+Postman Collection]
  • CREATE [+Postman Collection]
  • UPDATE [+Postman Collection]
  • DELETE [+Postman Collection]
FRONTEND PROTÓTIPO
  • Prototipar Interface do grid de cards de clientes
  • Prototipar Interface de tabela de dívidas de um cliente
  • Prototipar Modal de Formulário de Inserção/Edição de Cliente/Dívida
  • Prototipar Modal de Confirmação de Inserção/Edição/Baixa/Exclusão de Cliente/Dívida
REFATORAÇÕES IMPORTANTES GERAIS
  • Refatorar: Protótipo, banco e mapeamento do Back para armazenar caminho da imagem de perfil do cliente na tabela cliente
  • Refatorar totalmente o banco e backend para imagem de perfil [+Postman Collection]
  • Refatorar banco, adicionar deleção em cascata do cliente, pra ser possível apagar mesmo que tenha dívidas
  • Refatorar banco, para ter uam coluna do somatório de dívidas de um cliente 🙂
FRONTEND
  • Desenvolver componente de header
FRONTEND CLIENTES
  • Desenvolver HTML e CSS da interface do grid de cards de clientes, componente de card de cliente
  • Adicionar funcionalidade de listagem dinâmica dos clientes (fetch+paginamento/busca)
  • Confirmação de exclusão (e recarregar página)
  • Formulário de edição de cliente (e recarregar página)
  • Formulário de edição de imagem de cliente (e recarregar página)
  • Formulário de inserção de cliente (e recarregar página)
  • Roteamento para levar do botão de somatório de dívidas para a página de tabela de dívidas e vice-versa (ir e voltar, rotear)
FRONTEND DÍVIDAS
  • Desenvolver HTML e CSS da interface da tabela de dívidas de um cliente, componente de tabela de dívidas de um cliente
  • Refatorar Backend endpoint de dívidas by idcliente, pra retornar da forma correta e com skip page size aplicados para paginação no front
  • Adicionar funcionalidade de listagem dinâmica dos clientes (fetch+paginamento)
  • Reaplicar confirmação de exclusão de cliente (e voltar para /clientes/)
  • Reaplicar formulário de edição de cliente (e recarregar página)
  • Confirmação de exclusão de dívida (e recarregar página)
  • Confirmação de baixa de dívida (e recarregar página)
  • Formulário de edição de dívida (e recarregar página)
  • Formulário de inserção de dívida (e recarregar página)
CHECKUP FRONTEND
  • CRUD Clientes no front finalizado e validado
  • CRUD Dívidas no front finalizado e validado
DOCUMENTAÇÃO E ENTREGA
  • Exportar Collection do Postman
  • Documentar o motivo de uso das Libs
  • Documentar as instruções de uso da aplicação Vendinha Fullstack Interfocus 😎
  • Entregar repositório

Instruções de Uso/Execução
  1. Tenha o GIT instalado:
https://git-scm.com/download/win
  1. Tenha o SDK do DOTNET 8.0 instalado:
https://dotnet.microsoft.com/pt-br/download
  1. Tenha o NPM instalado:
https://docs.npmjs.com/downloading-and-installing-node-js-and-npm
  1. Tenha uma IDE para Postgresql instalada, recomendo o pgAdmin:
https://www.pgadmin.org/download/pgadmin-4-windows/
  1. Caso tenha acabado de instalar algum dos itens acima, reinicie seu computador
  2. Abra um terminal e clone o repositório:
git clone https://github.com/samubarreto/Vendinha-Samu.git
  1. Acesse o diretório do repositório clonado:
cd .\Vendinha-Samu\
  1. Abra o diretório atual no Explorador de Arquivos pra facilitar a explicação:
explorer .
  1. Abra o arquivo schema.sql com qualquer editor de texto/código (Bloco de notas)
  2. Abra sua IDE do Postgresql (pgAdmin)
  3. Registre um novo servidor com as seguintes informações:
  • Nome: localhost(qualquer nome)
  • Host: 127.0.0.1
  • Porta: 5432
  • Senha: samu123
  1. Conecte-se ao servidor registrado crie um banco de dados com nome = vendinha_samu
  2. Abra uma nova Querry para o banco vendinha_samu:
  • Cole o conteúdo do schema.sql e execute
  1. Volte para o explorador de arquivos, no diretório root (Vendinha-Fullstack-Interfocus), abra o terminal e siga os comandos:
cd .\Vendinha-Samu.Backend\
cd .\Vendinha_Samu.Api\
dotnet watch run
  1. Veja quais são os 4 números de porta da URL da api iniciada:
https://localhost:7258/api/clientes
  1. Caso os 4 números após o : sejam "7258", como a url acima, pule para o passo 18

  2. Caso contrário, copie esses 4 números e substitua a porta da URL na primeira linha do arquivo "\Vendinha-Samu\Vendinha-Samu.Frontend\src\services\general.js" pela porta copiada.

  3. Se estiver tudo certo, a API deve estar rodando agora.. Perfeito

  4. Volte para o explorador de arquivos, no diretório root (Vendinha-Fullstack-Interfocus), abra outro terminal e siga os comandos:

cd .\Vendinha-Samu.Frontend\
npm i vite
npm run dev
  1. Provavelmente as imagens de perfil não deverão carregar, depende apenas do seu navegador, pra resolver copie e cole o link abaixo noutra guia, aceite os acessos, volte para a guia da Vendinha e recarregue a página:
https://127.0.0.1:7258/profile_pics/profile_placeholder.png
  1. Se estiver tudo certo, tanto o banco, quanto a API Backend e o Frontend devem estar rodando perfeitamente agora, pronto pra gerenciar dívidas de clientes no seu navegador 🤠
  2. Sinta-se livre para importar a Collection do Postman, disponível em /Vendinha-Samu.postman_collection.json para testar os endpoints

Justificativa de uso das Bibliotecas/Pacotes/Etc...
  • CPF.CNPJ
    • Usei ela no dotnet pra validar o cpf muito facilmente, documentação brasileira, criei um novo DataValidation dentro do GeneralServieces using a lib, mole demais:
using CpfCnpjLibrary;

Cpf.Validar("08597471077"); // True
  • NHibernate

    • É um ORM, serve pra mapear objetos C# em entidades (tabelas) Postgres
    • Usamos ele pois a muitos anos atrás o EF, entity-framework não fazia migrações de bancos de dados Postgres.. Então usamos o NHibernate
    • Possibilita fazer consultas, inserções, deleções, updates e mais sem precisar escrever DQL, DML, DDL no C#
  • Npgsql

    • Permite estabelecer conexões com bancos de dados Postgres no dotnet
  • React

    • Biblioteca utilizada para o desenvolvimento do Frontend, possibilita a divisão dos arquivos em componentes e fornece hooks como o useState, useEffect, useRegular para gerenciamento de estado mais facilmente. Modular e reutilizável.
  • simple-react-routing

    • Biblioteca do React usada no lugar do react-router-dom para definição simplificada das rotas.

Dê um git pull -ff sempre que possível para usar a versão mais atualizada

My Skills

LinkedIn

About

Aplicação Web para gerenciamento de dívidas de clientes, inclui interfaces web feitas com html css js e react, uma web api com asp.net em c# e um banco de dados postgresql, a conexão entre banco e api é feita via ORM NHibernate.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published