LPicinin / oz_map_test

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

OZmap Challenge: Construindo a Geolocalização do Futuro

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!

🌍 Visão Geral

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.

🛠 Especificações Técnicas

  • 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.

🔍 Funcionalidades Esperadas

Usuários

  • 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.

Regiões

  • 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
        ]
      ]
    }

Testes

  • Unitários e de integração.

🌟 Diferenciais

  • 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

Critérios de Avaliação

  1. Organização e clareza do código.
  2. Estruturação do projeto.
  3. Qualidade e eficiência do código.
  4. Cobertura e qualidade de testes.
  5. Pontos diferenciais citados acima.
  6. Tempo de entrega.
  7. Padronização e clareza das mensagens de erro.
  8. Organização dos commits.
  9. Implementação de logs.
  10. Adesão às boas práticas de API RESTful.

🚀 Entrega

  1. Crie um repositório público com a base desse código.
  2. Crie uma branch para realizar o seu trabalho.
  3. Ao finalizar, faça um pull request para a branch main deste repositório.
  4. Envie um email para rh@ozmap.com.br informando que o teste foi concluído.
  5. Aguarde nosso feedback.

Estamos ansiosos para ver sua implementação e criatividade em ação! Boa sorte e que a força do código esteja com você! 🚀


#backend oz-map-backend: build: context: . dockerfile: Dockerfile container_name: oz-map-backend ports: - "3000:3000" networks: - my_network volumes: - .:/usr/src/app

About


Languages

Language:TypeScript 57.5%Language:Vue 39.3%Language:HTML 1.7%Language:Dockerfile 1.2%Language:CSS 0.4%