Skip to content

erichiroshi/desafio-backend-backendbrasil-points-of-interest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Backend Brasil Logo

Desafio Backend - Points of Interest

License: MIT Language: Java Version: 1.0


🧭 Visão Geral

Este projeto foi desenvolvido como parte do desafio técnico Backend Brasil e implementa uma API de Pontos de Interesse (Points of Interest).
O sistema permite cadastrar, listar e buscar pontos de interesse próximos a uma coordenada específica, utilizando cálculos de distância Euclidiana.


📚 Sumário


⚙️ Tecnologias Utilizadas

Tecnologia Finalidade
Java 25 Linguagem principal
🍃 Spring Boot 3.5.7 Framework de aplicação
🧩 Spring Data JPA Persistência e mapeamento com H2 Database
💾 H2 Database Banco de dados em memória para testes
🩺 Spring Boot Actuator Monitoramento e métricas da aplicação
Spring Boot DevTools Hot reload e ferramentas de desenvolvimento
🌐 Spring Web (Spring MVC) Criação de endpoints RESTful
📘 Springdoc OpenAPI (Swagger UI) Documentação interativa da API
🧰 Lombok Redução de boilerplate

🏗️ Arquitetura da Solução

[Cliente / Postman / Swagger UI]
        ↓
  REST API (Spring Boot)
        ↓
 [PointsController]
   ├── GET /points → lista todos os pontos
   ├── POST /points → cria novo ponto
   └── GET /points/near → busca pontos próximos
        ↓
 [Service Layer]
   └── PointsService (regras de distância e filtragem)
        ↓
 [Repository]
   └── JpaRepository (persistência em H2)

🚀 Execução do Projeto

✅ Pré-requisitos

  • Java 25+
  • Maven 3.9+

📥 Clonar o repositório

git clone https://github.com/erichiroshi/desafio-backend-backendbrasil-points-of-interest.git
cd desafio-backend-backendbrasil-points-of-interest

▶️ Rodar a aplicação

./mvnw spring-boot:run

A aplicação estará disponível em:
👉 http://localhost:8080

💾 Banco de Dados

Por padrão, a aplicação utiliza o h2-Database.
Para acessar o console: 👉 http://localhost:8080/h2-console

  • Utilizar credências conforme configurado no application.properties.

🧩 Acessar a documentação Swagger

👉 http://localhost:8080/swagger-ui.html


💬 Interagindo com a API

As requisições podem ser testadas via Postman, Insomnia ou Swagger UI.


📬 Endpoints e Exemplos

1️⃣ Listar todos os pontos — GET /points

Response

[
  {
    "id": 1,
    "name": "Lanchonete",
    "x": 27,
    "y": 12
  },
  {
    "id": 2,
    "name": "Posto",
    "x": 31,
    "y": 18
  }
]

2️⃣ Criar novo ponto — POST /points

Request Body

{
  "name": "Supermercado",
  "x": 20,
  "y": 10
}

Response

HTTP/1.1 201 Created
Location: /points/3

3️⃣ Buscar pontos próximos — GET /points/near?x=20&y=10&dMax=10

Response

[
  {
    "name": "Supermercado",
  },
  {
    "name": "Farmácia",
  }
]

🤝 Contribuições

Contribuições são sempre bem-vindas!
Para contribuir:

  1. Crie um fork do repositório.
  2. Crie uma branch de feature:
    git checkout -b feature/nova-funcionalidade
  3. Commit suas mudanças:
    git commit -m "feat: nova funcionalidade"
  4. Envie um Pull Request.

📜 Boas práticas

  • Adicione testes unitários.
  • Documente suas alterações no código.
  • Use mensagens de commit seguindo o padrão Conventional Commits.

🔗 Referências e Créditos


“Código limpo é aquele que expressa a intenção com simplicidade e precisão.”

About

Resolução do desafio Points of Interest | GPS proposto pelo Back-End Brasil.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages