Skip to content

falcaofilipe/Desafio-Inlog---Vaga-FullStack-Developer

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 

Repository files navigation

Desafio Inlog - Vaga FullStack Developer 🚀

Considerações Back - End

• O projeto está estruturado em camadas, separando domínio (Domain) e API (WebApi), o que facilita a manutenção e evolução.

• A controller VeiculoController expõe endpoints REST para cadastro e listagem de veículos, seguindo boas práticas de APIs RESTful.

• O uso de modelos fortemente tipados (Veiculo, TipoVeiculo, Coordinates) garante clareza e robustez na manipulação dos dados.

Melhorias realizadas

  1. Modelagem aprimorada do veículo

A classe Veiculo foi expandida para incluir propriedades relevantes como Identifier, LicensePlate, TrackerSerialNumber e um objeto Coordinates para latitude e longitude, tornando o modelo mais completo e aderente a cenários reais.

  1. Ajuste no mapeamento de propriedades

Corrigido o recebimento do campo TipoVeiculo no JSON, garantindo que o valor do tipo de veículo seja corretamente interpretado pela API, seja ajustando o nome do campo no JSON ou utilizando atributos de serialização.

  1. Implementação de armazenamento em memória

Adicionada uma lista estática para simular o armazenamento dos veículos, permitindo testes rápidos e prototipagem sem necessidade de banco de dados.

  1. Configuração de CORS

Orientação para configuração de CORS, permitindo integração segura e funcional com front-ends hospedados em outras origens (ex: React em localhost:3000).

  1. Padronização e clareza

Os nomes das propriedades foram padronizados para facilitar o consumo da API e evitar problemas de binding.

Sugestões para próximos passos

• Implementar persistência em banco de dados para garantir durabilidade dos dados.

• Adicionar validações e tratamento de erros nos endpoints.

• Documentar a API utilizando Swagger (já configurado no projeto).

• Implementar testes automatizados para garantir a qualidade do código.

Considerações Front - End

Centralização e Organização de Tipos (types.ts)

Movi os tipos Vehicle e Coordinates para um arquivo dedicado (types.ts ou interfaces.ts). Atualizei os arquivos que utilizavam esses tipos para importá-los do novo local.

Reutilização: Agora, os tipos podem ser usados em diferentes partes do projeto sem duplicação.

Manutenção: Alterações nos tipos são feitas em um único lugar. Organização: O código ficou mais modular e limpo.

Modularização do MapComponent

Movi a lógica do mapa (MapContainer, TileLayer, Marker) para um componente dedicado chamado MapComponent. O MapComponent agora é responsável por exibir o mapa e os marcadores.

Benefícios:

Separação de responsabilidades: O componente VehicleList ficou mais focado na lógica de listagem. Reutilização: O MapComponent pode ser usado em outras partes do projeto. Escalabilidade: Facilitei a adição de novas funcionalidades ao mapa.

Geolocalização Dinâmica

Adicionei a lógica para obter a localização real do usuário usando a API navigator.geolocation. Configurei um fallback para uma localização padrão (Brasília) caso a geolocalização seja negada ou falhe.

Benefícios:

Melhor experiência do usuário: O mapa é centralizado automaticamente na localização real do usuário. Robustez: O mapa funciona mesmo se a geolocalização for negada ou não suportada. Feedback visual: Adicionei uma mensagem de carregamento enquanto a localização é obtida.

Integração com Redux

Configurei o Redux para gerenciar o estado global da aplicação. Criei slices (vehiclesSlice e userPositionSlice) para gerenciar os estados de veículos e posição do usuário. Conectei os componentes VehicleList e VehicleForm ao Redux.

Benefícios:

Centralização do estado: O estado global é gerenciado em um único lugar, facilitando o acesso e a atualização. Escalabilidade: A estrutura da store permite adicionar novos estados e ações facilmente. Reutilização: Outros componentes podem acessar o estado global sem duplicar lógica.

Correção dos Ícones do Leaflet

Corrigi os caminhos dos ícones padrão do Leaflet (marker-icon.png, marker-icon-2x.png, marker-shadow.png). Garanti que os ícones fossem carregados corretamente.

Benefícios:

Visualização correta: Os marcadores agora são exibidos corretamente no mapa. Experiência do usuário: O mapa ficou mais funcional e visualmente consistente.

Fallback para Carregamento do Mapa

Adicionei um fallback ("Carregando mapa...") no MapComponent enquanto a localização do usuário é obtida.

Benefícios:

Feedback visual: O usuário sabe que o mapa está sendo carregado. Melhor experiência do usuário: O componente é mais responsivo e informativo.

Estrutura do Projeto

Organizei o projeto em pastas e arquivos dedicados:

components/: Componentes reutilizáveis como MapComponent. pages/: Páginas principais como VehicleList e VehicleForm. store/: Configuração do Redux e slices. types.ts: Centralização de tipos e interfaces. jest.config.ts: Configurações do jest. .env: Variáveis de ambiente.

Benefícios:

Organização: O projeto está mais modular e fácil de navegar. Escalabilidade: A estrutura facilita o crescimento do projeto.

Uso de Variáveis de Ambiente

Configurei o uso de variáveis de ambiente (REACT_APP_USE_FAKE_API) para alternar entre a fakeApi e a API real. Adicionei suporte ao arquivo .env.

Benefícios:

Flexibilidade: Permite alternar entre diferentes configurações sem alterar o código-fonte. Boas práticas: Segui as recomendações do Create React App para gerenciamento de variáveis de ambiente.

Estrutura Final do Projeto

image

Overview

Modularidade:

O código está mais organizado e dividido em componentes reutilizáveis.

Manutenção:

Alterações futuras serão mais fáceis, pois cada parte do código está isolada em sua responsabilidade.

Escalabilidade:

O projeto está preparado para crescer, com uma estrutura clara e bem definida.

Melhor experiência do usuário:

O mapa agora suporta localização real e exibe feedback visual enquanto carrega.

Boas práticas:

O código segue padrões recomendados pela comunidade ReactJS e TypeScript.

Sugestões de melhorias

Visual:

Adicionar bibliotecas de UI, responsividade e suporte a temas.

Persistência:

Usar Redux Persist para salvar o estado no localStorage.

Serviço de Tipos de Veículos:

Criar um endpoint e carregar dinamicamente os tipos no formulário.

Mapa:

Adicionar clusters, filtros e informações detalhadas nos popups.

Melhorias Gerais:

Adicionar testes, documentação e configurar o deploy.

About

Desafio FullStack 2025

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 59.3%
  • C# 28.0%
  • HTML 6.9%
  • CSS 3.7%
  • JavaScript 2.1%