[{"data":1,"prerenderedAt":1200},["ShallowReactive",2],{"work-id":3},[4,89,158,222,284,351,380,406,431,502,539,575,705,803,872,949,1016,1076,1150,1175],{"id":5,"title":6,"body":7,"category":61,"date":62,"description":63,"extension":64,"externalUrl":65,"featured":66,"locale":67,"meta":68,"navigation":69,"outcome":70,"path":75,"rank":76,"release":77,"role":78,"screenshot":79,"seo":80,"stack":81,"stem":84,"summary":85,"tier":86,"year":87,"__hash__":88},"projects\u002Fid\u002Fprojects\u002Fcuwit-mobile.md","Cuwit",{"type":8,"value":9,"toc":55},"minimark",[10,14,19,48,52],[11,12,13],"p",{},"Cuwit adalah eksperimen posting sosial open-source yang dibangun dengan Flutter. Repositori menyajikannya sebagai aplikasi sosial open-source yang terhubung ke API HTTP: autentikasi (login\u002Fregister), bearer-token yang dipertahankan, manajemen profil, feed sosial berisi post dengan dukungan gambar, like dan komentar — dengan state lokal disimpan di perangkat lewat shared_preferences.",[15,16,18],"h2",{"id":17},"cakupannya","Cakupannya",[20,21,22,30,36,42],"ul",{},[23,24,25,29],"li",{},[26,27,28],"strong",{},"Autentikasi ujung ke ujung."," Login dan register, persistence token agar sesi bertahan melewati restart, serta logout.",[23,31,32,35],{},[26,33,34],{},"Profil."," Ambil dan perbarui profil pengguna terhadap API.",[23,37,38,41],{},[26,39,40],{},"Feed sosial."," Buat, ubah, dan hapus post dengan gambar; like\u002Funlike; komentar.",[23,43,44,47],{},[26,45,46],{},"Klien multi-platform."," Struktur Flutter standar, sehingga aplikasi menyasar platform yang didukung Flutter dari satu basis kode klien.",[15,49,51],{"id":50},"tempat-dalam-perjalanan","Tempat dalam perjalanan",[11,53,54],{},"Bab Flutter yang datang setelah eksperimen mobile hybrid — produk sisi klien sungguhan dengan model feed yang persisten, dikerjakan di tahun yang sama dengan pekerjaan Flutter produksi. Backend adalah concern terpisah; bukti proyek ini murni di sisi klien.",{"title":56,"searchDepth":57,"depth":57,"links":58},"",2,[59,60],{"id":17,"depth":57,"text":18},{"id":50,"depth":57,"text":51},"Mobile · Open Source","2026-09-16","Eksperimen posting sosial open-source yang dibangun sebagai klien Flutter dengan integrasi API terautentikasi.","md","https:\u002F\u002Fgithub.com\u002Framadhanep\u002Fcuwit",false,"id",{},true,[71,73,74],{"Alur klien terautentikasi":72},"login\u002Fregister, persistence bearer-token, ambil dan perbarui profil, serta logout.","Feed sosial dengan create\u002Fedit\u002Fdelete post, dukungan gambar, like\u002Funlike, dan komentar.","Persistence state lokal via shared_preferences di aplikasi Flutter multi-platform.","\u002Fid\u002Fprojects\u002Fcuwit-mobile","10","2023","Mobile Developer","\u002Fimg\u002Fprojects\u002Fcuwit.jpg",{"title":6,"description":63},[82,83],"Flutter","Dart","id\u002Fprojects\u002Fcuwit-mobile","Aplikasi Flutter open-source yang mengeksplorasi perilaku produk sosial di luar arsitektur web — integrasi API HTTP, autentikasi, profil, feed sosial, dan persistence lokal.","standard",2023,"39RMWfLfUbqgrz3MkIS0c47bjCKRtCMCoHBS3xyQHZs",{"id":90,"title":91,"body":92,"category":138,"date":62,"description":139,"extension":64,"externalUrl":140,"featured":66,"locale":67,"meta":141,"navigation":69,"outcome":142,"path":146,"rank":147,"release":77,"role":148,"screenshot":149,"seo":150,"stack":151,"stem":155,"summary":156,"tier":86,"year":87,"__hash__":157},"projects\u002Fid\u002Fprojects\u002Fmangan.md","Mangan",{"type":8,"value":93,"toc":133},[94,97,101,104,108,128,130],[11,95,96],{},"Mangan adalah proyek akhir UBSI WP2: sistem mini administrasi dan pemesanan restoran yang dibangun dengan CodeIgniter 4 di atas PHP 7.4\u002F8 — aplikasi full-stack yang menjangkau lebih jauh daripada sekadar CRUD sekolah.",[15,98,100],{"id":99},"fungsinya","Fungsinya",[11,102,103],{},"Sisi administrasi mengelola kategori dan item menu, meja dan reservasi, metode pembayaran, serta pengguna, dengan jalur manajer\u002Fadmin yang terotorisasi dan pembaruan kata sandi. Sisi transaksi membawa pesanan melalui alur status dan mencetak struk. Jalur pemesanan sisi pelanggan memungkinkan tamu memesan dari keranjang, melihat riwayat transaksi, dan menyimpan salinan alurnya yang bisa dicetak — dengan komponen bergantung QR ikut terpasang.",[15,105,107],{"id":106},"catatan-engineering","Catatan engineering",[20,109,110,116,122],{},[23,111,112,115],{},[26,113,114],{},"CodeIgniter 4 dengan pemisahan concern yang modular."," Auth, peran, dan pemesanan adalah bagian berbeda dari aplikasi, bukan satu controller besar.",[23,117,118,121],{},[26,119,120],{},"Dua permukaan, satu model."," Alur staf dan pelanggan membaca data menu serta transaksi yang sama.",[23,123,124,127],{},[26,125,126],{},"Status sebagai alur kerja."," Transaksi bergerak melalui status eksplisit, bukan sekadar membalik satu bendera.",[15,129,51],{"id":50},[11,131,132],{},"Mangan menutup bab restoran awal: Dyposten dan Dyresto melatih inti transaksional, dan Mangan memunculkannya lagi dengan pemesanan sisi pelanggan serta framework yang lebih modern.",{"title":56,"searchDepth":57,"depth":57,"links":134},[135,136,137],{"id":99,"depth":57,"text":100},{"id":106,"depth":57,"text":107},{"id":50,"depth":57,"text":51},"Aplikasi Bisnis · Restoran","Sistem administrasi dan pemesanan restoran berbasis CodeIgniter 4 — manajemen menu, meja, metode pembayaran, transaksi, peran pengguna, dan pemesanan sisi pelanggan.","https:\u002F\u002Fgithub.com\u002Framadhanep\u002Fwp2-mangan",{},[143,144,145],"Pemisahan peran antara otorisasi manajer\u002Fadmin dan pemesanan sisi pelanggan.","Kategori dan CRUD menu, manajemen meja\u002Freservasi, serta konfigurasi metode pembayaran.","Manajemen transaksi dengan alur status, pemesanan pelanggan dengan keranjang, dan catatan transaksi yang bisa dicetak.","\u002Fid\u002Fprojects\u002Fmangan","11","Full-stack Developer","\u002Fimg\u002Fprojects\u002Fmangan.jpg",{"title":91,"description":139},[152,153,154],"CodeIgniter 4","PHP","MySQL","id\u002Fprojects\u002Fmangan","Proyek akhir UBSI WP2 — sistem mini administrasi dan pemesanan restoran yang mencakup manajemen menu, meja, metode pembayaran, transaksi, peran, pemesanan pelanggan berbasis keranjang, dan catatan tercetak.","btB1C65VfHTNdSwDR1y5VX7H0WZrByYTBzYSDed8ixY",{"id":159,"title":160,"body":161,"category":203,"date":62,"description":204,"extension":64,"externalUrl":205,"featured":66,"locale":67,"meta":206,"navigation":69,"outcome":207,"path":211,"rank":212,"release":213,"role":148,"screenshot":214,"seo":215,"stack":216,"stem":218,"summary":219,"tier":86,"year":220,"__hash__":221},"projects\u002Fid\u002Fprojects\u002Fdyposten.md","Dyposten",{"type":8,"value":162,"toc":198},[163,166,168,171,173,193,195],[11,164,165],{},"Dyposten adalah aplikasi point-of-sale dan inventori yang dibangun dalam konteks uji kompetensi LSP SMKN 10 Jakarta pada 2019. Laravel 6.2 menopang alur berbasis peran dari administrasi toko hingga faktur tercetak.",[15,167,100],{"id":99},[11,169,170],{},"Papan toko mengelola sisi administrasi — produk, kategori, dan bahan — sementara stok melacak alur barang masuk. Transaksi berjalan lewat checkout dan menghasilkan faktur, dengan alur cetak serta pelaporan untuk sisi dokumentasi usaha kecil. Penanganan mata uang dan PPN\u002Fpajak, satuan, serta persentase laba membuat perhitungan harga eksplisit alih-alih di-hardcode.",[15,172,107],{"id":106},[20,174,175,181,187],{},[23,176,177,180],{},[26,178,179],{},"Kontrol akses berbasis peran."," Tanggung jawab berbeda melihat dan menyentuh bagian sistem yang berbeda.",[23,182,183,186],{},[26,184,185],{},"Stok sebagai alur, bukan snapshot."," Stok masuk dicatat, memberi jejak inventori yang bisa dipertanggungjawabkan untuk transaksi.",[23,188,189,192],{},[26,190,191],{},"Output yang mengedepankan cetak."," Paket barcode dan PDF menopang sisi checkout dan pelaporan.",[15,194,51],{"id":50},[11,196,197],{},"Bagian dari bab aplikasi bisnis awal 2019–2020: di sinilah fundamental sistem transaksional — peran, stok, faktur, laporan — dilatih sebelum pekerjaan produksi.",{"title":56,"searchDepth":57,"depth":57,"links":199},[200,201,202],{"id":99,"depth":57,"text":100},{"id":106,"depth":57,"text":107},{"id":50,"depth":57,"text":51},"Aplikasi Bisnis · POS","Aplikasi point-of-sale dan inventori berbasis peran — administrasi toko, produk, alur stok, transaksi, checkout, dan faktur dengan alur cetak.","https:\u002F\u002Fgithub.com\u002Framadhanep\u002Fdyposten",{},[208,209,210],"Akses berbasis peran lintas administrasi toko, manajemen produk, stok, dan transaksi.","Alur produk dan stok masuk dengan mata uang, PPN\u002Fpajak, satuan, persentase laba, kategori, dan bahan.","Alur checkout, faktur, serta cetak\u002Fpelaporan yang ditopang paket barcode dan PDF.","\u002Fid\u002Fprojects\u002Fdyposten","12","Nov 2019","\u002Fimg\u002Fprojects\u002Fdyposten.jpg",{"title":160,"description":204},[217,154,153],"Laravel","id\u002Fprojects\u002Fdyposten","Sistem POS yang dibangun dalam konteks uji kompetensi di LSP SMKN 10 Jakarta — peran lintas administrasi toko, manajemen produk dan stok, transaksi, checkout, dan faktur.",2019,"TCakeizMHVOWAKi95p7z66banDKHS3BHdbUrhno4fKQ",{"id":223,"title":224,"body":225,"category":138,"date":62,"description":267,"extension":64,"externalUrl":268,"featured":66,"locale":67,"meta":269,"navigation":69,"outcome":270,"path":274,"rank":275,"release":276,"role":148,"screenshot":277,"seo":278,"stack":279,"stem":280,"summary":281,"tier":86,"year":282,"__hash__":283},"projects\u002Fid\u002Fprojects\u002Fdyresto.md","Dyresto",{"type":8,"value":226,"toc":262},[227,230,232,235,237,257,259],[11,228,229],{},"Dyresto adalah aplikasi kasir restoran yang dibangun dengan Laravel 6.2 dalam tantangan pra-UKK — build dengan batasan waktu yang memaksa sistem tetap fokus pada loop transaksi: menu, pesanan, kasir, struk.",[15,231,100],{"id":99},[11,233,234],{},"Informasi restoran, kategori makanan, dan menu menjadi penopang sisi produk; meja dan keranjang mengalir ke pesanan. Peran membagi pekerjaan — administrator, pelayan\u002Fkasir, dan jalur sisi pelanggan — lalu pesanan yang selesai berlabuh di transaksi dan riwayat transaksi, dengan alur cetak dan pelaporan untuk penutupan operasional.",[15,236,107],{"id":106},[20,238,239,245,251],{},[23,240,241,244],{},[26,242,243],{},"Peran mencerminkan lantai restoran."," Penerima pesanan, kasir, dan administrasi adalah tanggung jawab berbeda dalam model data.",[23,246,247,250],{},[26,248,249],{},"Dari keranjang ke transaksi, ujung ke ujung."," Alur pesanan melewati keranjang dan berakhir di transaksi yang tercatat dan bisa dilaporkan.",[23,252,253,256],{},[26,254,255],{},"Batasan ketat menjaga ruang lingkup tetap jujur."," Dibangun sebagai tantangan berwaktu, sistem menunjukkan inti transaksional tanpa tambahan yang dikarang.",[15,258,51],{"id":50},[11,260,261],{},"Bersama Dyposten, periode 2019–2020 adalah bab sistem transaksional awal: menu, meja, keranjang, peran, dan output cetak — batu penyusun setiap produk transaksional berikutnya.",{"title":56,"searchDepth":57,"depth":57,"links":263},[264,265,266],{"id":99,"depth":57,"text":100},{"id":106,"depth":57,"text":107},{"id":50,"depth":57,"text":51},"Sistem transaksi restoran yang dibangun dalam batasan waktu ketat — alur berbasis peran lintas menu, meja, keranjang, pemesanan, operasi kasir, transaksi, dan pelaporan.","https:\u002F\u002Fgithub.com\u002Framadhanep\u002Fdyresto",{},[271,272,273],"Alur berbasis peran untuk administrator, pelayan, dan kasir, plus peran sisi pelanggan.","Manajemen menu dan meja dengan alur keranjang dan pesanan yang berlanjut ke transaksi kasir.","Riwayat transaksi dan alur cetak\u002Fpelaporan.","\u002Fid\u002Fprojects\u002Fdyresto","13","Feb 2020","\u002Fimg\u002Fprojects\u002Fdyresto.jpg",{"title":224,"description":267},[217,154,153],"id\u002Fprojects\u002Fdyresto","Sistem kasir restoran Laravel dari bab aplikasi bisnis awal — alur pemesanan dan kasir berbasis peran, riwayat transaksi, dan pelaporan.",2020,"NZEdwIWrgqYVJ4PliI7otdt7JZKUwe_I7i9_bYIt2c0",{"id":285,"title":286,"body":287,"category":329,"date":62,"description":330,"extension":64,"externalUrl":331,"featured":66,"locale":67,"meta":332,"navigation":69,"outcome":333,"path":337,"rank":338,"release":339,"role":148,"screenshot":340,"seo":341,"stack":342,"stem":348,"summary":349,"tier":86,"year":282,"__hash__":350},"projects\u002Fid\u002Fprojects\u002Fdygoo.md","Dygoo",{"type":8,"value":288,"toc":324},[289,292,294,297,299,319,321],[11,290,291],{},"Dygoo adalah eksperimen chat realtime yang sengaja dibangun sebagai dua bagian terpisah: frontend Vue statis dan server Node.js mandiri. Ia menjadi tempat bermain untuk bagian web engineering yang tidak hidup dalam siklus permintaan-respons.",[15,293,100],{"id":99},[11,295,296],{},"Frontend adalah aplikasi Nuxt 2 yang dibangun untuk output statis dengan SSR nonaktif — UI chat menyimpan nama pengguna dan ruang di cookie, dengan komponen chat dan ruang terstruktur sebagai komponen Vue. Server pendamping (Express + Socket.IO) melacak ruang dan penggunanya, menyiarkan pesan, serta menangani siklus gabung dan keluar, menjaga pengguna dalam registri in-memory untuk presence.",[15,298,107],{"id":106},[20,300,301,307,313],{},[23,302,303,306],{},[26,304,305],{},"Frontend dan server dipisah oleh kontrak."," Klien statis; server adalah deployment terpisah. Ruang dan broadcast melewati batas tersebut lewat WebSocket.",[23,308,309,312],{},[26,310,311],{},"Presence adalah state realtime."," Gabung, keluar, dan putus koneksi ditangani eksplisit oleh server, bukan diasumsikan.",[23,314,315,318],{},[26,316,317],{},"State klien berbasis cookie."," UI menyimpan cukup state di sisi klien agar tetap ramah-static.",[15,320,51],{"id":50},[11,322,323],{},"Eksperimen 2020 yang terhubung dengan minat pada sistem web interaktif — cara berpikir event-driven yang berada di bawah pekerjaan produksi backend asinkron dan berbasis pesan.",{"title":56,"searchDepth":57,"depth":57,"links":325},[326,327,328],{"id":99,"depth":57,"text":100},{"id":106,"depth":57,"text":107},{"id":50,"depth":57,"text":51},"Realtime · Eksperimen","Eksperimen chat realtime — frontend statis Nuxt yang dipasangkan dengan server Express\u002FSocket.IO terpisah untuk pesan dan presence berbasis ruang.","https:\u002F\u002Fdygoo.netlify.app",{},[334,335,336],"Frontend Nuxt 2 statis (SSR nonaktif) dengan status nama pengguna dan ruang di cookie yang menggerakkan antarmuka chat.","Server Express\u002FSocket.IO pendamping yang menangani gabung ruang, presence pengguna, siklus gabung\u002Fkeluar, dan broadcast pesan.","Diterapkan sebagai demo live di Netlify.","\u002Fid\u002Fprojects\u002Fdygoo","14","2020","\u002Fimg\u002Fprojects\u002Fdygoo.jpg",{"title":286,"description":330},[343,344,345,346,347],"Nuxt","Vue","Node.js","Express","Socket.IO","id\u002Fprojects\u002Fdygoo","Eksperimen realtime dua bagian — frontend Nuxt 2 statis yang menyimpan status ruang di cookie, berkomunikasi dengan server Express\u002FSocket.IO mandiri yang mengelola ruang, presence, dan broadcast pesan.","TwA4rE6IxVPyp4RsYPPpOnkeCdKgIjXnDe0TDTg3GgU",{"id":352,"title":353,"body":354,"category":361,"date":362,"description":363,"extension":64,"externalUrl":364,"featured":66,"locale":67,"meta":365,"navigation":69,"outcome":366,"path":370,"rank":371,"release":372,"role":373,"screenshot":374,"seo":375,"stack":376,"stem":377,"summary":378,"tier":86,"year":282,"__hash__":379},"projects\u002Fid\u002Fprojects\u002Findohp-rekber.md","INDOHP Rekber",{"type":8,"value":355,"toc":359},[356],[11,357,358],{},"INDOHP Rekber adalah contoh sistem komunitas yang membutuhkan kejelasan status dan kepercayaan alur.",{"title":56,"searchDepth":57,"depth":57,"links":360},[],"Laravel Web Application","2026-05-10","Aplikasi web rekber untuk kebutuhan transaksi komunitas INDOHP.","https:\u002F\u002Findohp.org",{},[367,368,369],"Alur transaksi dibuat lebih mudah dilacak.","Status dan pencatatan dipisah agar admin bisa membaca proses.","Implementasi menggabungkan frontend Nuxt dan backend Laravel.","\u002Fid\u002Fprojects\u002Findohp-rekber","15","2020 Dec","Fullstack developer","\u002Fimg\u002Fprojects\u002Findohp-rekber.png",{"title":353,"description":363},[343,217],"id\u002Fprojects\u002Findohp-rekber","Sistem rekber berbasis web dengan fokus pada alur transaksi, status, dan pencatatan.","k_-LKxAFe42Z102_C59nW5sgh_mCL4WhVzKBjSZdhp0",{"id":381,"title":382,"body":383,"category":390,"date":62,"description":391,"extension":64,"externalUrl":392,"featured":66,"locale":67,"meta":393,"navigation":69,"outcome":394,"path":398,"rank":399,"release":339,"role":148,"screenshot":400,"seo":401,"stack":402,"stem":403,"summary":404,"tier":86,"year":282,"__hash__":405},"projects\u002Fid\u002Fprojects\u002Findohp-katalog.md","INDOHP Katalog",{"type":8,"value":384,"toc":388},[385],[11,386,387],{},"Situs katalog produk untuk penjual perangkat, dibangun di Nuxt dengan backend Laravel. Produknya tidak rumit — halaman daftar, halaman detail, data di belakangnya — tetapi kesederhanaan itu justru yang menuntut disiplin. Katalog sukses dengan mudah dipindai, cepat dimuat, dan mudah diperbarui. Ia gagal ketika struktur membuat pemeliharaan menyakitkan. Pemisahan daftar\u002Fdetail dan frontend Nuxt yang ringan adalah keputusan yang tepat di sini: katalog adalah permukaan yang dibaca terus-menerus, dan setiap siklus rendering yang tidak perlu mengambil waktu yang tidak ingin dibuang pengguna.",{"title":56,"searchDepth":57,"depth":57,"links":389},[],"Freelance · Web","Katalog produk untuk penjual perangkat — struktur daftar\u002Fdetail yang rapi di frontend Nuxt.","https:\u002F\u002Fkatalog.indohp.co.id",{},[395,396,397],"Mendesain struktur daftar\u002Fdetail yang memisahkan penelusuran dari produk detail.","Membangun frontend Nuxt untuk pengalaman katalog yang cepat dan ringan.","Mengelola data produk melalui backend Laravel dan MySQL.","\u002Fid\u002Fprojects\u002Findohp-katalog","16","\u002Fimg\u002Fprojects\u002Fproduct-catalog.jpg",{"title":382,"description":391},[343,217,154],"id\u002Fprojects\u002Findohp-katalog","Katalog produk yang memisahkan penelusuran dari detail dan menjaga frontend tetap cepat dimuat dan mudah dipindai.","_vGGv4Pal9-VbK_WUJhtRlV3oZpWfYLvH-VitFZrQ9g",{"id":407,"title":408,"body":409,"category":390,"date":62,"description":416,"extension":64,"externalUrl":417,"featured":66,"locale":67,"meta":418,"navigation":69,"outcome":419,"path":423,"rank":424,"release":77,"role":148,"screenshot":425,"seo":426,"stack":427,"stem":428,"summary":429,"tier":86,"year":87,"__hash__":430},"projects\u002Fid\u002Fprojects\u002Fmetalogika.md","Metalogika",{"type":8,"value":410,"toc":414},[411],[11,412,413],{},"Company profile seringkali merupakan kelas proyek web yang paling sederhana — dan itulah tepatnya mengapa ini merupakan uji selera seorang developer. Klien butuh layanannya ditampilkan dengan rapi, kontennya terstruktur, dan halaman yang mudah diperbarui. Developer yang buruk membangun tema yang sulit dirawat. Developer yang baik membangun sesuatu yang ringan, terbaca, dan tepat. Metalogika adalah company profile Laravel: konten yang jelas, struktur halaman yang stabil, dan perlakuan visual yang tenang. Antarmuka tetap diam sehingga layanan yang berbicara.",{"title":56,"searchDepth":57,"depth":57,"links":415},[],"Website company profile berbasis Laravel — rapi, mudah dirawat, dan berfokus pada penyajian layanan yang jelas.","null",{},[420,421,422],"Menyusun konten publik sehingga informasi layanan mudah dipindai.","Dibangun dengan Laravel agar situs mudah dikembangkan dan dirawat.","Menjaga antarmuka tetap tenang sehingga informasi, bukan dekorasi, yang bekerja.","\u002Fid\u002Fprojects\u002Fmetalogika","17","\u002Fimg\u002Fprojects\u002Fmetalogika.jpg",{"title":408,"description":416},[217],"id\u002Fprojects\u002Fmetalogika","Proyek company profile praktis di mana struktur konten yang jelas dan kemudahan pemeliharaan adalah batasan desain.","urWVWki3bCwSj_fxgYEdEGkrvcuvUiDScLN3vm3QFfQ",{"id":432,"title":433,"body":434,"category":481,"date":62,"description":482,"extension":64,"externalUrl":483,"featured":66,"locale":67,"meta":484,"navigation":69,"outcome":485,"path":489,"rank":490,"release":491,"role":492,"screenshot":493,"seo":494,"stack":495,"stem":498,"summary":499,"tier":500,"year":220,"__hash__":501},"projects\u002Fid\u002Fprojects\u002Fdisposisi.md","BNPB Disposisi",{"type":8,"value":435,"toc":476},[436,439,441,449,451,471,473],[11,437,438],{},"Disposisi adalah sistem ketiga dari magang di BNPB, sekaligus yang paling \"non-framework\" dari ketiganya: aplikasi PHP native dengan autentikasi sesi, ditulis langsung di atas pekerjaan korespondensi kantor.",[15,440,100],{"id":99},[11,442,443,444,448],{},"Dashboard berada di atas modul persuratan yang melacak disposisi surat masuk — alur ",[445,446,447],"code",{},"disposisi surat"," yang menentukan siapa menangani dokumen dan di mana posisinya — beserta status dokumen. Di sekitar inti itu ada administrasi pengguna, manajemen profil, dan antarmuka pencarian catatan.",[15,450,107],{"id":106},[20,452,453,459,465],{},[23,454,455,458],{},[26,456,457],{},"Auth berbasis sesi."," Login yang disusun sendiri dengan pencarian pengguna ke database — tanpa lapisan auth framework, persis seperti apa adanya artefak era awal.",[23,460,461,464],{},[26,462,463],{},"UX catatan warisan web admin."," DataTables untuk tabel yang bisa dicari, Select2 untuk kolom pilihan, Summernote untuk konten kaya, date-range picker untuk penyaringan.",[23,466,467,470],{},[26,468,469],{},"Shell Bootstrap 4."," Lapisan visual memakai perangkat admin standar pada masanya.",[15,472,51],{"id":50},[11,474,475],{},"Dengan sengaja diarsipkan: proyek batu loncatan yang memperlihatkan konteks alur korespondensi magang, satu dari tiga sistem internal yang dibangun dalam tiga bulan itu.",{"title":56,"searchDepth":57,"depth":57,"links":477},[478,479,480],{"id":99,"depth":57,"text":100},{"id":106,"depth":57,"text":107},{"id":50,"depth":57,"text":51},"Pemerintahan · Korespondensi (Arsip)","Aplikasi pengelolaan korespondensi awal untuk BNPB — melacak disposisi surat dan status dokumen dengan pencarian, administrasi pengguna, dan dashboard.","https:\u002F\u002Fgithub.com\u002Framadhanep\u002Fbnpb-disposisi",{},[486,487,488],"Autentikasi berbasis sesi dengan pencarian pengguna ke database aplikasi.","Modul persuratan yang melacak disposisi dan status dokumen.","UX pencarian dan catatan dengan DataTables, Select2, dan Summernote, plus filter rentang tanggal.","\u002Fid\u002Fprojects\u002Fdisposisi","18","Mar 2019","Web Developer (Magang)","\u002Fimg\u002Fprojects\u002Fdisposisi.jpg",{"title":433,"description":482},[153,154,496,497],"Bootstrap","jQuery","id\u002Fprojects\u002Fdisposisi","Sistem korespondensi PHP native yang dibangun saat magang di BNPB — login berbasis sesi, manajemen pengguna dan profil, pencarian, serta dashboard di atas catatan disposisi dokumen.","archive","47ceB-fTcUB83g4szL5Z4fJN1sDizRWKl-htqLBlrXw",{"id":503,"title":504,"body":505,"category":518,"date":62,"description":519,"extension":64,"externalUrl":520,"featured":66,"locale":67,"meta":521,"navigation":69,"outcome":522,"path":526,"rank":527,"release":528,"role":78,"screenshot":529,"seo":530,"stack":531,"stem":536,"summary":537,"tier":500,"year":282,"__hash__":538},"projects\u002Fid\u002Fprojects\u002Fdychord.md","Dychord",{"type":8,"value":506,"toc":515},[507,510,512],[11,508,509],{},"Dychord adalah eksperimen mobile hybrid awal: referensi kunci gitar yang dibangun dengan Apache Cordova. Aplikasi ini membungkus antarmuka HTML\u002FCSS\u002FJS buatan sendiri dalam shell Cordova, menyimpan data kunci di SQLite agar bisa dibaca offline, dan dikemas dengan folder platform Android serta splash screen — satu putaran penuh pertama dalam mengemas frontend web menjadi aplikasi mobile yang bisa didistribusikan.",[15,511,51],{"id":50},[11,513,514],{},"Diarsipkan sebagai artefak era eksperimen: salah satu perhentian di jalur mobile hybrid, beberapa tahun sebelum pekerjaan Flutter yang datang kemudian. Ia menunjukkan mekanismenya — shell, data lokal, kemasan platform — lebih daripada menjadi produk jadi.",{"title":56,"searchDepth":57,"depth":57,"links":516},[517],{"id":50,"depth":57,"text":51},"Mobile · Eksperimen (Arsip)","Eksperimen mobile hybrid awal — aplikasi referensi kunci gitar yang dibangun dengan Cordova.","https:\u002F\u002Fgithub.com\u002Framadhanep\u002Fdychord",{},[523,524,525],"Aplikasi mobile hybrid berbasis Cordova dengan UI HTML\u002FCSS\u002FJavaScript buatan sendiri.","Data kunci gitar disimpan dan dibaca dari penyimpanan lokal SQLite.","Splash screen dan folder platform untuk distribusi gaya Android.","\u002Fid\u002Fprojects\u002Fdychord","19","Mar 2020","\u002Fimg\u002Fprojects\u002Fdychord.jpg",{"title":504,"description":519},[532,533,534,535],"Cordova","HTML","CSS","JavaScript","id\u002Fprojects\u002Fdychord","Aplikasi Cordova yang membungkus antarmuka HTML\u002FCSS\u002FJS buatan sendiri dan data SQLite menjadi referensi kunci gitar portabel.","59i4jeZfrJJe6wkbV69Dsb5F524p5RQttIfINm0TUOs",{"id":540,"title":541,"body":542,"category":555,"date":62,"description":556,"extension":64,"externalUrl":557,"featured":66,"locale":67,"meta":558,"navigation":69,"outcome":559,"path":563,"rank":564,"release":565,"role":566,"screenshot":567,"seo":568,"stack":569,"stem":571,"summary":572,"tier":500,"year":573,"__hash__":574},"projects\u002Fid\u002Fprojects\u002Fvicare.md","Vicare",{"type":8,"value":543,"toc":552},[544,547,549],[11,545,546],{},"Vicare adalah eksperimen frontend awal: template halaman arahan layanan kesehatan virtual yang mengeksplorasi seperti apa antarmuka produk telehealth. Ini latihan desain, bukan produk layanan kesehatan — nilainya ada di bagian yang dieksplorasi: pencarian dokter, apotek online, konsultasi, penanganan darurat, dan konsep pelacakan data kesehatan, ditata responsif dengan Tailwind CSS.",[15,548,51],{"id":50},[11,550,551],{},"Diarsipkan bersama eksperimen frontend lain: catatan periode 2021 yang dihabiskan untuk menyusun antarmuka produk sebelum era product engineering modern.",{"title":56,"searchDepth":57,"depth":57,"links":553},[554],{"id":50,"depth":57,"text":51},"Frontend · Eksperimen (Arsip)","Eksperimen frontend\u002Fdesain awal yang mengeksplorasi antarmuka produk layanan kesehatan virtual.","https:\u002F\u002Fgithub.com\u002Framadhanep\u002Fvicare",{},[560,561,562],"Halaman arahan responsif berbasis Tailwind yang mengeksplorasi antarmuka produk layanan kesehatan virtual.","Bagian konsep untuk pencarian dokter, apotek online, konsultasi, penanganan darurat, dan pelacakan data kesehatan.","Diterbitkan sebagai demo live di GitHub Pages.","\u002Fid\u002Fprojects\u002Fvicare","20","2021","Frontend Developer","\u002Fimg\u002Fprojects\u002Fvicare.jpg",{"title":541,"description":556},[533,534,570],"Tailwind CSS","id\u002Fprojects\u002Fvicare","Eksperimen halaman arahan responsif seputar konsep UI layanan kesehatan — pencarian dokter, apotek online, konsultasi, penanganan darurat, dan pelacakan data kesehatan.",2021,"gyhhKEYoUAyyVgSsIDjwz485rD9ndVjMS56sz_9It1s",{"id":576,"title":577,"body":578,"category":682,"date":62,"description":683,"extension":64,"externalUrl":684,"featured":69,"locale":67,"meta":685,"navigation":69,"outcome":686,"path":691,"rank":692,"release":693,"role":148,"screenshot":694,"seo":695,"stack":696,"stem":701,"summary":702,"tier":86,"year":703,"__hash__":704},"projects\u002Fid\u002Fprojects\u002Faruna-dashboard.md","Aruna",{"type":8,"value":579,"toc":674},[580,583,586,590,593,597,600,604,636,640,660,664,667,671],[11,581,582],{},"Aruna adalah produk personal yang dibangun untuk satu titik sakit yang terus saya lihat: investor ritel Indonesia memetakan saham tanpa konteks musiman — apa yang terjadi pada pasar di sekitar siklus pemilu, kapan sektor berotasi, atau ke arah mana uang institusi sebenarnya bergerak. Data pasar mentah banyak tersedia; hampir tidak ada yang menghubungkannya ke sebuah keputusan.",[11,584,585],{},"Saya membangun semuanya sendiri: definisi produk, desain, analitik backend, frontend, dan deployment. Platform ini berjalan sebagai progressive web app.",[15,587,589],{"id":588},"masalahnya","Masalahnya",[11,591,592],{},"Investor ritel di pasar Indonesia haus pola tetapi kekurangan data. Perilaku musiman terkubur dalam bertahun-tahun sejarah, money flow institusi terkunci di dalam data transaksi broker, dan alat analisis yang menambah konteks biasanya berbayar atau menyembunyikan datanya di balik langganan.",[15,594,596],{"id":595},"peran-saya","Peran saya",[11,598,599],{},"Founder, pemilik produk, dan satu-satunya engineer. Masalah yang ambigu, pengguna nyata, tanpa spesifikasi yang menunggu — persis jenis pekerjaan yang ingin saya dikenal.",[15,601,603],{"id":602},"pekerjaan-teknis","Pekerjaan teknis",[20,605,606,612,618,624,630],{},[23,607,608,611],{},[26,609,610],{},"Analisis musiman."," Grafik return historis dengan konteks siklus politik dan pemilu, plus heatmap return bulanan dan kuartalan.",[23,613,614,617],{},[26,615,616],{},"Money flow institusi."," Mesin skoring kustom yang menarik data transaksi broker untuk mengevaluasi akumulasi versus distribusi, ditampilkan sebagai skor per saham.",[23,619,620,623],{},[26,621,622],{},"Pelacak progres MSCI."," Perhitungan estimasi progres kapitalisasi pasar free-float saham IDX menuju ambang inklusi MSCI Standard dan Small Cap.",[23,625,626,629],{},[26,627,628],{},"Data local-first."," State watchlist dan portofolio hidup di browser terlebih dahulu, lalu bergabung dan sinkron ke Supabase (dengan keamanan tingkat baris) setelah pengguna masuk.",[23,631,632,635],{},[26,633,634],{},"Visualisasi interaktif."," Relative Rotation Graph, peta bubble pasar berbasis canvas, dan chart candlestick ala TradingView.",[15,637,639],{"id":638},"keputusan","Keputusan",[20,641,642,648,654],{},[23,643,644,647],{},[26,645,646],{},"Sinkronisasi local-first."," Watchlist pasar saham berubah cepat dan dibaca terus-menerus. Menjaga state lokal membuat aplikasi terasa instan sambil autentikasi terjadi di latar belakang.",[23,649,650,653],{},[26,651,652],{},"Amplop API terobfuskasi."," Aplikasi mem-proxy endpoint Yahoo Finance dan Stockbit di sisi server. Saya membungkus respons dalam amplop JSON terobfuskasi XOR agar proxy tidak mudah di-scrape.",[23,655,656,659],{},[26,657,658],{},"Cron server-side untuk analitik."," Skoring dan screening berat berjalan pada pekerjaan terjadwal, bukan di browser. Klien tetap antarmuka tipis yang cepat dan hosting tetap murah.",[15,661,663],{"id":662},"batasan","Batasan",[11,665,666],{},"Bangunan solo dengan anggaran kecil. Semua yang berbiaya berulang — komputasi analitik, pengambilan data — harus berjalan di tempat yang murah, dan frontend harus terasa cepat di mobile meski memuat chart padat data.",[15,668,670],{"id":669},"hasil","Hasil",[11,672,673],{},"Aruna berangkat dari ide yang ambigu (\"investor butuh konteks musiman\") menjadi PWA yang di-deploy dengan fitur nyata dan alur data nyata. Ini demonstrasi terkuat yang saya miliki tentang memilikinya sebuah produk dari ujung ke ujung.",{"title":56,"searchDepth":57,"depth":57,"links":675},[676,677,678,679,680,681],{"id":588,"depth":57,"text":589},{"id":595,"depth":57,"text":596},{"id":602,"depth":57,"text":603},{"id":638,"depth":57,"text":639},{"id":662,"depth":57,"text":663},{"id":669,"depth":57,"text":670},"Produk · Fintech","Platform analisis pasar saham mobile-first untuk investor ritel Indonesia — konteks musiman, pergerakan uang institusi, dan state local-first.","https:\u002F\u002Farunaa.vercel.app",{},[687,688,689,690],"Membangun grafik pola musiman, Relative Rotation Graph, dan skoring money flow.","Mengirim watchlist dan portofolio local-first yang disinkronkan melalui Supabase RLS.","Membungkus endpoint data pasar yang di-proxy dalam amplop respons terobfuskasi XOR.","Menjalankan analitik berat pada cron job server-side agar bundle klien tetap ringan.","\u002Fid\u002Fprojects\u002Faruna-dashboard","3","2025","\u002Fimg\u002Fprojects\u002Faruna.png",{"title":577,"description":683},[697,698,699,700],"Next.js","Supabase","React","PWA","id\u002Fprojects\u002Faruna-dashboard","Produk finansial padat data yang saya bangun sendiri — dari ide yang ambigu hingga PWA yang berjalan — analisis musiman, pelacakan money flow institusi, dan sinkronisasi offline-first.",2025,"DK7Pia4IktbrahiBf-iM7M3rbaIxmDYTH_0PEBDNtKw",{"id":706,"title":707,"body":708,"category":776,"date":62,"description":777,"extension":64,"externalUrl":778,"featured":66,"locale":67,"meta":779,"navigation":69,"outcome":780,"path":785,"rank":786,"release":787,"role":148,"screenshot":788,"seo":789,"stack":790,"stem":799,"summary":800,"tier":86,"year":801,"__hash__":802},"projects\u002Fid\u002Fprojects\u002Ffastvest.md","Fastvest",{"type":8,"value":709,"toc":771},[710,713,717,720,724,727,741,745],[11,711,712],{},"Fastvest adalah pelacak portofolio yang lokal-first. Buka aplikasi, nilai portofolio dan P&L belum terealisasi langsung tampil, dan Anda bisa menyegarkan harga pasar tanpa membuat akun — dan tanpa mengirim portofolio Anda ke mana pun. Ini adalah aplikasi pemantauan untuk portofolio sendiri, bukan nasihat keuangan.",[15,714,716],{"id":715},"model-privasi","Model privasi",[11,718,719],{},"Konfigurasi portofolio hanya ada di localStorage browser. Tidak pernah disimpan di server, tidak dicatat, dan tidak dikirim ke analytics. Menghapus penyimpanan browser menghapus portofolio lokal Anda kecuali backup sudah diekspor. Satu-satunya hal yang dikirim adalah permintaan data pasar; server berperan sebagai gateway data, bukan penyimpan portofolio.",[15,721,723],{"id":722},"cara-kerjanya","Cara kerjanya",[11,725,726],{},"Holding dimasukkan dan diedit di sisi klien — jumlah posisi dan cost basis per simbol, tanpa biaya untuk mencatat — dan data portofolio serta harga bisa diimpor dan diekspor sebagai JSON. Antarmuka menampilkan total nilai, cost basis, P&L belum terealisasi, P&L hari ini, tampilan alokasi, dan tabel holding yang bisa diurutkan. Siklus penyegaran 60 detik menjalankan quote melalui strategi stale-while-refresh: harga ter-cache tampil seketika sementara data basi divalidasi ulang di latar belakang, bukan memblokir layar.",[11,728,729,730,733,734,733,737,740],{},"Data pasar mengalir melalui route API Nitro (",[445,731,732],{},"\u002Fapi\u002Fquotes",", ",[445,735,736],{},"\u002Fapi\u002Fsearch",[445,738,739],{},"\u002Fapi\u002Fchart","), yang membungkus Yahoo Finance dengan penanganan timeout, caching, dan normalisasi error. Karena browser tidak pernah berkomunikasi langsung dengan penyedia data, quote tetap tangguh terhadap kendala endpoint pihak ketiga.",[15,742,744],{"id":743},"keputusan-engineering","Keputusan engineering",[20,746,747,753,759,765],{},[23,748,749,752],{},[26,750,751],{},"Memisahkan kepemilikan dari pengambilan."," Data portofolio dan data pasar adalah domain kepercayaan berbeda; menyimpan satu di sisi klien dan satu lagi di sisi server membuat setiap batasan kecil dan bisa diuji.",[23,754,755,758],{},[26,756,757],{},"Validasi bersama."," Skema Zod didefinisikan sekali dan dipakai di kedua sisi, sehingga klien dan server tidak mungkin melenceng tentang bentuk quote atau hasil pencarian.",[23,760,761,764],{},[26,762,763],{},"Offline sebagai perilaku bawaan."," Caching application shell PWA membuat shell aplikasi bisa dimuat offline dan harga ter-cache sebelumnya tetap terlihat.",[23,766,767,770],{},[26,768,769],{},"Menguji permukaan."," Unit test mencakup kalkulasi dan format keuangan; Playwright mencakup alur yang penting — membuka aplikasi, menambah holding, menyegarkan quote.",{"title":56,"searchDepth":57,"depth":57,"links":772},[773,774,775],{"id":715,"depth":57,"text":716},{"id":722,"depth":57,"text":723},{"id":743,"depth":57,"text":744},"Open Source · FinTech · Privasi","Pelacak portofolio lokal-first — buka aplikasi, langsung lihat nilai portofolio dan P&L, segarkan harga pasar — tanpa akun dan tanpa basis data portofolio di server.","https:\u002F\u002Ffastvest.vercel.app",{},[781,782,783,784],"Model portofolio lokal-first — portofolio tersimpan di localStorage browser dan tidak pernah disimpan server-side, dicatat, atau dikirim ke analytics.","Gateway data pasar server-side (API route Nitro yang membungkus Yahoo Finance) dengan caching, penanganan timeout, dan normalisasi error.","Quote ter-cache stale-while-refresh plus application shell PWA yang bekerja offline.","Skema Zod dibagikan antara klien dan server, dengan unit test Vitest dan end-to-end test Playwright.","\u002Fid\u002Fprojects\u002Ffastvest","4","2026",null,{"title":707,"description":777},[791,792,793,794,570,795,796,700,797,798],"Nuxt 4","Vue 3","TypeScript","Nitro","shadcn-vue","Yahoo Finance","Vitest","Playwright","id\u002Fprojects\u002Ffastvest","Pelacak portofolio lokal-first yang dibangun di sekitar privasi — portofolio tersimpan di penyimpanan browser, data pasar datang dari gateway server-side dengan quote ter-cache stale-while-refresh dan dukungan offline.",2026,"duPcLBDgBxOBFPctXGODVoARsXg1T3XjejMULpb66Lg",{"id":804,"title":805,"body":806,"category":854,"date":62,"description":855,"extension":64,"externalUrl":856,"featured":69,"locale":67,"meta":857,"navigation":69,"outcome":858,"path":864,"rank":786,"release":865,"role":492,"screenshot":866,"seo":867,"stack":868,"stem":869,"summary":870,"tier":86,"year":220,"__hash__":871},"projects\u002Fid\u002Fprojects\u002Frealisasi-anggaran.md","BNPB Realisasi Anggaran",{"type":8,"value":807,"toc":849},[808,811,813,816,818,844,846],[11,809,810],{},"Realisasi Anggaran adalah sistem internal pertama yang saya kirim di BNPB. Aplikasi ini memindahkan alur anggaran yang semula berbasis spreadsheet ke aplikasi web tempat administrasi keuangan bisa direncanakan, dilacak, dan dilaporkan.",[15,812,100],{"id":99},[11,814,815],{},"Sistem dibangun mengikuti bentuk pelaksanaan anggaran pemerintah: kegiatan dan sub-kegiatannya, paket anggaran yang menjadi sumbernya, serta penyerapan anggaran seiring waktu. Pengguna mencatat penyerapan terhadap paket, lalu menghasilkan laporan yang benar-benar dipakai alur pelaporan.",[15,817,107],{"id":106},[20,819,820,826,832,838],{},[23,821,822,825],{},[26,823,824],{},"Laravel 5.7 di atas PHP 7.1."," Framework dan runtime pada masanya, dipilih untuk standar autentikasi dan struktur CRUD yang diberikannya.",[23,827,828,831],{},[26,829,830],{},"Alur yang dilindungi autentikasi."," Tidak ada jalur data tanpa autentikasi; seluruh alur administrasi berada di belakang auth Laravel.",[23,833,834,837],{},[26,835,836],{},"Pelaporan sebagai output kelas satu."," Di luar tampilan di layar, sistem mengekspor XLSX dan PDF serta mendukung cetak — karena yang dikonsumsi bagian keuangan adalah laporan, bukan layar.",[23,839,840,843],{},[26,841,842],{},"Model anggaran yang hierarkis."," Sub-kegiatan berada di bawah kegiatan, paket di bawah sub-kegiatan, sehingga model mencerminkan cara data anggaran diagregasi.",[15,845,51],{"id":50},[11,847,848],{},"Dari sinilah pekerjaan sistem pemerintahan saya dimulai: modelkan catatannya sebelum layarnya, jadikan status eksplisit, dan jadikan output sebagai hal yang benar-benar dipakai orang. Magang yang sama menghasilkan sistem pendataan bantuan Bantuan BPBD dan pelacak surat Disposisi; lembaga yang sama kemudian mempekerjakan saya sebagai freelancer untuk SIRINE.",{"title":56,"searchDepth":57,"depth":57,"links":850},[851,852,853],{"id":99,"depth":57,"text":100},{"id":106,"depth":57,"text":107},{"id":50,"depth":57,"text":51},"Pemerintahan · Administrasi Keuangan","Sistem administrasi keuangan pemerintah untuk BNPB — perencanaan kegiatan, sub-kegiatan, paket anggaran, penyerapan anggaran, dan pelaporan dengan ekspor XLSX\u002FPDF.","https:\u002F\u002Fgithub.com\u002Framadhanep\u002Fbnpb-realisasi-anggaran",{},[859,861,862],{"Memodelkan struktur anggaran pemerintah":860},"kegiatan, sub-kegiatan, dan paket anggaran secara hierarkis.","Mencatat penyerapan anggaran lewat alur CRUD terautentikasi yang dilindungi Laravel authentication.",{"Menjadikan output pelaporan sebagai hasil utama":863},"ekspor XLSX dan PDF plus alur cetak.","\u002Fid\u002Fprojects\u002Frealisasi-anggaran","Jan 2019","\u002Fimg\u002Fprojects\u002Frealisasi-anggaran.jpg",{"title":805,"description":855},[217,154,153],"id\u002Fprojects\u002Frealisasi-anggaran","Sistem administrasi keuangan berbasis Laravel yang dibangun saat magang di BNPB — mencatat kegiatan, sub-kegiatan, paket anggaran, dan penyerapan anggaran dengan alur ekspor dan pelaporan.","2-28k3zjA-CYLW0sPox6edFkdaQzIB0u9cZxRfNU1fc",{"id":873,"title":874,"body":875,"category":930,"date":62,"description":931,"extension":64,"externalUrl":932,"featured":66,"locale":67,"meta":933,"navigation":69,"outcome":934,"path":940,"rank":941,"release":787,"role":148,"screenshot":942,"seo":943,"stack":944,"stem":946,"summary":947,"tier":86,"year":801,"__hash__":948},"projects\u002Fid\u002Fprojects\u002Feaseason.md","Easeason",{"type":8,"value":876,"toc":924},[877,880,882,885,889,892,895,899,902,904],[11,878,879],{},"Easeason adalah alat visualisasi riset open source berukuran kecil untuk mengeksplorasi bagaimana aset bergerak secara historis sepanjang tahun — lintas saham, kripto, dan indeks, serta berdasarkan jendela siklus pemilihan presiden AS. Ini adalah permukaan riset, bukan mesin prediksi: menampilkan pola historis, dan tidak mengklaim pola itu meramalkan masa depan.",[15,881,100],{"id":99},[11,883,884],{},"Jelajahi serangkaian aset terkurasi yang dikelompokkan ke Kripto, Saham AS, Saham IDX, dan Indeks. Buka simbol apa pun dan Easeason menampilkan profil seasonal — return kumulatif sepanjang tahun kalender — untuk jendela yang dipilih: semua tahun, tahun pemilu, pra-pemilu, pertengahan masa, pasca-pemilu, tahun kepresidenan Trump, atau tahun berjalan. Ringkasan statistik (rata-rata, median, standar deviasi, win rate, return terbaik dan terburuk, return akhir tahun) tampil di samping grafik.",[15,886,888],{"id":887},"teknis","Teknis",[11,890,891],{},"Bagian tersulit adalah data pasar. OHLCV historis diambil server-side dari Yahoo Finance melalui API route Nitro, sehingga browser tidak pernah berkomunikasi langsung dengan penyedia data. Kalkulasi seasonal berjalan pada basis return harian adjusted close, mengklasifikasikan setiap tahun ke kategori siklus pemilu, dan menghasilkan deret return kumulatif hari-ke-tahun yang dipakai grafik maupun endpoint ekspor.",[11,893,894],{},"Lapisan visualisasi memakai ECharts: responsif, mendukung tema gelap\u002Fterang, dengan pemutaran animasi tahun dari 1 Januari sampai 31 Desember serta kontrol kecepatan.",[15,896,898],{"id":897},"ekspor-riset","Ekspor riset",[11,900,901],{},"Grafik dapat diekspor sebagai PNG, tetapi jalur riset juga mencakup Markdown: ekspor konteks seasonality per-simbol, serta endpoint Markdown yang mudah dibaca AI sehingga model bahasa bisa mengonsumsi dataset seasonal beserta penjelasannya.",[15,903,639],{"id":638},[20,905,906,912,918],{},[23,907,908,911],{},[26,909,910],{},"Pengambilan data server-side."," Data Yahoo tetap di belakang route Nitro, menjaga logika klien fokus pada dataset, bukan transportnya.",[23,913,914,917],{},[26,915,916],{},"Kalkulasi sebagai utilitas terisolasi dan teruji."," Matematika seasonality hidup di utilitas server dengan cakupan Vitest, sehingga algoritmenya bisa diaudit alih-alih terkubur di kode grafik.",[23,919,920,923],{},[26,921,922],{},"Markdown sebagai antarmuka."," Menjadikan riset dapat diekspor dan terbaca mesin memperluas pemakaian alat ini melampaui sesi browser.",{"title":56,"searchDepth":57,"depth":57,"links":925},[926,927,928,929],{"id":99,"depth":57,"text":100},{"id":887,"depth":57,"text":888},{"id":897,"depth":57,"text":898},{"id":638,"depth":57,"text":639},"Open Source · Riset · Visualisasi Data","Alat visualisasi riset open source untuk mengeksplorasi seasonality pasar historis lintas saham, kripto, dan indeks.","https:\u002F\u002Feaseason.vercel.app",{},[935,936,938,939],"Pemrosesan data pasar server-side, dengan data historis OHLCV diambil dari Yahoo Finance melalui API route Nitro.",{"Kalkulasi seasonality yang bisa dipakai ulang":937},"return harian adjusted close, klasifikasi hari-ke-tahun, dan pengelompokan siklus pemilu.","Visualisasi ECharts interaktif dengan pemutaran animasi Januari–Desember dan ekspor PNG.","Endpoint Markdown yang mudah dibaca AI sehingga LLM bisa mengonsumsi dataset seasonal beserta konteksnya.","\u002Fid\u002Fprojects\u002Feaseason","5","\u002Fimg\u002Fprojects\u002Feaseason.png",{"title":874,"description":931},[791,793,344,945,570,795,796,797],"ECharts","id\u002Fprojects\u002Feaseason","Alat riset open source untuk melihat bagaimana aset bergerak secara historis sepanjang tahun — termasuk pola siklus pemilihan presiden AS — dengan visualisasi ECharts interaktif dan kalkulasi seasonality yang bisa dipakai ulang.","H3EMkBtE1rdVnHh8pttqIuZeh6fY7d9nqF-XOTQwCjc",{"id":950,"title":951,"body":952,"category":1000,"date":62,"description":1001,"extension":64,"externalUrl":1002,"featured":69,"locale":67,"meta":1003,"navigation":69,"outcome":1004,"path":1008,"rank":941,"release":1009,"role":492,"screenshot":1010,"seo":1011,"stack":1012,"stem":1013,"summary":1014,"tier":86,"year":220,"__hash__":1015},"projects\u002Fid\u002Fprojects\u002Fbantuan-bpbd.md","BNPB Bantuan BPBD",{"type":8,"value":953,"toc":995},[954,957,959,962,964,990,992],[11,955,956],{},"Bantuan BPBD adalah sisi pengelolaan bantuan dari magang di BNPB. Jika Realisasi Anggaran melacak uang, sistem ini melacak bantuan: siapa saja regionnya, bantuan apa yang diajukan dan didistribusikan, serta bagaimana serah terimanya.",[15,958,100],{"id":99},[11,960,961],{},"Sistem berpusat pada entitas regional — provinsi, kabupaten\u002Fkota, dan pembentukan BPBD — lalu menumpuk catatan bantuan di atasnya. Cakupan meliputi jenis bantuan, proposal bantuan, dan penyaluran bantuan tingkat provinsi serta kabupaten\u002Fkota, dengan catatan detail dan tampilan agregat untuk pelaporan. Alur terkait BASTO mendukung dokumen serah terima yang meresmikan penyaluran, dengan output PDF di sisi pelaporan.",[15,963,107],{"id":106},[20,965,966,972,978,984],{},[23,967,968,971],{},[26,969,970],{},"Laravel 5.7 dengan autentikasi dan dukungan upload."," Entri data yang terautentikasi, dengan paket Laravel untuk bagian penanganan berkas seperti dokumen BASTO.",[23,973,974,977],{},[26,975,976],{},"Entitas sebelum catatan."," Model regional datang lebih dulu; setiap catatan bantuan mereferensikannya, sehingga data tetap terstruktur dan mudah dicari.",[23,979,980,983],{},[26,981,982],{},"Manajemen pengguna."," Administrasi mencakup pengelolaan pengguna yang mengisi dan memverifikasi data bantuan.",[23,985,986,989],{},[26,987,988],{},"Detail dan agregat."," Catatan bantuan ditangkap presisi, sementara tampilan agregat menjawab pertanyaan pelaporan.",[15,991,51],{"id":50},[11,993,994],{},"Bersama Realisasi Anggaran dan Disposisi, ini adalah bab magang tentang sistem administrasi pemerintahan: struktur data yang jelas, status yang eksplisit, dan output yang sesuai kebutuhan pelaporan nyata.",{"title":56,"searchDepth":57,"depth":57,"links":996},[997,998,999],{"id":99,"depth":57,"text":100},{"id":106,"depth":57,"text":107},{"id":50,"depth":57,"text":51},"Pemerintahan · Pengelolaan Bantuan","Sistem pengelolaan bantuan untuk distribusi BPBD — entitas regional, proposal bantuan, catatan bantuan, dan alur BASTO dengan pelaporan.","https:\u002F\u002Fgithub.com\u002Framadhanep\u002Fbnpb-bantuan-bpbd",{},[1005,1006,1007],"Memodelkan struktur regional — provinsi, kabupaten\u002Fkota, dan pembentukan BPBD — sebagai entitas kelas satu.","Menangani jenis bantuan, proposal bantuan, serta catatan bantuan tingkat provinsi dan kabupaten\u002Fkota dengan tampilan detail dan agregat.","Mendukung alur BASTO plus output PDF dan pelaporan.","\u002Fid\u002Fprojects\u002Fbantuan-bpbd","Feb 2019","\u002Fimg\u002Fprojects\u002Fbantuan-bpbd.jpg",{"title":951,"description":1001},[217,154,153],"id\u002Fprojects\u002Fbantuan-bpbd","Sistem pengelolaan bantuan berbasis Laravel yang dibangun saat magang di BNPB — entitas regional, jenis dan proposal bantuan, catatan bantuan tingkat provinsi dan kabupaten\u002Fkota, alur BASTO, dan pelaporan.","M3SJozfGrZxXCdE8W2BPQPYU01XDrd8thvjB4cv_Qgs",{"id":1017,"title":1018,"body":1019,"category":1059,"date":62,"description":1060,"extension":64,"externalUrl":856,"featured":66,"locale":67,"meta":1061,"navigation":69,"outcome":1062,"path":1067,"rank":1068,"release":1069,"role":1070,"screenshot":866,"seo":1071,"stack":1072,"stem":1073,"summary":1074,"tier":86,"year":220,"__hash__":1075},"projects\u002Fid\u002Fprojects\u002Fbnpb-internship.md","Aplikasi Administrasi BNPB",{"type":8,"value":1020,"toc":1055},[1021,1024,1028,1048,1052],[11,1022,1023],{},"Selama magang tiga bulan di BNPB Indonesia, saya membangun tiga aplikasi web administrasi internal. Ini pekerjaan awal — sistem CRUD Laravel + MySQL — tetapi mengajarkan pelajaran yang muncul di semua yang saya kerjakan setelahnya: bagaimana data pemerintahan mengalir, mengapa struktur yang rapi itu penting, dan bagaimana mengirimkan sesuatu yang benar-benar dipakai pengguna internal.",[15,1025,1027],{"id":1026},"aplikasinya","Aplikasinya",[20,1029,1030,1036,1042],{},[23,1031,1032,1035],{},[26,1033,1034],{},"Realisasi Anggaran"," — mencatat realisasi anggaran dan menopang alur pelaporan.",[23,1037,1038,1041],{},[26,1039,1040],{},"Bantuan BPBD"," — mencatat data pendistribusian bantuan BPBD dengan struktur yang rapi dan mudah dicari.",[23,1043,1044,1047],{},[26,1045,1046],{},"Disposisi"," — melacak disposisi surat masuk dan status dokumen.",[15,1049,1051],{"id":1050},"yang-dilatih","Yang dilatih",[11,1053,1054],{},"Masing-masing memaksa disiplin yang sama: memahami kebutuhan pelaporan sebelum membuat form, memodelkan data alih-alih layar, dan memperlakukan status sebagai bagian kelas satu dari alur. Ini blok penyusun sederhana, tetapi itulah yang membuat sistem produksi. Lembaga yang sama kemudian mempekerjakan saya sebagai freelancer untuk sistem peringatan bencana SIRINE.",{"title":56,"searchDepth":57,"depth":57,"links":1056},[1057,1058],{"id":1026,"depth":57,"text":1027},{"id":1050,"depth":57,"text":1051},"Pemerintahan · Magang","Tiga aplikasi administrasi internal yang dibangun saat magang di BNPB — realisasi anggaran, pendataan bantuan, dan pelacakan disposisi surat.",{},[1063,1064,1066],"Menggantikan spreadsheet dengan aplikasi web untuk alur anggaran, bantuan, dan dokumen.",{"Belajar memodelkan data administrasi pemerintahan":1065},"catatan, status, dan pelaporan.","Mengirim tiga sistem internal dalam magang tiga bulan.","\u002Fid\u002Fprojects\u002Fbnpb-internship","6","Jan – Mar 2019","Web Developer Magang",{"title":1018,"description":1060},[217,154,153],"id\u002Fprojects\u002Fbnpb-internship","Pekerjaan awal yang dekat dengan produksi di BNPB — tiga aplikasi web internal yang melatih kebiasaan membangun sistem administrasi dengan alur data yang jelas.","5kiNJ69OJwJOreMz6yfCd6ESyb9j_bfI8NO7b6MGeOI",{"id":1077,"title":1078,"body":1079,"category":1135,"date":62,"description":1136,"extension":64,"externalUrl":417,"featured":66,"locale":67,"meta":1137,"navigation":69,"outcome":1138,"path":1142,"rank":1143,"release":77,"role":566,"screenshot":1144,"seo":1145,"stack":1146,"stem":1147,"summary":1148,"tier":86,"year":87,"__hash__":1149},"projects\u002Fid\u002Fprojects\u002Fcek-hoax-pwa.md","CekHoax",{"type":8,"value":1080,"toc":1128},[1081,1084,1086,1089,1091,1094,1096,1107,1109,1123,1125],[11,1082,1083],{},"CekHoax adalah platform pengecekan fakta yang dibangun untuk UNICEF, tempat pembaca hanya punya satu tugas: menemukan klaim, memverifikasi klarifikasinya, dan kembali ke hari mereka. Keputusan produk yang paling penting adalah pengekangan — platform informasi publik sukses ketika tidak ada yang berdiri di antara pembaca dan teks.",[15,1085,589],{"id":588},[11,1087,1088],{},"Misinformasi dikonsumsi di ponsel murah dengan jaringan lambat, sering kali pada saat mendesak. Platform pengecekan fakta yang memuat halaman berat atau mengubur artikel di balik tata letak yang sibuk, pada praktiknya, mengundurkan diri dari pekerjaan itu. Antarmuka harus cepat, mudah dipindai, dan terbaca di perangkat yang benar-benar dipakai audiensnya.",[15,1090,596],{"id":595},[11,1092,1093],{},"Frontend developer yang memegang antarmuka publik: struktur halaman, pencarian, ritme artikel, dan perilaku PWA.",[15,1095,603],{"id":602},[20,1097,1098,1101,1104],{},[23,1099,1100],{},"Menjaga struktur halaman tetap ringan secara sengaja agar konten artikel tetap terbaca di mobile.",[23,1102,1103],{},"Merancang interaksi pencarian dan daftar artikel yang sederhana, tanpa elemen dekoratif yang bersaing mendapat perhatian.",[23,1105,1106],{},"Menerapkan perilaku PWA agar kunjungan berulang terasa lebih cepat.",[15,1108,639],{"id":638},[20,1110,1111,1117],{},[23,1112,1113,1116],{},[26,1114,1115],{},"Menghapus, bukan menambah."," Pada produk konten publik, keputusan desain yang baik sering kali berarti menghapus yang tidak membantu. Bobot visual tetap di teks.",[23,1118,1119,1122],{},[26,1120,1121],{},"Komponen kecil, kopling longgar."," Frontend disusun dalam potongan yang cukup kecil sehingga daftar, kartu, dan halaman detail bisa berevolusi tanpa saling mengunci.",[15,1124,670],{"id":669},[11,1126,1127],{},"Frontend pengecekan fakta publik yang memperlakukan keterbacaan sebagai produk — disiplin yang sama saya bawa ke setiap antarmuka, apakah melayani sebuah negara atau sebuah dashboard.",{"title":56,"searchDepth":57,"depth":57,"links":1129},[1130,1131,1132,1133,1134],{"id":588,"depth":57,"text":589},{"id":595,"depth":57,"text":596},{"id":602,"depth":57,"text":603},{"id":638,"depth":57,"text":639},{"id":669,"depth":57,"text":670},"Pemerintahan · PWA","PWA pengecekan fakta untuk UNICEF — antarmuka publik yang dibangun di atas pencarian cepat dan artikel panjang yang mudah dibaca.",{},[1139,1140,1141],"Membangun frontend publik yang ringan dengan kejelasan di atas dekorasi.","Membuat pencarian dan penelusuran artikel cepat di perangkat mobile kelas bawah.","Menerapkan perilaku PWA agar pembaca yang kembali memuat lebih cepat.","\u002Fid\u002Fprojects\u002Fcek-hoax-pwa","7","\u002Fimg\u002Fprojects\u002Fcek-hoax.jpg",{"title":1078,"description":1136},[344,700],"id\u002Fprojects\u002Fcek-hoax-pwa","Platform pengecekan fakta untuk publik, dibangun untuk UNICEF. Fokus saya adalah frontend — penemuan cepat, membaca artikel yang tenang, dan antarmuka yang cukup ringan untuk jaringan mobile.","ST7A66PBHXLgdne43wYz5mkfQKL2wIIXpFR1Qe7FnYs",{"id":1151,"title":1152,"body":1153,"category":1163,"date":62,"description":1164,"extension":64,"externalUrl":417,"featured":66,"locale":67,"meta":1165,"navigation":69,"outcome":1166,"path":1167,"rank":1168,"release":1169,"role":148,"screenshot":788,"seo":1170,"stack":1171,"stem":1172,"summary":1173,"tier":86,"year":282,"__hash__":1174},"projects\u002Fid\u002Fprojects\u002Fsirine.md","SIRINE",{"type":8,"value":1154,"toc":1161},[1155,1158],[11,1156,1157],{},"SIRINE adalah sistem peringatan bencana yang dioperasikan BNPB, badan penanggulangan bencana nasional Indonesia. Saya membangunnya sebagai bagian dari keterlibatan freelance dengan BNPB yang berjalan sepanjang periode Feb 2020 – Des 2023 yang tercatat di timeline.",[11,1159,1160],{},"Pelajaran dari proyek ini sejajar antara konteks dan kode: pada saat keterlibatan ini berakhir, saya telah membangun sistem peringatan nasional, platform pengecekan fakta, dan sistem administrasi internal untuk sebuah agensi pemerintah — pekerjaan yang berjalan di atas batasan nyata, pengguna nyata, dan konsekuensi nyata jika gagal.",{"title":56,"searchDepth":57,"depth":57,"links":1162},[],"Pemerintahan · Freelance","Sistem peringatan bencana yang dibangun untuk BNPB, badan penanggulangan bencana nasional Indonesia.",{},[],"\u002Fid\u002Fprojects\u002Fsirine","8","2020 – 2023",{"title":1152,"description":1164},[],"id\u002Fprojects\u002Fsirine","Pekerjaan freelance untuk BNPB Indonesia — periode yang sama yang juga menghasilkan CekHoax dan sistem administrasi internal yang tercatat di timeline.","l7EN_o6IkE0YcnuFbEpI_7ymyk7B-G-DRXhXkckhYpQ",{"id":1176,"title":1177,"body":1178,"category":1185,"date":62,"description":1186,"extension":64,"externalUrl":1187,"featured":66,"locale":67,"meta":1188,"navigation":69,"outcome":1189,"path":1192,"rank":1193,"release":565,"role":566,"screenshot":1194,"seo":1195,"stack":1196,"stem":1197,"summary":1198,"tier":86,"year":573,"__hash__":1199},"projects\u002Fid\u002Fprojects\u002Fuang-kerja.md","Uang Kerja",{"type":8,"value":1179,"toc":1183},[1180],[11,1181,1182],{},"Uang Kerja adalah platform literasi keuangan yang menggabungkan konten edukasi dengan PWA mobile-first. Tantangannya spesifik untuk produk yang padat konten: materi edukasi membutuhkan cukup struktur agar terbaca, tetapi cukup ringan agar tidak terasa seperti penampil dokumen. Saya fokus pada ritme konten — bagaimana paragraf, judul, dan contoh praktis mengalir di layar kecil — dan menjadikan perilaku PWA cukup halus sehingga pembaca yang kembali mendarat dengan cepat.",{"title":56,"searchDepth":57,"depth":57,"links":1184},[],"Produk · PWA","Platform literasi keuangan untuk Zillennials — konten edukasi terstruktur dalam antarmuka mobile-first.","https:\u002F\u002Fwww.uangkerja.id",{},[1190,1141,1191],"Menyusun konten edukasi agar terbaca bersih di perangkat mobile.","Menjaga komponen UI tetap konsisten lintas berbagai jenis konten.","\u002Fid\u002Fprojects\u002Fuang-kerja","9","\u002Fimg\u002Fprojects\u002Fuang-kerja.webp",{"title":1177,"description":1186},[344,700],"id\u002Fprojects\u002Fuang-kerja","Platform edukasi keuangan mobile-first di mana tantangan desainnya adalah menjaga konten edukasi mudah dipindai tanpa kehilangan struktur.","qCA9cYzph1XRTsO1Ni-TaVhlRyGVkQmqAO__qGxm90w",1789641310547]