Gempa bumi dan peringatan tsunami Indonesia, langsung dari BMKG, dengan API JSON terbuka.
Terakhir diperbarui
Lihat sebagai Markdown
Gempa membaca umpan gempa bumi dan tsunami resmi BMKG lalu menyajikannya dua kali: sebagai pemantau web yang cepat — gempa dirasakan terakhir, sekitar dua ratus deteksi otomatis, buletin tsunami, gempa merusak sejak 1920-an, dan peta seismisitas — serta sebagai API JSON yang terdokumentasi. Ini proyek tidak resmi; saat darurat, ikuti BMKG, BNPB, dan BPBD setempat.
BMKG menerbitkan data gempanya dalam bentuk berkas: umpan XML deteksi terbaru, katalog JSON, garis sesar GeoJSON, gambar shakemap, dan narasi pers. Semuanya diterbitkan untuk klien BMKG sendiri, dan datang dalam beberapa format dengan beberapa konvensi untuk hal yang sama.
Gempa berdiri di depannya. Antarmuka webnya punya satu halaman untuk setiap pertanyaan yang benar-benar dimiliki pembaca — apa yang baru saja terjadi, apa yang sedang terdeteksi sekarang, gempa mana yang dirasakan, mana yang kuat, apakah ada peringatan tsunami, mana yang merusak, dan di mana semuanya berada di peta. Setiap halaman dirender di server, sehingga bisa dibaca dan diindeks sebelum skrip apa pun berjalan, lalu memperbarui dirinya dari API.
API-nya menormalkan semua yang disajikannya. Kuncinya berbahasa Inggris, angka tetap angka alih-alih teks yang ditempeli satuan, koordinat berupa derajat desimal bertanda alih-alih "8,10° LS", dan setiap waktu membawa offset yang eksplisit. Daftar dikembalikan sebagai data dan meta — jumlah, sumber, dan kapan respons dibuat — dari umpan hulu mana pun di antara dua belas umpan itu ia dibaca.
Deteksi real-time belum final: BMKG merevisi magnitudo dan lokasinya seiring makin banyak stasiun yang melapor. Gempa menyajikan riwayat revisi setiap kejadian di sampingnya, sehingga pemanggil bisa melihat bagaimana sebuah pembacaan bergeser, bukan hanya nilai terakhirnya.
Alamat bucket umpan BMKG adalah konfigurasi, dibaca dari environment dan hanya dipakai di sisi server. Setiap umpan, setiap shakemap, dan setiap narasi diambil oleh server lalu disajikan ulang di bawah /api/v1, sehingga peramban tidak pernah tahu dari mana datanya berasal, dan galat hulu sampai ke pembaca sebagai pesan umum, bukan sebagai URL.
Narasi pers adalah HTML yang ditulis pihak lain, sehingga menjadi satu-satunya bagian hulu yang bisa membawa markup ke dalam halaman. Narasi itu dilewatkan melalui nh3 dengan daftar izin berisi tag paragraf, daftar, tabel, dan penekanan sebelum disajikan.
Setiap respons membawa masa simpan CDN yang disesuaikan dengan umpannya: tiga puluh detik untuk deteksi real-time, satu menit untuk gempa dirasakan dan buletin tsunami, satu hari untuk stasiun dan garis sesar. Di belakang CDN, cache di dalam proses menahan setiap umpan selama jendela yang sama, dengan satu kunci per umpan, sehingga lonjakan permintaan untuk umpan yang sama menjadi satu panggilan ke hulu.
Ketika BMKG tidak dapat dijangkau, cache itu menyajikan jawaban baik terakhirnya hingga satu jam, bukan galat. Untuk layanan yang dibuka orang ketika gempa terjadi, jawaban terakhir dari beberapa menit lalu lebih berguna daripada kegagalan.
Tiga puluh sembilan pengujiannya berjalan terhadap salinan rekaman umpan yang asli, dengan hulu yang ditiru, sehingga parsernya diperiksa terhadap format yang benar-benar diterbitkan BMKG dan seluruh rangkaiannya lulus tanpa koneksi. Halamannya mengirim Content Security Policy yang satu-satunya skrip inline-nya adalah import map, diizinkan lewat hash-nya.
