Skip to content
Projects

cahyadsn/wilayah has 1,339 GitHub stars and 432 forks. GitHot measured 0 stars in 24 hours and +4 in 7 days. Last checked 2026-11-11 17:08 UTC. Last push 2026-10-31.

How these counts are measured

Kode dan Data Wilayah Administrasi & Pulau Indonesia sesuai Kepmendagri No 300.2.2-2430 Tahun 2025 dengan PHP+MySQL+AJaX. Demo link : https://wilayah.cahyadsn.com/

Measured star growth

in 24h
0
in 7 days
+4
in 15 days
Collecting history
in 1 month
Collecting history

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

README.md

Original

WILAYAH

Kode dan Data Wilayah Administrasi Pemerintahan dan Kode Pulau Indonesia sesuai Kepmendagri No 300.2.2-2430 Tahun 2025 menggunakan PHP+MySQL+AJaX

GitHub license GitHub issues GitHub forks GitHub stars GitHub commit activity GitHub last commit Donate

DEMO

tautan demo web apps versi 3.2.0

SCREENSHOT

screenshot

Kode dan Data Wilayah Pemerintahan Indonesia dalam database :

  • db/wilayah.sql sesuai dengan Kepmendagri No. 300.2.2-2430 Tahun 2025
  • db/wilayah_level_1_2.sql sesuai Kepmendagri No. 300.2.2-2430 Tahun 2025 untuk data provinsi dan kab/kota dengan koordinat,elevation,timezone,luas, jumlah penduduk dan boundaries
  • db/archive/wilayah_2023.sql sesuai Kepmendagri No. 100.1.1-6117 Tahun 2022
  • db/archive/wilayah_2022.sql sesuai Permendagri No. 58 Tahun 2021 (revised by Kepmendagri No. 050-145 Tahun 2022)
  • db/archive/wilayah_2020.sql sesuai Permendagri No. 72 Tahun 2019 (revised by Kepmendagri No.146.1-4717 Tahun 2020)
  • db/archive/wilayah_2018.sql sesuai Permendagri No. 137 tahun 2017
  • db/archive/wilayah_2016.sql sesuai Permendagri No. 56 Tahun 2015
  • db/archive/wilayah_level_1_2-2022.sql sesuai Kepmendagri No. 100.1.1-6117 Tahun 2022 untuk data provinsi dan kab/kota dengan koordinat,elevation,timezone,luas, jumlah penduduk dan boundaries (mysql)
  • db/archive/wilayah_level_1_2_postgresql.sql sesuai Kepmendagri No. 100.1.1-6117 Tahun 2022 untuk data provinsi dan kab/kota dengan koordinat,elevation,timezone,luas, jumlah penduduk dan boundaries (postgresql)

Kode dan Data Pulau Indonesia dalam database :

  • db/wilayah_pulau.sql sesuai Kepmendagri No. 300.2.2-2430 Tahun 2025 untuk data pulau Indonesia dilengkapi dengan koordinat (lat, lng), status pulau (BP/TBP), luas, dan catatan
  • db/archive/pulau_2025.sql sesuai Kepmendagri No 300.2.2-2138 Tahun 2025
  • db/archive/pulau_2023.sql sesuai Kepmendagri No 100.1.1-6117 Tahun 2022
  • db/archive/pulau_2022.sql sesuai Permendagri No 58 Tahun 2021 (revised by Kepmendagri No. 050-145 Tahun 2022)

Data Jumlah Penduduk Indonesia per propinsi dan per kabupaten/kota dalam database

  • db/wilayah_penduduk.sql sesuai Kepmendagri No 300.2.2-2430 Tahun 2025 *

Data Luas wilayah Indonesia per provinsi dan per kabupaten/kota dalam database

  • db/wilayah_luas.sql sesuai dengan Kepmendagri No 300.2.2-2430 Tahun 2025 dan Badan Informasi Geospasial berdasarkan Surat Deputi Bidang Informasi Geospasial Dasar Nomor B-16.10/DIGD-BIG/IGD.04.04/12/2024, Tanggal 16 Desember 2024, Hal Penghitungan Luas Wilayah di Seluruh Indonesia

TAUTAN TERKAIT

Data Kepmendagri No 300.2.2-2430 Tahun 2025

