Você pode baixar usando o seguinte comando no seu terminal:
-> git clone https://github.com/DevGabiMrqs/technical-assessment-dev-main.git
Antes de iniciar o projeto, certifique-se de ter todas as dependências instaladas.
Você pode instalá-las executando:
-> npm install
Depois de instalar as dependências, você pode iniciar o projeto com o seguinte comando:
-> npm run dev
Isso iniciará o projeto e você poderá acessá-lo em http://localhost:3000.
--
Olá desenvolvedor(a)! Bem-vindo(a) ao Desafio Técnico do OZmap. Este é um projeto que simula um cenário real de nossa empresa, onde você irá desempenhar um papel crucial ao desenvolver uma API RESTful robusta para gerenciar usuários e localizações. Estamos muito animados para ver sua abordagem e solução!
Em um mundo conectado e globalizado, a geolocalização se torna cada vez mais essencial. E aqui no OZmap, buscamos sempre otimizar e melhorar nossos sistemas. Assim, você encontrará um protótipo que precisa de sua experiência para ser corrigido, melhorado e levado ao próximo nível.
- Node.js: Versão 20 ou superior.
- Banco de Dados: Mongo 7+.
- ORM: Mongoose / Typegoose.
- Linguagem: Typescript.
- Formatação e Linting: Eslint + prettier.
- Comunicação com MongoDB: Deve ser feita via container.
- CRUD completo para usuários.
- Cada usuário deve ter nome, email, endereço e coordenadas.
- Na criação, o usuário pode fornecer endereço ou coordenadas. Haverá erro caso forneça ambos ou nenhum.
- Uso de serviço de geolocalização para resolver endereço ↔ coordenadas.
- Atualização de endereço ou coordenadas deve seguir a mesma lógica.
- CRUD completo para regiões.
- Uma região é definida como um polígono em GeoJSON, um formato padrão para representar formas geográficas. Cada região tem um nome, um conjunto de coordenadas que formam o polígono, e um usuário que será o dono da região.
- Listar regiões contendo um ponto específico.
- Listar regiões a uma certa distância de um ponto, com opção de filtrar regiões não pertencentes ao usuário que fez a requisição.
- Exemplo de um polígono simples em GeoJSON:
{ "type": "Polygon", "coordinates": [ [ [longitude1, latitude1], [longitude2, latitude2], [longitude3, latitude3], [longitude1, latitude1] // Fecha o polígono ] ] }
- Unitários e de integração.
- Autenticação não é requisito, podendo então o usuário ser fornecido junto do corpo da requisição. Caso implemente autenticação, o usuário deve ser obtido a partir do token.
- Interface básica de usuário.
- Documentação completa da API.
- Internacionalização.
- Cobertura de código.
- Utilização de mongo session
- Organização e clareza do código.
- Estruturação do projeto.
- Qualidade e eficiência do código.
- Cobertura e qualidade de testes.
- Pontos diferenciais citados acima.
- Tempo de entrega.
- Padronização e clareza das mensagens de erro.
- Organização dos commits.
- Implementação de logs.
- Adesão às boas práticas de API RESTful.
- Crie um repositório público com a base desse código.
- Crie uma branch para realizar o seu trabalho.
- Ao finalizar, faça um pull request para a branch
main
deste repositório. - Envie um email para
[email protected]
informando que o teste foi concluído. - Aguarde nosso feedback.