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.
- 🧭 Visão Geral
- 📚 Sumário
- ⚙️ Tecnologias Utilizadas
- 🏗️ Arquitetura da Solução
- 🚀 Execução do Projeto
- 💬 Interagindo com a API
- 📬 Endpoints e Exemplos
- 🤝 Contribuições
- 🔗 Referências e Créditos
| 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 |
[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)
- Java 25+
- Maven 3.9+
git clone https://github.com/erichiroshi/desafio-backend-backendbrasil-points-of-interest.git
cd desafio-backend-backendbrasil-points-of-interest./mvnw spring-boot:runA aplicação estará disponível em:
👉 http://localhost:8080
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.
👉 http://localhost:8080/swagger-ui.html
As requisições podem ser testadas via Postman, Insomnia ou Swagger UI.
Response
[
{
"id": 1,
"name": "Lanchonete",
"x": 27,
"y": 12
},
{
"id": 2,
"name": "Posto",
"x": 31,
"y": 18
}
]Request Body
{
"name": "Supermercado",
"x": 20,
"y": 10
}Response
HTTP/1.1 201 Created
Location: /points/3Response
[
{
"name": "Supermercado",
},
{
"name": "Farmácia",
}
]Contribuições são sempre bem-vindas!
Para contribuir:
- Crie um fork do repositório.
- Crie uma branch de feature:
git checkout -b feature/nova-funcionalidade
- Commit suas mudanças:
git commit -m "feat: nova funcionalidade" - 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.
- Desafio original: Backend Brasil - Points of Interest
- Baseado no conteúdo do canal Build & Run
- Repositório: desafio-backend-backendbrasil-points-of-interest
- Desenvolvido por Eric Hiroshi
- Licença: MIT
“Código limpo é aquele que expressa a intenção com simplicidade e precisão.”
