Langsung ke konten
AFM Studio
  • Halaman

    AFM Studio
  • Karya
  • Lab
  • Tentang
  • CV
  • Kontak
  • Proyek

    AksaraPerpustakaan pengetahuan Otorita IKN yang bisa dicari, dengan server memeriksa akses setiap pembaca di tiga tingkat
  • Daily TaqwaSistem presensi salat anti-manipulasi untuk ~2.000 pegawai OIKN di Masjid Negara IKN
  • Lantara v2Mesin perizinan Otorita IKN tempat administrator menambah jenis izin baru dari layar, tanpa developer
  • eKiosk IKNDua ruang kendali untuk Nusantara: konten kios dan pelacakan bus live dengan estimasi kedatangan yang menilai dirinya sendiri
  • E-Monev IKNPlatform pemantauan pembangunan Nusantara selama 23 tahun, melacak progres triwulan setiap unit terhadap 24 KPI
  • JDIH OIKNPortal dokumen hukum publik OIKN, dengan alur penerbitan terkendali dan ringkasan AI yang tidak pernah keluar dari server
  • Jejak PenanamanAplikasi absen acara penanaman pohon IKN yang membuktikan peserta hadir di lokasi lewat selfie ber-geofence
  • Dashboard SAKTIPipeline malam dan dashboard yang menggantikan unduhan anggaran manual di keenam satker OIKN
  • DoseRxKalkulator dosis untuk 127 obat yang membulatkan dosis ke tablet dan sirup yang dijual apotek Indonesia
  • CubiqPelatih speedcubing dengan timer setara kompetisi dan solver buatan sendiri untuk 8 puzzle utama
  • ScimotionPerpustakaan sains interaktif berisi 86 artikel, masing-masing dijelaskan bersama animasi yang bisa dikendalikan pembaca
  • WA Daily Scrum BotBot WhatsApp yang menagih laporan standup tim 14 orang dan menandai tugas yang macet berhari-hari

↑ ↓ untuk berpindah · Enter untuk membuka · Esc untuk menutup

Selapan

Kalender Jawa yang mengubah tanggal apa pun menjadi weton dan menampilkan hitungan bersumber di balik setiap angka

Tangkapan layar
siklus yang saling terkait, masing-masing bersumber
4
hitungan berdampingan, Aboge dan Asapon
2
tanggal paling awal yang diterima kalender lunar
1633 M
hari berturut-turut diuji ketepatan siklusnya
36.524
Di halaman ini

Masalahnya

Di seluruh Jawa, banyak keluarga memakai weton, hari lahir seseorang dalam siklus Jawa, untuk menentukan hari selamatan kelahiran, pernikahan, dan peringatan hari-hari setelah kematian. Kelihatannya cukup dengan melihat tabel. Kenyataannya, weton menggabungkan empat siklus: pasaran 5 hari, pekan 7 hari, wuku 210 hari, dan tahun lunar yang dimulai pada 1633 M. Ada juga sistem koreksi bernama kurup yang menggeser hitungan lunar setiap 120 tahun.

Situs weton yang ada penuh iklan, tidak mengutip sumber apa pun, dan hasilnya saling berbeda. Situs-situs itu memakai kurup yang berlaku sekarang untuk semua tanggal, jadi tanggal sejarah keliru. Tanggal sebelum 1633 tetap dikonversi, padahal sistem lunarnya belum ada. Cara hitungnya tidak ditampilkan, jadi pembaca tidak bisa menemukan kesalahan. Masyarakat yang memakai hitungan Aboge yang lebih tua kadang merayakan Idulfitri sehari setelah tanggal nasional. Tidak ada situs yang menunjukkan perbedaan itu.

Yang saya bangun

Setiap jawaban menampilkan cara hitungnya

Setiap angka di halaman bisa dibuka untuk melihat asal-usulnya: tanggal acuan, jumlah hari sejak tanggal itu, panjang siklus, hasil, dan sumbernya. Siapa pun bisa mengulang hitungan itu dengan tangan dari layar. Saya membangun mesin kalendernya supaya setiap nilai selalu membawa cara hitung ini. Angka tanpa cara hitung tidak bisa ditampilkan sama sekali, jadi halaman tidak mungkin berbeda dari aritmetikanya.

Tanggal acuan berasal dari sumber yang dikutip

Setiap siklus dihitung dari tanggal acuan yang disimpan di berkas data, lengkap dengan sumber dan letak rujukannya. Build gagal kalau tanggal acuan tidak punya kutipan atau tidak cocok dengan tanggal yang disebutkannya sendiri. Nilai yang disimpulkan dari sumber lain ditandai belum terverifikasi, tampil abu-abu, dan dicantumkan di halaman sumber dan celah yang terbuka untuk umum.

Tanggal di luar jangkauan ditolak