Database Data dan Kode Wilayah Administrasi Pemerintahan sesuai Kepmendagri No 300.2.2-2430 Tahun 2025 (wilayah.sql)

id_prov nama kab kota kec kel desa luas penduduk pulau
11 Aceh* 18 5 290 0 6500 56835.019 5623479 369*
12 Sumatera Utara* 25 8 455 693 5417 72437.755 15640905 224*
13 Sumatera Barat 12 7 179 230 1035 42107.674 5820359 219
14 Riau 10 2 172 271 1591 89900.780 7099297 144
15 Jambi 9 2 144 171 1414 49023.037 3834439 14
16 Sumatera Selatan 13 4 241 403 2856 86771.918 9064690 24
17 Bengkulu 9 1 129 172 1341 20122.210 2127957 9
18 Lampung 13 2 229 205 2446 33570.758 9144263 172
19 Kepulauan Bangka Belitung 6 1 47 84 309 16670.225 1549562 501
21 Kepulauan Riau 5 2 80 144 275 8170.375 2271890 2028
31 DKI Jakarta 1 5 44 267 0 661.530 11038216 113
32 Jawa Barat 18 9 627 646 5311 37053.331 51316378 30
33 Jawa Tengah 29 6 576 753 7810 34347.428 38430645 71
34 DI Yogyakarta 4 1 78 46 392 3170.363 3743365 37
35 Jawa Timur 29 9 666 773 7721 48055.876 41919906 538
36 Banten 4 4 155 314 1238 9355.763 12881374 80
51 Bali 8 1 57 80 636 5582.827 4375263 41
52 Nusa Tenggara Barat 8 2 117 145 1021 19631.991 5751295 430
53 Nusa Tenggara Timur 21 1 315 305 3137 46378.105 5700772 653
61 Kalimantan Barat 12 2 174 99 2046 147018.063 5646268 260
62 Kalimantan Tengah 13 1 136 139 1432 153430.363 2825290 71
63 Kalimantan Selatan 11 2 156 144 1872 37125.426 4305281 165
64 Kalimantan Timur 7 3 105 197 841 126951.758 4123303 244
65 Kalimantan Utara 4 1 55 35 447 69900.886 770627 196
71 Sulawesi Utara 11 4 171 332 1507 14488.429 2645291 382
72 Sulawesi Tengah 12 1 177 175 1842 61496.983 3219494 1600
73 Sulawesi Selatan 21 3 313 793 2266 45323.975 9528276 394
74 Sulawesi Tenggara 15 2 221 377 1908 36139.303 2824589 591
75 Gorontalo 5 1 77 72 657 12024.982 1250960 127
76 Sulawesi Barat 6 0 69 73 575 16590.667 1466741 69
81 Maluku* 9 2 119 35 1200 46133.832 1935586 1422
82 Maluku Utara 8 2 118 118 1067 31465.977 1394231 975
91 Papua* 8 1 105 51 948 81383.315 1102360 544
92 Papua Barat 7 0 91 21 803 60308.590 576255 1498
93 Papua Selatan 4 0 82 13 677 117858.969 562220 7
94 Papua Tengah 8 0 131 36 1172 61079.587 1369112 50
95 Papua Pegunungan 8 0 252 10 2617 52508.656 1470518 0
96+ Papua Barat Daya 5 1 132 74 939 39103.058 623186 3082
TOTAL 416 98 7285 8496 75266 1890179.784 284973643 17380

NOTE :

)* data mengalami perubahan dari data sebelumnya (data Kepmendagri No. 300.2.2-2138 Tahun 2025)

  • Nama Provinsi diurutkan sesuai dengan Kode Wilayah Administrasi Pemerintahan
  • Luas wilayah (dalam km persegi) bersumber dari Badan Informasi Geospasial berdasarkan Surat Deputi Bidang Informasi Geospasial Dasar Nomor B-16.10/DIGD-BIG/IGD.04.04/12/2024, Tanggal 16 Desember 2024, Hal Penghitungan Luas Wilayah di Seluruh Indonesia
  • Jumlah penduduk bersumber dari Ditjen Kependudukan dan Pencatatan Sipil Kemendagri (Data Kependudukan Semester II Bulan Desember Tahun 2024)
  • Jumlah pulau termasuk 6 pulau besar ( Sumatera, Jawa, Kalimantan, Sulawesi, Timor, dan Papua)
  • Sumber data pulau Gazeter Republik Indonesia (GRI) Tahun 2024 yang diterbitkan oleh Badan Informasi Geospasial (BIG)

