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

Gizi Masakan

Kandungan gizi 40 masakan Indonesia, dengan resep di balik setiap angka yang bisa Anda koreksi

Tangkapan layar
masakan Indonesia dengan resep yang bisa diubah
40
zat gizi dari USDA FoodData Central
29
bahan dipetakan ke nama Indonesia
70
request jaringan setelah halaman dimuat
0
Di halaman ini

Masalahnya

Orang Indonesia yang ingin tahu kandungan gizi makanannya kebanyakan memakai aplikasi yang berbasis database makanan luar negeri. Cari nasi padang, gado-gado, atau soto betawi, hasilnya kosong, atau muncul hidangan Amerika yang hampir tidak mirip dengan yang ada di piring. Aplikasi yang memuat masakan Indonesia memberi satu angka yakin tanpa cara hitungnya. "Gado-gado 550 kkal." Gado-gado siapa, dengan bumbu kacang sebanyak apa? Angka itu tidak bisa dicek, jadi tidak bisa dikoreksi.

Sebagian besar aplikasi ini juga berbentuk pencatat kalori. Itu cocok untuk menurunkan berat badan. Masalah gizi terbesar Indonesia adalah stunting dan kekurangan zat gizi mikro, jadi pertanyaan yang lebih berguna adalah "apakah zat besi dan protein saya cukup". Anggaran kalori juga bisa merugikan orang dengan gangguan makan.

Yang saya bangun

Resepnya ada di bawah setiap angka

Setiap halaman masakan menampilkan daftar bahan dan beratnya dalam gram tepat di bawah angka gizinya. Berat bahan bisa diubah, cara masak bisa diganti, misalnya dari goreng ke rebus, dan total, batang kontribusi, serta isian kecukupan ikut berubah saat Anda mengetik. Gado-gado di dua warung berbeda resepnya, dan selisihnya lebih besar dari presisi yang bisa diklaim aplikasi mana pun. Dengan resep yang terlihat, Anda bisa menyesuaikan angkanya dengan dapur sendiri.

Data yang hilang selalu disebut

Kesalahan paling berbahaya dari kalkulator gizi adalah diam-diam melewatkan bahan yang datanya tidak ada. Totalnya masih tampak wajar, padahal terlalu rendah. Saya membuat setiap bahan, nilai gizi, atau faktor masak yang hilang muncul sebagai celah yang disebut namanya, dan totalnya diberi label belum lengkap. Tes memeriksa dua arah: resep yang belum lengkap wajib menyebut celahnya, resep yang lengkap tidak boleh menyebut celah apa pun. Penyesuaian susut saat dimasak hanya punya dua keadaan: diterapkan dengan sumbernya, atau ditandai tidak diterapkan.

Sumber data yang lebih baik dikirim dalam keadaan mati

Sumber terbaik untuk bahan Indonesia adalah TKPI, Tabel Komposisi Pangan Indonesia dari Kemenkes. Masalahnya, TKPI adalah buku berhak cipta dengan semua hak dilindungi, dan pengecualian di UU Hak Cipta hanya berlaku untuk peraturan. Jadi saya membangun adapter TKPI dan merilisnya dalam keadaan nonaktif, dengan alasan hukumnya dicatat di manifes data. Build akan gagal kalau ada sumber yang lisensinya tidak tercatat. Kalau suatu hari izin didapat, akurasinya naik tanpa perlu mengubah bagian lain.

Situsnya terbuka soal tebakannya sendiri

Berat bahan di ke-40 resep masih perkiraan, belum hasil timbangan dapur. Setiap baris perkiraan diberi tanda "perkiraan" dan diwarnai terakota. Catatan saya sendiri mengakui bahwa mengejar empat puluh masakan hasil tebakan adalah pilihan yang keliru, dan menimbang resep adalah pekerjaan paling berharga yang tersisa. Tabel ukuran rumah tangga (centong, mangkuk) dirilis kosong, karena aturan proyek melarang isian yang belum pernah ditimbang.

Kecukupan gizi, tanpa anggaran

