Open GraphQL API for Indonesian public data and utilities.
IndonesiaQL menyediakan satu endpoint GraphQL untuk mengakses berbagai data publik Indonesia — mulai dari data wilayah administratif, prakiraan cuaca, kurs mata uang, hingga utilitas seperti validasi NIK dan konversi kalender Jawa.
Data lengkap wilayah Indonesia dari BPS — provinsi, kota/kabupaten, kecamatan, hingga kelurahan beserta kode pos. Mendukung pencarian teks bebas.
query {
provinsiList {
kode
nama
kota {
kode
nama
}
}
}
query {
searchWilayah(query: "kebayoran", limit: 5) {
kode
nama
tipe
kota
provinsi
}
}Prakiraan cuaca resmi dari BMKG untuk seluruh kota di Indonesia — suhu, kelembapan, kondisi cuaca, dan arah/kecepatan angin.
query {
cuaca(provinsiKode: "31", kota: "jakarta pusat") {
kota
prakiraan {
waktu
suhu
kelembapan
cuaca
kecepatanAngin
arahAngin
}
}
}Nilai tukar mata uang resmi dari Bank Indonesia, diperbarui setiap hari kerja.
query {
kurs(mataUang: "USD") {
mataUang
kursBeli
kursJual
kursTengah
tanggal
}
}
# Semua mata uang sekaligus
query {
kurs {
mataUang
kursTengah
tanggal
}
}Daftar hari libur nasional dan cuti bersama berdasarkan SKB 3 Menteri.
query {
hariLibur(tahun: 2025, bulan: 12) {
tanggal
nama
jenis
}
}
query {
hariLiburHariIni {
nama
jenis
}
}Validasi format NIK dan ekstraksi informasi: provinsi, kota, tanggal lahir, dan jenis kelamin.
query {
validasiNIK(nik: "3201012501900001") {
valid
provinsi
kota
tanggalLahir
jenisKelamin
errors
}
}Konversi tanggal Masehi ke Kalender Jawa — hari pasaran, wuku, windu, dan tahun Jawa.
query {
kalenderJawa(tanggal: "2025-08-17") {
hari
pasaran
wuku
tahunJawa
namaWindu
tahunDalamWindu
}
}Konversi angka ke teks Bahasa Indonesia, mendukung desimal dan negatif hingga 999 triliun.
query {
terbilang(angka: 1500000) {
angka
terbilang
}
}
# → "satu juta lima ratus ribu"- Runtime: Go 1.25
- GraphQL: gqlgen v0.17 (schema-first)
- Database: PostgreSQL 16 (wilayah & hari libur)
- Cache: In-memory TTL cache (cuaca 30 menit, kurs 1 jam)
- Data sources: BPS, BMKG, Bank Indonesia
| GraphQL | POST /query |
| Playground | GET / (dev only) |
| Health | GET /health |
Cara tercepat — Postgres dan API sekaligus:
docker compose up -dPlayground terbuka di http://localhost:8080 (compose menyetel ENVIRONMENT=dev).
Butuh Go 1.25+ dan PostgreSQL 16 yang sudah berjalan.
cp .env.example .env # sesuaikan DATABASE_URL
make migrate # buat tabel wilayah & hari libur
make seed-wilayah # isi data wilayah BPS
make seed-harilibur # isi data hari libur
make runSebagian besar query — kurs, cuaca, gempa, NIK, terbilang, kalender — tidak menyentuh database dan langsung bisa dipakai. Yang butuh database hanya wilayah, kode pos, dan hari libur.
Setiap tag v* menghasilkan binary untuk linux dan darwin (amd64 + arm64) beserta checksums.txt di halaman Releases.
go install github.com/Lisvindanu/GoGraphQl/cmd/server@latestmake generate # regenerasi kode gqlgen setelah mengubah schema
make lint # go vet
make test-race # go test -racePerubahan pada graph/schema/*.graphqls harus diikuti make generate — berkas graph/generated.go dihasilkan, bukan ditulis tangan.