link demo bisa dilihat di sini : https://wilayah.cahyadsn.com/ screenshot

KODEFIKASI DATA WILAYAH

Kode Wilayah Administrasi Pemerintahan adalah serangkaian angka dan titik yang menunjukkan Kode dan Data Wilayah Administrasi Pemerintahan Indonesia pada setiap daerah/wilayah mulai dari tingkat desa/kelurahan, kecamatan, kota/kabupaten, hingga provinsi yang digunakan untuk mempermudah dan mempercepat pengelolaan wilayah administrasi pemerintahan Republik Indonesia.

Berdasarkan Permendagri No 58 Tahun 2021 kodefikasi data wilayah administrasi pemerintahan dan pulau adalah sesuai aturan susunan sebagai berikut:

FUNGSI DAN TUJUAN KODE WILAYAH

  • Identifikasi administratif: Memudahkan pengelolaan data dan informasi pemerintahan.
  • Standarisasi nasional: Digunakan dalam dokumen resmi, statistik, dan sistem informasi pemerintah.
  • Referensi geografis: Menunjukkan lokasi dan hierarki wilayah secara sistematis.

KODE WILAYAH

Kode Provinsi Kode untuk daerah provinsi terdiri dari 2 (dua) digit yaitu:

  1. Digit pertama Kode untuk daerah provinsi didasarkan pada letak geografis Pulau/kepulauan Indonesia yang dimulai dari arah barat ke timur; dan
  2. Digit kedua diisi sesuai dengan urutan pembentukan provinsi.

Kode Kabupaten/Kota Kode untuk daerah kabupaten/kota terdiri dari 4 (empat) digit, yaitu:

  1. Kode untuk daerah provinsi berjumlah 2 (dua) digit;
  2. Kode untuk daerah kabupaten/kota berjumlah 2 (dua) digit yang ditulis secara berurutan;
  3. Digit ketiga dan keempat dari 4 (empat) digit Kode untuk kabupaten diisi dengan angka 01 (nol satu) sampai dengan 69 (enam puluh sembilan); dan
  4. Digit ketiga dan keempat dari 4 (empat) digit Kode untuk kota diisi dengan angka 71 (tujuh puluh satu) sampai dengan 99 (sembilan puluh sembilan).

Kode Kecamatan Kode untuk Kecamatan berjumlah 6 (enam) digit yang terdiri dari Kode untuk daerah provinsi 2 (dua) digit, Kode untuk daerah kabupaten/kota berjumlah 2 (dua) digit, dan Kode untuk Kecamatan berjumlah 2 (dua) digit yang ditulis secara berurutan.

Kode Desa/Kelurahan Kode untuk Kelurahan dan Desa berjumlah 10 (sepuluh) digit, terdiri dari Kode untuk daerah provinsi berjumlah 2 (dua) digit, Kode untuk daerah kabupaten/kota berjumlah 2 (dua) digit, Kode untuk Kecamatan berjumlah 2 (dua) digit, dan Kode untuk Kelurahan dan Desa berjumlah 4 (empat) digit yang ditulis secara berurutan, sebagai berikut:

  1. urutan pertama dari 4 (empat) digit Kode untuk Kelurahan menggunakan angka 1 (satu); dan
  2. urutan pertama dari 4 (empat) digit Kode untuk Desa menggunakan angka 2 (dua).
  3. urutan pertama dari 4 (empat) digit Kode untuk Desa adat menggunakan angka 3 (tiga).

KODE PULAU

Kode Pulau berjumlah 9 (sembilan) digit terdiri dari:

  1. Kode untuk daerah provinsi berjumlah 2 (dua) digit,
  2. Kode untuk daerah kabupaten/kota berjumlah 2 (dua) digit; dan
  3. Kode Pulau berjumlah 5 (lima) digit dengan urutan pertama menggunakan angka 4 (empat).

REFERENSI

PENGUJIAN DATABASE