Setiap siklus punya rentang berlakunya sendiri. Kalau Anda meminta tanggal di tahun 1500 M, kalender lunar menolak dan menyebutkan alasannya, sementara pasaran dan wuku tetap menjawab karena kedua siklus itu berjalan terus tanpa putus. Saya menghitung setiap tanggal sebagai bilangan bulat jumlah hari, tanpa zona waktu atau jam. Masukan yang sama selalu menghasilkan jawaban yang sama.

Aboge dan Asapon berdampingan

Tampilan perbedaan menghitung tanggal yang sama dengan kedua aturan dan menunjukkan mekanisme yang memisahkan keduanya. Pada satu contoh tanggal, Asapon menghasilkan 21 Sapar dan Aboge 20 Sapar. Masyarakat Aboge bisa melihat hitungan mereka sendiri di samping hitungan nasional, dan situs ini tidak menyebut salah satunya keliru.

Hitungan dan tafsiran dipisahkan

Weton menjadi dasar primbon: watak, kecocokan jodoh, dan hari baik. Banyak orang memercayainya, banyak juga yang menolaknya. Saya memberi nilai hasil hitungan satu warna, nila, dan materi tradisi warna lain, merah yang diambil dari almanak cetak. Lapisan tafsiran saya tahan seluruhnya. Aturannya sudah berjalan saat build, tetapi lapisan ini tidak akan dirilis sebelum ada peninjau yang memahami tradisi Jawa dan bersedia memeriksanya.

Hasilnya

Selapan sudah live dalam bahasa Indonesia dan Inggris, dengan tujuh halaman di setiap bahasa. Selain konversi, ada roda siklus yang kembali sejajar setiap 35 hari (satu selapan) dan setiap 210 hari, tampilan kalender dinding bulanan, dan kalender pertanian tradisional (pranata mangsa). Situs ini juga menghitung tanggal selamatan kematian sebagai hitungan biasa yang bersumber, tanpa tafsiran. Siklusnya diuji tepat selama 36.524 hari berturut-turut. Situs ini menyebut dirinya proyek pribadi, bukan otoritas, dan mengakui bahwa praktiknya berbeda di tiap daerah. Saya membangunnya dalam satu hari, 6 Agustus 2026.

Di balik layarDetail teknis untuk engineer
  • Julian Day Number adalah satu-satunya representasi tanggal di dalam mesin. Tidak ada objek Date di lib/; "hari ini" ditentukan di UI lalu dikirim sebagai parameter. Tidak ada library tanggal, karena date-fns, Luxon, dan Temporal membawa semantik zona waktu yang keliru untuk kalender berbasis modulo siklus.
  • Signature mesinnya (jdn, options) → CalendarTrace. Setiap nilai membawa Derivation: id anchor, JDN anchor, offset, modulus, hasil, sumber, dan status verifikasi.
  • Penolakan berupa objek bertipe, { subsystem, reason, validFrom, validTo }, tidak pernah string yang di-throw, null, atau tebakan terdekat.
  • Anchor disimpan di data/anchors/ sebagai JSON dengan sumber, lokasi rujukan, dan tanggal verifikasi. Validator 226 baris menghitung ulang JDN setiap anchor dari tanggal Gregoriannya dan menolak yang tidak cocok, serta menolak klaim verified tanpa pembanding independen. Validator ini menjadi gerbang untuk pnpm build dan CI.
  • Data yang dikutip: 4 anchor, 5 definisi kurup, tabel neptu, dan tabel pranata mangsa. Celah yang didokumentasikan: epoch wuku dari satu sumber, kurup.anenhing.1987 sebagai proyeksi ke depan, rentang Ajumgi 72 tahun yang disimpulkan, dan panjang bulan tahun Dal.
  • Transisi Asapon 1936 dicek silang di berkas datanya sendiri: 24 Maret 1936, Selasa Pon.
  • Skema primbon (M6) sudah mewajibkan kutipan, atribusi yang diawali "Menurut", dan melarang kalimat orang kedua maupun skor.
  • Warna: nila #2B4470 untuk nilai hasil hitungan, merah rubrik #A83C28 untuk materi tradisi, abu-abu untuk di luar rentang dan belum terverifikasi.
  • Static export Next.js 14, 7 rute × 2 bahasa, empat dependensi produksi (next, react, react-dom, zod). Pipeline deploy: data:validate → typecheck → lint → test:run → build.
  • 126 tes Vitest di 8 suite; suite kurup paling berat dengan 29 tes. Invarian terpanjang mencakup 36.524 hari berturut-turut. Sekitar 6.300 baris, 28 commit dalam kurang lebih 3 jam 45 menit.
  • JS yang dihasilkan sekitar 880 KB tanpa kompresi di seluruh chunk, sementara target PRD 200 KB gzip untuk payload aplikasi.

Tangkapan layar

Beranda
Ubah Tanggal
Kalender Bulanan
Selapanan
Mangsa
Kurup

Sedang merekrut, atau membangun hal serupa?

Saya terbuka untuk posisi full-time dan proyek freelance tertentu.