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

- 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.jsonberukuran 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
IngredientTableyang sama, dan tidak ada kode hilir yang bercabang berdasarkan asal data. - Ke-13 bahan yang tidak cocok dicatat di
unmatched.jsondan muncul sebagai celah di setiap trace. Tanpagula-merah, wedang jahe hanya 16 kkal per gelas; tanpakecap-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(dijagadata:validate) danrefresh-fdc.ymlyang 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
Sedang merekrut, atau membangun hal serupa?
Saya terbuka untuk posisi full-time dan proyek freelance tertentu.