Skip to content
TypeScript

QuakeNusa

This public repository does not include a GitHub description yet.

0

Stars

0

Forks

0

Watchers

0

Issues

192

Size (KB)

main

Branch

Files

2 folders · 3 files

Click a file to open it on GitHub. Browse full tree →

QuakeNusa — Simulator Gempa & Tsunami Indonesia

Simulator edukasi interaktif untuk membuat skenario gempa hipotetis di wilayah Indonesia dan memvisualisasikan dampaknya: intensitas guncangan (MMI), paparan penduduk, serta potensi tsunami heuristik — di atas peta MapLibre.

> Bukan sistem peringatan dini. Seluruh model bersifat heuristik untuk tujuan edukasi. Untuk informasi resmi gempa, tsunami, dan keselamatan, rujuk BMKG — https://www.bmkg.go.id dan https://data.bmkg.go.id.

!React
!Vite
!TypeScript
!MapLibre
!License

Fitur

  • Skenario custom — klik peta atau geser marker episenter, cari kota, pakai preset gempa historis & forecast, atur magnitudo (4.0–9.5) dan kedalaman (1–700 km), lalu tekan Jalankan simulasi.

  • Visualisasi dampak — kontur MMI, jejak rupture, layer tsunami & genangan, MMI maksimum, radius, kota terdampak, dan estimasi paparan penduduk (bukan prediksi korban).

  • Data live (konteks & seeding) — BMKG TEWS (polling 60 dtk), USGS FDSNWS (on-demand, merge & dedup dengan BMKG), cuaca Open-Meteo + marine, dan gunung api via Overpass. Semua di-fetch langsung dari browser tanpa API key.

  • Performa — kalkulasi grid intensitas + kontur Turf isolines jalan di Web Worker, peta lazy-load, state Zustand tersinkron localStorage.


Mulai cepat

Persyaratan: Node 18+ (disarankan 20+), npm 9+.

cd app
npm install
npm run dev -- --port 3001

Build produksi:

cd app
npm run build
npm run preview

Kualitas kode:

cd app
npm run lint # Oxlint
npx vitest run # unit test (jsdom)

Struktur repo

QuakeNusa/
├── app/ # aplikasi web (React + Vite + TS) — kode utama di sini
│ ├── src/
│ │ ├── components/
│ │ │ ├── Map/ # EarthquakeMap, MMI/Tsunami/Inundation/Fault/Slab/Volcano layers
│ │ │ ├── ScenarioPanel/ # pencarian kota, preset, slider magnitudo & kedalaman
│ │ │ ├── Results/ # ringkasan, kota terdampak, hasil tsunami & genangan
│ │ │ ├── LiveGempa/ # panel live BMKG/USGS + notifier
│ │ │ └── Modal/ # Info & Metodologi
│ │ ├── workers/ # simulation.worker.ts (grid MMI → isolines → exposure → tsunami)
│ │ ├── stores/ # Zustand: simulationStore, pinnedStore
│ │ ├── lib/
│ │ │ ├── earthquake/ # MMI (mode educational), rupture, grid intensitas
│ │ │ ├── tsunami/ # gate tsunami, ETA c = √(g·h), genangan
│ │ │ ├── geo/ # landOcean, geocoder, reverse geocode
│ │ │ ├── bmkg/ usgs/ weather/ overpass/ population/
│ │ ├── data/ # cities, historicalEarthquakes, forecastPresets
│ │ └── types/
│ ├── public/data/ # faults.geojson, slab.geojson, indonesia-land.geojson
│ └── README.md # dokumentasi detail aplikasi (arsitektur, endpoint, CORS)
├── Docs/
│ └── gempa.md # spesifikasi awal / catatan perancangan
├── LICENSE
└── README.md # file ini

Dokumentasi teknis yang lebih dalam (tabel endpoint, interval polling, catatan CORS, parameter model) ada di app/README.md. Spesifikasi perancangan awal ada di Docs/gempa.md.

Sumber data

| Sumber | Endpoint / Dataset | Catatan |
|---|---|---|
| BMKG TEWS | data.bmkg.go.id/DataMKG/TEWS/autogempa.json, gempaterkini.json | Polling 60 dtk, overlay Shakemap bila ada |
| USGS FDSNWS | earthquake.usgs.gov/fdsnws/event/1/query?format=geojson | BBox Indonesia, merge & dedup ±15 mnt / ±100 km |
| Open-Meteo | forecast + marine API | On-demand saat simulasi / klik episenter |
| Overpass | node['natural'='volcano'] bbox Indonesia | Cache 5 mnt, layer gunung api |
| Sesar & slab | app/public/data/.geojson | Layer statis |
| Populasi | PopulationProvider (opsi raster WorldPop) | Label wajib "paparan penduduk" |

Prinsip: data live hanya untuk konteks visual dan seeding* parameter skenario. Model MMI/tsunami/genangan tetap heuristik edukasi.

Batasan & disclaimer

  • Model MMI (MODEL_MODE = "educational") adalah atenuasi edukasi terinspirasi Allen–Wald–Worden, bukan koefisien resmi.

  • Gate tsunami (M ≥ 6.5, kedalaman ≤ 100 km, episenter di laut) dan propagasi c = √(g·h) adalah heuristik; ETA diberi label heuristik, bukan waktu tiba resmi.

  • Genangan (MAX_RUNUP = 30 m, redaman 3 m/km) heuristik, bukan hidrodinamika penuh.

  • Jangan pernah commit API key; semua sumber yang dipakai memang tidak butuh key.


Berkontribusi

1. Fork & buat branch dari main (feat/... / fix/...).
2. Jalankan npm run lint dan pastikan npm run build lolos di dalam app/.
3. Tulis pesan commit yang jelas (disarankan Conventional Commits).
4. Buka pull request dengan deskripsi perubahan + cara verifikasi.

Lisensi

MIT — lihat LICENSE.

Repository metadata

Owner
TEGAR-SRC
Primary language
TypeScript
License
MIT
Created
Sep 8, 2026
Last pushed
Sep 9, 2026
Last updated
Sep 9, 2026

Clone this repository

HTTPS

git clone https://github.com/TEGAR-SRC/QuakeNusa.git

SSH

git clone git@github.com:TEGAR-SRC/QuakeNusa.git

More TypeScript repositories