GeoProximity is a Spring Boot–based microservices backend focused on geo-aware processing, asynchronous pipelines, and scalable service-to-service communication. The current repository reflects an early but solid microservices foundation, built around service discovery, Kafka-based messaging, and background workers.
This project is intentionally designed to evolve toward a location-based, event-driven platform.
GeoProximity/
│
├── business-service/ # Core business logic + Kafka producer
├── es-worker-service/ # Background worker (Kafka consumer / ES indexing)
├── register-server/ # Eureka Service Registry
├── README.md
- Microservice architecture
- Event-driven communication (Kafka)
- Loose coupling between services
- Horizontal scalability
- Clean separation of concerns
┌──────────────────┐
│ Business Service │
│ (Kafka Producer) │
└────────┬─────────┘
│
Kafka Topics
│
┌────────▼─────────┐
│ ES Worker Service │
│ (Kafka Consumer) │
└────────┬─────────┘
│
Elasticsearch (future)
┌─────────────────────────┐
│ Eureka Registry │
│ (register-server) │
└─────────────────────────┘
- Java 17
- Spring Boot 3.x
- Spring Cloud Netflix Eureka
- Apache Kafka
- Kafka Producer / Consumer
- Elasticsearch (planned / external)
- Docker (planned)
- Git / GitHub
Role: Service Discovery
- Central registry for all microservices
- Enables dynamic service registration
- Avoids hard-coded service URLs
Port: 8761
Role: Core business logic + event producer
Responsibilities:
- Handles main domain operations
- Produces Kafka events when business actions occur
- Acts as the entry point for future APIs
Key Features:
- Kafka producer configuration
- Clean separation between controller, service, and messaging layers
Role: Asynchronous background worker
Responsibilities:
- Consumes Kafka events
- Processes data asynchronously
- Prepares data for indexing/search use cases
Typical Use Cases:
- Elasticsearch indexing
- Geo-based search preparation
- Analytics pipelines
Example flow:
- Business Service performs an operation
- Event is published to Kafka
- ES Worker Service consumes the event
- Data is processed / indexed asynchronously
This design ensures:
- High throughput
- Non-blocking operations
- Easy extensibility with new consumers
- Services discover each other via Eureka
- Kafka decouples producers from consumers
- No direct tight coupling between services
- Java 17+
- Maven
- Kafka (local or Docker)
cd register-server
mvn spring-boot:runcd business-service
mvn spring-boot:runcd es-worker-service
mvn spring-boot:run- Add API Gateway
- Add Keycloak authentication
- Add Redis caching
- Integrate Elasticsearch fully
- Add geo-proximity queries
- Docker Compose setup
- Kubernetes deployment
Boutmedjet Software Engineering Student Backend & Distributed Systems
This repository represents a clean starting point for a scalable, geo-aware, event-driven backend. The architecture is intentionally simple but follows real-world system design principles to allow future growth.