Untuk memeriksa validitas sintaksis file SQL di dalam direktori db/ serta mendeteksi duplikasi nilai 'kode', Anda dapat menjalankan skrip pemeriksa (syntax checker) berbasis Node.js yang terdapat pada folder tools/:

# Memeriksa data wilayah utama
node tools/check_sql_wilayah.js

# Memeriksa data wilayah tingkat 1 & 2 (Provinsi, Kab/Kota) beserta batas wilayah (polygon)
node tools/check_sql_wilayah_level_1_2.js

# Memeriksa data luas wilayah
node tools/check_sql_wilayah_luas.js

# Memeriksa data penduduk wilayah
node tools/check_sql_wilayah_penduduk.js

# Memeriksa data pulau
node tools/check_sql_wilayah_pulau.js

CHANGE LOG

  • [2026-10-27] 🆕
    • Mitigasi Kerentanan Brotli Decoder Buffer Overflow / Node2Shell (CVE-2026-111497):
      • Pencegahan Tingkat Web Server & Filter HTTP (.htaccess):
        • Menambahkan aturan pemblokiran mod_rewrite pada .htaccess, apps/.htaccess, dan src/.htaccess untuk menolak langsung permintaan dengan header Content-Encoding: br atau Content-Encoding: brotli, mencegah decoding payload terkompresi Brotli yang dapat memicu out-of-bounds write (CWE-787) pada server atau reverse proxy rentan.
      • Pengamanan Runtime PHP (apps/inc/session.php & apps/inc/db.php):
        • Memperluas fungsi deteksi anomali is_php2shell_request() untuk memvalidasi HTTP_CONTENT_ENCODING dan menolak seketika (400 Bad Request) permintaan dengan encoding Brotli/kompresi sebelum payload diproses.
      • Pembaruan Dependensi Ekosistem Node.js:
        • Memperbarui package undici dari versi 7.30.0 ke 7.30.1 pada package-lock.json guna mengatasi kerentanan Denial of Service terkait penanganan content-encoding (GHSA-xjj6-f33q-929c).
      • Peningkatan Pengujian Unit (tests/apps/inc/SessionTest.php):
        • Menambahkan pengujian testIsPhp2shellRequestDetectsBrotliContentEncoding dan testIsPhp2shellRequestDetectsBrotliLongContentEncoding pada tests/apps/inc/SessionTest.php, menjadikan total 113 pengujian PHPUnit dan 6 pengujian Jest lulus 100%.
      • Metadata Berkas:
        • Memperbarui timestamp last edit pada seluruh berkas yang dimodifikasi.
  • [2026-10-23]
    • Mitigasi Kerentanan PHP2Shell (CVE-2026-109618 & CVE-2026-109619):
      • Pencegahan Tingkat Konfigurasi Server & SAPI (.htaccess & .user.ini):
        • Menerapkan direktif penonaktifan upload progress (session.upload_progress.enabled = Off) dan upload berkas (file_uploads = Off) pada berkas .user.ini, apps/.user.ini, dan src/.user.ini untuk memitigasi serangan heap memory corruption (UAF) dan worker memory persistence pada lingkungan SAPI persisten (PHP-FPM, Apache mod_php, FastCGI).
        • Menambahkan aturan penulisan ulang Apache (mod_rewrite) pada .htaccess, apps/.htaccess, dan src/.htaccess untuk menolak langsung permintaan yang menargetkan parameter PHP_SESSION_UPLOAD_PROGRESS, prefix upload_progress_, serta memblokir payload multipart/form-data karena aplikasi ini murni berbasis query parametrik dan tidak memerlukan fitur upload berkas.
        • Memproteksi berkas-berkas sensitif (.env, .user.ini, .htaccess) dari akses publik langsung via konfigurasi FilesMatch.
      • Pengamanan Runtime PHP Pertahanan Berlapis (Defense-in-Depth):
        • Menginisialisasi @ini_set('session.upload_progress.enabled', '0') dan @ini_set('file_uploads', '0') saat runtime pada apps/inc/session.php, apps/inc/db.php, src/inc/session.php, dan src/inc/db.php.
        • Menerapkan fungsi deteksi payload mencurigakan is_php2shell_request() yang secara langsung memutus dan menolak permintaan (400 Bad Request) jika terdeteksi parameter upload progress (PHP_SESSION_UPLOAD_PROGRESS atau upload_progress) pada $_POST, $_GET, $_COOKIE, $_REQUEST, header Content-Type: multipart/form-data, atau keberadaan array $_FILES.
      • Peningkatan Pengujian Unit (tests/apps/inc/SessionTest.php):
        • Memperluas cakupan pengujian unit PHPUnit menjadi 111 pengujian (316 asersi) dengan menambahkan 6 skenario pengujian pertahanan PHP2Shell (deteksi permintaan normal, injeksi upload progress via POST, GET, COOKIE, header multipart, dan deteksi array berkas).
      • Pembaruan Panduan Administrator & Dokumentasi:
        • Menambahkan advisori keamanan dan rekomendasi pembaruan runtime PHP ke versi ter-patch (>= 8.3.36, >= 8.4.27, >= 8.5.12) serta konfigurasi mitigasi web server Nginx pada README.md dan apps/README.md.
  • [2026-10-22]
    • Audit Keamanan & Perbaikan Kerentanan (Security Hardening):
      • Mitigasi Modifikasi Basis Data Tanpa Autentikasi (src/inc/geo_update.php & apps/inc/geo_update.php):
        • Menambahkan autentikasi sesi admin ($_SESSION['author'] === 'cahyadsn') dan validasi token CSRF (hash_equals()) pada src/inc/geo_update.php untuk mencegah pembaruan data koordinat/poligon tanpa hak akses.
        • Menerapkan validasi regex ketat pada parameter kode wilayah id (/^[0-9]+(\.[0-9]+)*$/, panjang maksimal 13 karakter) serta verifikasi tipe numerik berhingga pada lat, lng, dan format valid JSON pada path.
        • Menghapus pembocoran query SQL internal dan parameter pada respons pesan status pembaruan.
        • Menambahkan invalidasi otomatis berkas cache terkait (geo_ajax_json_cache_* dan geo_opt_cache_*) pada apps/inc/geo_update.php ketika data batas/koordinat wilayah diperbarui.
      • Mitigasi Cross-Site Scripting (XSS) & Attribute Injection:
        • Menerapkan whitelist nilai warna tema yang diizinkan (black, brown, pink, orange, amber, lime, green, teal, purple, indigo, blue, cyan) pada src/index.php, src/inc/change.color.php, dan apps/inc/change.color.php serta meloloskan karakter HTML (htmlspecialchars) untuk mencegah CSS/attribute injection.
        • Menghapus penetapan otomatis hak akses admin $_SESSION['author'] = 'cahyadsn' bagi pengunjung anonim pada src/index.php.
        • Menambahkan fungsi sanitasi escapeHtml() sebelum menyisipkan data nama wilayah dan pulau ke dalam popup peta Leaflet (bindPopup) pada apps/inc/geo_js.php dan src/inc/geo_js.php guna mencegah kerentanan DOM-based XSS.
        • Memastikan pelolosan entitas HTML (htmlspecialchars) pada pembuatan elemen opsi dropdown wilayah di src/inc/geo_ajax.php.
      • Perbaikan Kebocoran Token CSRF via Shared Proxy Caching (apps/index.php):
        • Mengganti header caching pada apps/index.php menjadi Cache-Control: private, no-cache, no-store, must-revalidate dan Pragma: no-cache agar halaman yang memuat token CSRF per-sesi tidak di-cache oleh proxy/CDN bersama (seperti Cloudflare atau reverse proxy).
        • Menambahkan HTTP Security Headers pertahanan berlapis: X-Content-Type-Options: nosniff, X-Frame-Options: SAMEORIGIN, dan Referrer-Policy: strict-origin-when-cross-origin.
      • Validasi Input Geospasial & Pencegahan Galat SQL / DoS (reverse_lookup.php & geo_ajax.php):
        • Memvalidasi parameter koordinat lat dan lng pada apps/inc/reverse_lookup.php agar bernilai numerik, berhingga (is_finite), serta berada dalam rentang valid koordinat geografis ([-90, 90] dan [-180, 180]), mencegah kegagalan kalkulasi trigonometri pada query basis data.
        • Menambahkan pengaman pengecekan !empty($codes) sebelum eksekusi query hierarki nama wilayah untuk mencegah galat sintaks SQL IN ().
        • Memvalidasi format string $_GET['id'] pada apps/inc/geo_ajax.php dan index.php untuk mencegah disk exhaustion / cache flood dari input parameter acak.
      • Penguatan Konfigurasi Sesi & Masking Informasi Sensitif Basis Data:
      • Peningkatan Pengujian Unit & Otomasi CI:
      • Metadata Berkas:
        • Memperbarui timestamp last edit pada seluruh berkas yang dimodifikasi.
  • [2026-10-20]
    • Peningkatan Keamanan Cache Key Generation (SHA-256):
      • Mengganti fungsi md5() menjadi hash('sha256', ...) dalam pembuatan nama berkas cache pada apps/inc/geo_ajax.php (geo_ajax_json_cache_* dan geo_opt_cache_*), index.php (index_opt_cache_*), dan pengujian unit tests/AppsIndexTest.php untuk memitigasi kerentanan collision attacks dan cache poisoning.
    • Refactoring & Optimasi Traversal Koordinat (geo_ajax.php & geo_utils.php):
      • Menghapus duplikasi fungsi isPathReasonable() pada apps/inc/geo_ajax.php dan beralih ke fungsi bersama isPathNearCentroid() dari apps/inc/geo_utils.php guna mereduksi kompleksitas kode (mengatasi isu kompleksitas CodeFactor).
      • Mengoptimalkan traversal array koordinat poligon batas (bounding box) pada isPathNearCentroid() dengan single-pass iteration dan penambahan validasi struktur elemen awal isset($points[0][0], $points[0][1]).
      • Memperbarui pengujian unit tests/apps/inc/GeoAjaxTest.php agar selaras dengan isPathNearCentroid().
    • Optimasi Reverse Geocoding (reverse_lookup.php):
      • Mengurangi overhead iterasi pada apps/inc/reverse_lookup.php dengan mengeliminasi redundansi pengecekan tipe data is_string dan json_decode pada kandidat koordinat batas yang telah didekode sebelumnya.
    • Peningkatan Pengujian Unit (tests/inc/GeoUtilsTest.php):
      • Menambahkan pengujian testPathAsArrayAndJsonString pada tests/inc/GeoUtilsTest.php untuk memverifikasi konsistensi perilaku isPathNearCentroid() baik dengan format string JSON maupun array terevaluasi.
    • Pembaruan Dependensi:
      • Memperbarui package source-map-js dari versi 1.2.1 ke 1.2.2 pada package-lock.json.
    • Metadata Berkas:
      • Memperbarui timestamp last edit pada berkas-berkas yang dimodifikasi.
  • [2026-10-08]
    • Panduan Instalasi & Pemutakhiran Web Apps (apps/ v3.2.0):
      • Menambahkan panduan instalasi komprehensif pada apps/README.md yang mencakup prasyarat sistem, langkah pembuatan & impor basis data SQL, konfigurasi variabel lingkungan (.env), izin folder cache, serta panduan menjalankan aplikasi via PHP built-in server maupun web server stack (Laragon / XAMPP).
      • Memutakhirkan versi aplikasi web menjadi v3.2.0 pada konfigurasi apps/.env, apps/.env.example, dan apps/index.php.
      • Mengabaikan direktori cache pengujian otomatis (/tests/apps/cache/*) pada .gitignore.
    • Revisi & Sinkronisasi Data Pulau (db/wilayah_pulau.sql):
      • Memverifikasi dan memvalidasi integritas sintaks SQL serta format data pulau sesuai Kepmendagri No. 300.2.2-2430 Tahun 2025 dengan pengujian tools/check_sql_wilayah_pulau.js unpublished.
  • [2026-10-07]
    • Revisi & Verifikasi Data Pulau (db/wilayah_pulau.sql):
      • Memverifikasi dan memvalidasi integritas sintaks SQL serta keunikan kode data pulau (17.374 baris pulau) sesuai Kepmendagri No. 300.2.2-2430 Tahun 2025 menggunakan skrip pemeriksa tools/check_sql_wilayah_pulau.js unpublished.
      • Memperbarui dokumentasi struktur tabel wilayah_pulau (kode, nama, lat, lng, status, luas, notes) pada README.md.
  • [2026-10-05]
    • Daftar Pulau di Panel Kanan Web Apps (apps/index.php):
      • Menambahkan panel samping kanan interaktif (#islandPanel) yang menampilkan daftar data kode dan nama pulau sesuai lokasi aktif provinsi (level 1) atau kabupaten/kota (level 2).
      • Menambahkan badge jumlah pulau (#islandCount), badge nama lokasi aktif (#islandLocationName), kotak pencarian instan (real-time filter by name & code), dan daftar pulau scrollable yang responsif.
      • Integrasi peta: Mengklik salah satu pulau di daftar akan memusatkan peta (flyTo) ke titik koordinat pulau, memunculkan penanda (marker) beserta popup informasi nama, kode, status, dan luas pulau, serta memperbarui info strip koordinat.
      • Menambahkan tombol ciutkan/bentangkan panel pulau (#islandToggle) dengan persistensi status di localStorage (wilayahIslandPanelCollapsed).
    • Backend & Database:
      • Menambahkan konfigurasi $tbl_pulau = "wilayah_pulau"; pada apps/inc/db.php.
      • Menambahkan fungsi pembantu getIslandsForCode($db, $tbl_pulau, $kode) pada apps/inc/geo_helpers.php untuk query data pulau berdasarkan prefix kode wilayah (2 digit provinsi atau 5 karakter kabupaten/kota).
      • Mengintegrasikan data pulau ke dalam respons JSON pada endpoint AJAX apps/inc/geo_ajax.php.
    • Frontend Script & Styling:
    • Pengujian Unit:
    • Metadata Berkas:
      • Memperbarui timestamp last edit pada seluruh berkas yang dimodifikasi.
  • [2026-10-01]
    • Add .env file support in apps/ for database credentials and application version (APP_VER).
    • Remove hardcoded default database credentials in apps/inc/db.php and load them from .env or environment variables.
    • Dynamically display application version in apps/index.php sourced from APP_VER (3.1.0).
    • Update file header last edit timestamps on modified files.
  • [2026-09-30]
  • [2026-09-25]
    • Add PHPUnit unit test suite for apps/logout.php in tests/AppsLogoutTest.php to verify session destruction, cookie clearance, and redirect flows.
    • Optimize pointInRing in apps/inc/reverse_lookup.php by moving coordinate array structure validation outside the ray-casting loop.
    • Verify and validate unit test coverage for apps/js/ajax.js in tests/apps/js/ajax.test.js.
    • Update file header last edit timestamps on modified files.
  • [2026-09-23]
  • [2026-09-15]
    • Optimize bounding box calculation using native PHP array functions (array_column(), min(), max()) in isPathReasonable() within apps/inc/geo_ajax.php.
  • [2026-09-11]
    • Extract shared province HTML dropdown generation into getProvinceOptionsHTML() in apps/inc/geo_helpers.php and reuse across apps/index.php and index.php.
    • Return raw array from fallbackBox() in apps/inc/geo_helpers.php to avoid redundant json_decode cycles during reverse lookup spatial calculations.
    • Optimize bounding box coordinate presence checks with isset() in apps/inc/geo_ajax.php.
    • Update file header last edit timestamps on modified files to match Git commit modification history.
  • [2026-09-09]
  • [2026-09-08]
    • Mitigate Login CSRF vulnerability in apps/login.php with CSRF session token initialization, form injection, and constant-time hash_equals() validation on POST requests; update tests/AppsLoginTest.php with invalid token test coverage.
    • Add Jest unit test suite for do_ajax() in tests/apps/js/ajax.test.js and add jest devDependency to package.json.

Riwayat perubahan selengkapnya dapat dilihat pada change_log.md.

INFORMASI

DONASI

  • untuk donasi via transfer
    • Bank BCA Digital (Blu) (501) 000 576 776 186
    • Bank Jago (542) 5003 5796 1022
    • Bank Sinarmas (153) 005 462 4719
    • Bank Syariah Indonesia (BSI) 821-342-5550
  • untuk donasi via PayPal [https://paypal.me/cahyadwiana]
  • untuk donasi via QRIS CAHYADSN ID1022183125288 :

screenshot

Explore related projects