A geospatial property tracker built with React, Leaflet, and Spring Boot — pin properties on an interactive dark-themed map, filter by type/status, and track real-time location analytics.
- Interactive Map — Dark-themed OpenStreetMap with color-coded property pins (Leaflet + react-leaflet)
- Drop Pin Mode — Click anywhere on the map to place a new property
- Property CRUD — Add, edit, delete properties with full form validation
- Type Classification — Residential, Commercial, Industrial, Land — each with distinct color
- Status Tracking — Available, Sold, Rented, Under Construction
- Filtering — Search by name, filter by type and status
- Analytics Dashboard — Total properties, available count, portfolio value, type breakdown
- Geospatial Queries — Backend supports bounding-box queries for map viewport
- Java 17 + Spring Boot 3
- Spring Data JPA + H2 (in-memory database)
- Geospatial bounding-box queries
- REST API — Full CRUD + filter endpoints
- React 18 + Vite
- Leaflet + react-leaflet (OpenStreetMap, no API key needed)
- Tailwind CSS + Framer Motion
- Lucide React for icons
- Java 17+
- Node.js 18+
- Maven 3.8+
git clone https://github.com/Rishk3/GeoTrack.git
cd GeoTrackcd backend
mvn clean install
mvn spring-boot:runBackend starts at http://localhost:8087
cd frontend
npm install
npm run devFrontend runs at http://localhost:5181
Visit http://localhost:5181 — the frontend proxies API calls to the backend automatically.
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/properties |
List all (with optional ?type=, ?status=, ?search=) |
| GET | /api/properties/bounds |
Get properties within map bounds |
| GET | /api/properties/{id} |
Get single property |
| POST | /api/properties |
Create property |
| PUT | /api/properties/{id} |
Update property |
| DELETE | /api/properties/{id} |
Delete property |
Rishikesh Kumar