Kecukupan gizi memakai Angka Kecukupan Gizi (AKG) dari Permenkes 28/2019, per kelompok umur dan jenis kelamin. Halaman menampilkan seberapa besar satu masakan menyumbang kebutuhan harian, lengkap dengan angka kebutuhannya. Tidak ada total harian, jumlah berjalan, atau catatan makan. Sebuah tes membuang timestamp yang nyasar ke penyimpanan resep, supaya fitur pencatatan tidak menyusup masuk.

Hasilnya

Gizi Masakan sudah live dan terbuka untuk umum, dengan bahasa Indonesia sebagai bahasa utama dan Inggris sebagai kedua. Isinya 40 masakan Indonesia dan 70 bahan, masing-masing dengan 29 zat gizi dari USDA FoodData Central. Situsnya statis penuh dan tidak membuat request jaringan sama sekali setelah dimuat. Ketuk total mana pun untuk melihat sumbangan tiap bahan, entri database asalnya, faktor masak yang dipakai, dan hitungannya yang ditulis lengkap. Saya membangunnya sendiri dalam satu hari, sekitar delapan jam, pada Agustus 2026.

Situs ini menyatakan dengan jelas bahwa nilai bahan adalah pendekatan dari database Amerika untuk bahan Indonesia, bahwa angka masakan adalah perkiraan dari resep yang dicantumkan, dan bahwa isinya bukan nasihat medis.

Di balik layarDetail teknis untuk engineer
  • Engine-nya fungsi murni, (recipe, portion, ingredientTable, factors) → NutritionTrace: tanpa DOM, React, jam, angka acak, atau jaringan. Komponen hanya menampilkan hasil trace.
  • 282 tes lulus di 9 suite: konservasi, celah, retensi, determinisme, AKG, cara masak, state URL, resep tersimpan, dan pencarian.
  • Pipeline saat build mengunduh CSV massal FDC SR Legacy, menyaringnya ke 70 bahan pilihan, memproyeksikannya ke 29 zat gizi berdasarkan nomor nutrien FDC, lalu menulis table.json berukuran 28,9 KB dari anggaran 200 KB. CSV mentah tidak pernah di-commit.
  • Faktor susut dan retensi diambil dari tabel FAO/INFOODS dan USDA, dengan sumber per operasi masak. Trace menuliskan hitungannya: berat ÷ 100 × nilai per 100 g × faktor retensi.
  • TKPI dikecualikan berdasarkan UU 28/2014 Pasal 42. Kedua adapter menghasilkan IngredientTable yang sama, dan tidak ada kode hilir yang bercabang berdasarkan asal data.
  • Ke-13 bahan yang tidak cocok dicatat di unmatched.json dan muncul sebagai celah di setiap trace. Tanpa gula-merah, wedang jahe hanya 16 kkal per gelas; tanpa kecap-manis, empat masakan kehilangan gulanya.
  • Zat gizi terpilih, toggle per porsi, kelompok AKG, berat yang diubah, cara masak, dan pencarian semuanya disimpan di query parameter. Input dari URL atau localStorage divalidasi dengan Zod dan tidak pernah dipaksa menjadi angka.
  • Kunci resep tersimpan persis {id, dishId, nama, beratOverrideG}.
  • Setiap warna teks lolos WCAG AA 4,5:1 di kedua latar; empat warna yang dipilih dengan mata gagal dan digelapkan. Font ketiga untuk angka tabular dibuang dan diganti font-variant-numeric.
  • Empat dependensi runtime: Next.js 14.2.15 (output: 'export'), React 18.3.1, React DOM, dan Zod 3.23.8. Deploy ke GitHub Pages lewat dua workflow GitHub Actions, deploy.yml (dijaga data:validate) dan refresh-fdc.yml yang terjadwal.
  • Sekitar 87 halaman prerender di dua bahasa. Sekitar 7.700 baris TypeScript dan 60 commit antara pukul 09.21 dan 17.35 pada 7 Agustus 2026.

Tangkapan layar

Beranda
Masakan
Detail Masakan
Bahan
Metode

Sedang merekrut, atau membangun hal serupa?

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