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.
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.
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.
Para rodar o projeto localmente, siga as instruções abaixo:
- Clone o repositório: git clone https://github.com/MathMendesReis/-Facilita-Jur-dico.git
- certifique-se que está na pasta faciita-juridico
- necessario ter o docker
- Instale as dependências: npm install
- Execute o servidor: npm run start
- o frontend vai rodar na porta http://localhost:5173/
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
);
- 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.
- Retorna todos os usuarios cadastrados;
- path: http://localhost:3003/cliente
- Retorna o endereço do comercio;
- path: http://localhost:3003/cliente/adress
- Retorna os clientes ordenados por proximidade da loja;
- path: http://localhost:3003/cliente/sort'
- Adiciona um novo cliente ao sistema;
- methodo : post
- path: http://localhost:3003/cliente/register'
- Registra um novo endereço da loja;
- methodo : post
- path: http://localhost:3003/register/adress'
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.