didiwijaya / wilindo
Package Laravel (Migration & Seeder) untuk wilayah Indonesia berdasarkan data SPLP Kemendagri
Installs: 741
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 1
Open Issues: 0
pkg:composer/didiwijaya/wilindo
Requires
- php: ^8.0
- illuminate/console: ^9.0|^10.0|^11.0
- illuminate/database: ^9.0|^10.0|^11.0
- illuminate/support: ^9.0|^10.0|^11.0
Requires (Dev)
- phpunit/phpunit: ^9.0|^10.0
This package is auto-updated.
Last update: 2025-10-29 09:51:46 UTC
README
Package Laravel untuk menambahkan migration dan seeder ke project Anda, dimana migration dan seeder tersebut digunakan untuk menyimpan data wilayah Indonesia mulai dari Provinsi, Kabupaten/Kota, Kecamatan dan Desa/Kelurahan.
📡 Sumber Data
Data wilayah Indonesia (Provinsi, Kabupaten/Kota, Kecamatan, Desa/Kelurahan) bersumber dari layanan master_data_wilayah yang disediakan oleh Kementerian Dalam Negeri melalui aplikasi SPLP yang dikelola oleh Kementerian Komunikasi dan Digital (Komdigi).
Dashboard API SPLP dapat diakses melalui: 🔗 https://splp.layanan.go.id/devportal/apis
(catatan: hanya dapat diakses dari jaringan intra pemerintah)
Namun, API master_data_wilayah dapat diakses secara publik, sehingga integrasi ke dalam aplikasi Laravel tidak memerlukan akses jaringan internal pemerintah.
📋 Fitur
- ✅ Migration untuk 4 tabel wilayah (Provinsi, Kabupaten/Kota, Kecamatan, Desa/Kelurahan)
- ✅ Seeder otomatis dari API SPLP Kemendagri
- ✅ Model Eloquent dengan relationship yang lengkap
- ✅ Helper class untuk query data yang mudah
- ✅ Error handling dan progress tracking
- ✅ Chunking data untuk performa optimal
- ✅ Index database untuk query yang cepat
- ✅ Configurable table prefix
🚀 Instalasi
Via Composer
composer require didiwijaya/wilindo
Publish Assets
php artisan wilindo:publish
Jalankan Migration
php artisan migrate
Jalankan Seeder
php artisan db:seed --class=WilindoSeeder
📖 Penggunaan
Menggunakan Model
use DidiWijaya\WilIndo\Models\Province; use DidiWijaya\WilIndo\Models\City; use DidiWijaya\WilIndo\Models\District; use DidiWijaya\WilIndo\Models\Village; // Ambil semua provinsi $provinces = Province::all(); // Ambil kota berdasarkan provinsi $cities = City::byProvince('32')->get(); // Ambil kecamatan berdasarkan kota $districts = District::byCity('3201')->get(); // Ambil desa berdasarkan kecamatan $villages = Village::byDistrict('3201010')->get(); // Ambil data lengkap dengan relationship $village = Village::with(['district.city.province'])->find(1);
Menggunakan Helper
use DidiWijaya\WilIndo\Helpers\WilindoHelper; // Ambil semua provinsi $provinces = WilindoHelper::getProvinces(); // Ambil kota berdasarkan provinsi $cities = WilindoHelper::getCitiesByProvince('32'); // Ambil alamat lengkap berdasarkan kode desa $address = WilindoHelper::getCompleteAddress('3201010001'); // Cari provinsi berdasarkan nama $provinces = WilindoHelper::searchProvinces('Jawa'); // Ambil statistik data $stats = WilindoHelper::getStatistics();
⚙️ Konfigurasi
File konfigurasi tersimpan di config/wilindo.php:
return [ 'prefix' => 'wilindo_', // Prefix untuk nama tabel ];
📊 Struktur Database
Tabel Provinsi
id- Primary keycode- Kode provinsi (2 digit)name- Nama provinsicreated_at,updated_at- Timestamps
Tabel Kabupaten/Kota
id- Primary keycode- Kode kabupaten/kota (4 digit)province_code- Foreign key ke tabel provinsiname- Nama kabupaten/kotacreated_at,updated_at- Timestamps
Tabel Kecamatan
id- Primary keycode- Kode kecamatan (7 digit)city_code- Foreign key ke tabel kabupaten/kotaname- Nama kecamatancreated_at,updated_at- Timestamps
Tabel Desa/Kelurahan
id- Primary keycode- Kode desa/kelurahan (10 digit)district_code- Foreign key ke tabel kecamatanname- Nama desa/kelurahancreated_at,updated_at- Timestamps
🔧 Command
Publish Assets
php artisan wilindo:publish
Publish Config Only
php artisan vendor:publish --tag=wilindo-config
Publish Migrations Only
php artisan vendor:publish --tag=wilindo-migrations
Publish Seeders Only
php artisan vendor:publish --tag=wilindo-seeders
📊 Data Kemendagri dari Layanan SPLP
Tabel statis ini dibuat pada: 29 September 2025 | Data real-time dari API SPLP Kemendagri
| Kode Provinsi | Nama Provinsi | Kab/Kota | Kecamatan | Kel/Desa |
|---|---|---|---|---|
| 11 | Aceh | 23 | 290 | 6500 |
| 12 | Sumatera Utara | 33 | 455 | 6110 |
| 13 | Sumatera Barat | 19 | 179 | 1265 |
| 14 | Riau | 12 | 172 | 1862 |
| 15 | Jambi | 11 | 144 | 1585 |
| 16 | Sumatera Selatan | 17 | 241 | 3258 |
| 17 | Bengkulu | 10 | 129 | 1513 |
| 18 | Lampung | 15 | 229 | 2651 |
| 19 | Kepulauan Bangka Belitung | 7 | 47 | 393 |
| 21 | Kepulauan Riau | 7 | 80 | 419 |
| 31 | DKI Jakarta | 6 | 44 | 267 |
| 32 | Jawa Barat | 27 | 627 | 5957 |
| 33 | Jawa Tengah | 35 | 576 | 8563 |
| 34 | Daerah Istimewa Yogyakarta | 5 | 78 | 438 |
| 35 | Jawa Timur | 38 | 666 | 8494 |
| 36 | Banten | 8 | 155 | 1552 |
| 51 | Bali | 9 | 57 | 716 |
| 52 | Nusa Tenggara Barat | 10 | 117 | 1166 |
| 53 | Nusa Tenggara Timur | 22 | 315 | 3442 |
| 61 | Kalimantan Barat | 14 | 174 | 2145 |
| 62 | Kalimantan Tengah | 14 | 136 | 1571 |
| 63 | Kalimantan Selatan | 13 | 156 | 2016 |
| 64 | Kalimantan Timur | 10 | 105 | 1038 |
| 65 | Kalimantan Utara | 5 | 55 | 482 |
| 71 | Sulawesi Utara | 15 | 171 | 1839 |
| 72 | Sulawesi Tengah | 13 | 175 | 2017 |
| 73 | Sulawesi Selatan | 24 | 313 | 3059 |
| 74 | Sulawesi Tenggara | 17 | 221 | 2287 |
| 75 | Gorontalo | 6 | 77 | 729 |
| 76 | Sulawesi Barat | 6 | 69 | 648 |
| 81 | Maluku | 11 | 118 | 1235 |
| 82 | Maluku Utara | 10 | 118 | 1185 |
| 91 | P A P U A | 9 | 105 | 999 |
| 92 | Papua Barat | 7 | 86 | 824 |
| 93 | Papua Selatan | 4 | 82 | 690 |
| 94 | Papua Tengah | 8 | 131 | 1208 |
| 95 | Papua Pegunungan | 8 | 252 | 2627 |
| 96 | Papua Barat Daya | 6 | 132 | 1018 |
| Total | 38 | 514 | 7277 | 83768 |
📝 Catatan
- Data diambil dari API master_data_wilayah SPLP Kemendagri secara real-time
- API dapat diakses secara publik tanpa perlu akses jaringan internal pemerintah
- Proses seeding mungkin memakan waktu lama karena data yang besar
- Pastikan koneksi internet stabil saat menjalankan seeder
- Memory limit akan otomatis ditingkatkan untuk seeder desa/kelurahan
🤝 Kontribusi
Silakan buat issue atau pull request untuk perbaikan dan fitur baru.
📄 Lisensi
MIT License