A Spring Boot application with polyglot persistence (MySQL, MongoDB, Redis) for geospatial business search and reservation management.
- Geospatial Business Search: Find businesses within a geographic radius using MongoDB's spherical geometry
- Filter-Based Search: Search businesses by city, neighborhood, category, name, and minimum rating
- Business Details: Retrieve detailed information about specific businesses
- Redis Caching: Cache search results with configurable TTL for improved performance
- Distributed Locking: Redis-based distributed locks for reservation management
- Framework: Spring Boot
- Database: MongoDB (business documents with geospatial indexing)
- Cache: Redis (search results and distributed locks)
- SQL Database: MySQL (reservation data)
- Build Tool: Maven
- Java 17 or higher
- Docker and Docker Compose
- Maven 3.6+
- Start infrastructure services:
docker-compose up -d- Run the application:
./mvnw spring-boot:run -Dspring-boot.run.profiles=local- Access the application:
http://localhost:8080
- Health check:
http://localhost:8080/actuator/health
./mvnw testThe application supports multiple Spring profiles:
local: Local development with Docker Compose servicesazure: Azure environment with managed services
Configuration files:
src/main/resources/application.yml- Base configurationsrc/main/resources/application-local.yml- Local development overridessrc/main/resources/application-azure.yml- Azure environment overrides
See infrastructure/README.md for detailed deployment instructions and infrastructure setup.
MIT License. See LICENSE file for details.