A lightweight, full-stack geospatial application for visualizing recent earthquake data in real time. Built with a Vue.js + Leaflet frontend and a Spring Boot + PostgreSQL/PostGIS backend. Designed as a portfolio-ready demo and LINZ-compatible mapping utility.
- Periodically fetches earthquake data from public APIs
- Stores data in a spatially enabled PostgreSQL (PostGIS) database
- RESTful APIs for querying seismic records
- Frontend Leaflet map with dynamic markers (supports future UI upgrades)
- Configurable fetch intervals and logging
- Frontend: Vue 3, Leaflet
- Backend: Spring Boot, Spring Data JPA
- Database: PostgreSQL + PostGIS
- Build Tools: Maven, npm
-
Backend: Spring Boot with RESTful API
-
Frontend: Vue + Leaflet Interactive Mapping
-
Phase 2 (Planned): Integrate AI/ML modules for:
- Seismic anomaly detection (GeoAI)
- Hydrologic hazard prediction (Rainfall + terrain models)
cd seismic-gis-light-backend mvn clean install mvn spring-boot:runRequires a running PostgreSQL server with the
gisdbdatabase and PostGIS extension enabled.cd seismic-gis-light-frontend npm install npm run devPOST /gp: Submit earthquake record (auto-run task)GET /earthquakes: Retrieve all recordsGET /earthquakes/latest: Latest earthquake data- Future:
/search?bbox=for spatial queries
- see project folder respectively
- API: https://api.wolfx.jp/cenc_eqlist.json
- Format: JSON, updated hourly with CENC-sourced earthquake info
- EPSG:2193 or NZGD2000-aware CRS transformation support (WIP)
- Clean, modular service-layer design for integration with Koordinates data structures
MIT License — Free to use for portfolio, demo, and non-commercial mapping applications.
seismic-gis-light-frontend/
├── index.html
├── package.json
├── vite.config.js
├── public/
│ └── earthquake-icon.png
└── src/
├── App.vue
├── main.js
└── components/
├── EarthquakeMap.vue
└── EarthquakeSidebar.vue
- Install dependencies:
npm install- Start development server:
npm run devVisit: http://localhost:5173
Note: The /api routes are proxied to localhost:8080 backend using vite.config.js
- Edit
vite.config.jsto include:
base: './'- Build project:
npm run build- Upload contents of
dist/to GitHub Pages (viagh-pagesbranch or/docsfolder).
-
Set build settings:
- Build command:
npm run build - Publish directory:
dist
- Build command:
-
Done — you get a shareable link to your map app.
Ensure Spring Boot backend is running at http://localhost:8080. If not:
- Deploy backend separately (e.g., via Docker, local JVM)
- Update proxy in
vite.config.js:
proxy: {
'/api': {
target: 'http://<your-domain-or-ip>:8080'
}
}If you need help deploying the backend, see /seismic-gis-light-backend folder or contact the project maintainer.