MathMendesReis / Sistema-de-Gerenciamento-de-Clientes

Este projeto visa criar uma solução eficiente para o gerenciamento de clientes de uma empresa que realiza limpeza em residências. A plataforma é composta por um backend em Node.js utilizando PostgreSQL como banco de dados, e um frontend em React.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Sistema de Gerenciamento de Clientes

Introdução

Este projeto visa criar uma solução eficiente para o gerenciamento de clientes de uma empresa que realiza limpeza em residências. A plataforma é composta por um backend em Node.js utilizando PostgreSQL como banco de dados, e um frontend em React.

Parte 1 - Gerenciamento de Clientes

A empresa utiliza as seguintes informações para gerenciar seus clientes: nome, email e telefone. As funcionalidades implementadas na plataforma incluem:

  • Listagem de clientes com capacidade de filtragem com base nas informações cadastradas.
  • Cadastro de novos clientes.

Parte 2 - Otimização de Rotas de Atendimento

Além do cadastro e visualização de clientes, a empresa deseja otimizar as rotas de atendimento para maximizar a eficiência na visitação dos clientes. Cada cliente possui coordenadas X e Y em um mapa bidimensional.

O algoritmo para calcular a rota, partindo da empresa (0,0) e passando por todas as localizações dos clientes, está disponível via rota da API. Foi implementado um botão na tela de clientes que, ao ser clicado, abre uma modal mostrando a ordem de visitação dos clientes na rota calculada.

Configuração e Execução Local

Para rodar o projeto localmente, siga as instruções abaixo:

Backend (Node.js com PostgreSQL)

Banco de Dados - DDL

A estrutura da tabela no banco de dados PostgreSQL é definida pelo seguinte DDL:

CREATE TABLE cliente_tb (
    id VARCHAR(255) PRIMARY KEY NOT NULL,
    nome VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL,
    telefone VARCHAR(20) NOT NULL,
    rua VARCHAR(255) NOT NULL,
    numero VARCHAR(10),
    bairro VARCHAR(100),
    cidade VARCHAR(100) NOT NULL,
    estado VARCHAR(50) NOT NULL,
    latitude VARCHAR(50) ,
    longitude VARCHAR(50),
    creation_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
);
CREATE TABLE adress_tb (
    id VARCHAR(255) PRIMARY KEY NOT NULL,
    rua VARCHAR(255) NOT NULL,
    numero VARCHAR(10),
    bairro VARCHAR(100),
    cidade VARCHAR(100) NOT NULL,
    estado VARCHAR(50) NOT NULL,
    latitude VARCHAR(50) ,
    longitude VARCHAR(50),
    creation_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
);

Observações Gerais

  • O código fonte está disponível neste repositório.
  • O prazo para realização do teste foi de 3 dias.
  • Preferência para consultas em SQL na API, evitando o uso de ORMs.

Endpoints

FindAllClientes

FindAdress

SortClientsByAdress

RegisterCliente

RegisterAdressStore

Tecnologias utilizadas

TypeScript Vite React React Query React Hook Form TailwindCSS NodeJS Radix UI

Conclusão

Este teste foi desenvolvido para avaliar habilidades básicas e lógica na resolução de problemas. As escolhas e abordagens adotadas foram documentadas para melhor compreensão. Em caso de dúvidas, favor entrar em contato para esclarecimentos adicionais.

About

Este projeto visa criar uma solução eficiente para o gerenciamento de clientes de uma empresa que realiza limpeza em residências. A plataforma é composta por um backend em Node.js utilizando PostgreSQL como banco de dados, e um frontend em React.

License:MIT License


Languages

Language:TypeScript 96.9%Language:JavaScript 2.4%Language:HTML 0.5%Language:CSS 0.1%