Lewati ke konten
AFM Studio
Personal ProjectNutrition ToolWeb App

Gizi Masakan

Tells you the nutrition of Indonesian dishes — and shows the exact recipe it used to get that number, so you can correct it if your kitchen does it differently

Semua proyek3 mnt baca

Peran

Solo Developer

Periode

Aug 2026

Di halaman ini

Masalahnya

Aplikasi gizi yang dipakai di Indonesia berjalan di atas basis data makanan asing. Cari nasi padang, gado-gado, atau soto betawi dan Anda tak dapat apa-apa, atau sebuah aproksimasi AS untuk hidangan yang nyaris tak punya kesamaan dengan yang ada di piring. Aplikasi yang memang memuat hidangan Indonesia punya kegagalan sebaliknya: satu angka percaya diri, tanpa perhitungan ditampilkan. "550 kkal untuk gado-gado." Gado-gado siapa? Berapa banyak bumbu kacang? Angkanya tak bisa diperiksa, jadi tak bisa dikoreksi.

Dan hampir semuanya dibingkai sebagai tracker — anggaran harian, kalori tersisa, streak. Bingkai itu cocok untuk penurunan berat badan dan sedikit hal lain. Beban gizi Indonesia sebenarnya adalah stunting dan defisiensi mikronutrien jauh lebih daripada kelebihan konsumsi, jadi pertanyaan yang berguna adalah apakah saya cukup zat besi dan protein, bukan apakah saya di bawah batas — dan bingkai anggaran-kalori aktif merugikan orang dengan gangguan makan.

Pendekatannya

Resep itulah produknya, bukan catatan kaki

Setiap halaman hidangan menampilkan daftar bahan dan berat gram tepat di bawah angka-angkanya. Beratnya bisa disunting langsung dan metode masak bisa ditukar (goreng → rebus), dan segalanya — total, batang kontribusi, isian kecukupan — dihitung ulang saat Anda mengetik. Ini bukan fitur canggih; inilah cara alat itu mengatakan kebenaran, karena selisih antara gado-gado dua warung lebih besar daripada presisi apa pun yang bisa diklaim aplikasi.

Jangan pernah diam-diam menjatuhkan nilai yang hilang

Mode kegagalan paling berbahaya di kalkulator gizi adalah diam-diam menghilangkan bahan yang tak punya data: totalnya tetap tampak masuk akal tetapi meremehkan hidangan. Maka bahan, nilai, dan faktor yang hilang masing-masing menghasilkan celah bernama di keluaran — totalnya tetap tampil, dilabeli tak lengkap — dan tes menegaskannya dua arah (resep tak lengkap harus menyebut celahnya; resep lengkap harus tak menyebut satu pun). Retensi punya tepat dua keadaan: disesuaikan-faktor dengan faktornya dikutip, atau eksplisit ditandai tak disesuaikan. Tak ada "asumsi retensi penuh" implisit — itu asumsi senyap berbaju angka.

Gerbang lisensi yang menggagalkan build

Sumber bahan yang jelas lebih baik adalah TKPI (tabel komposisi pangan Indonesia Kemenkes) — tetapi ia buku berhak cipta dengan pemberitahuan hak-dilindungi, di luar pengecualian UU 28/2014 untuk peraturan. Maka adaptor TKPI ada di kode dan dikirim nonaktif di balik gerbang lisensi, dengan pengecualian dan alasan hukumnya dicatat di manifes; build gagal jika lisensi sebuah sumber tak ada. Kedua adaptor memancarkan IngredientTable yang sama dan tak ada yang bercabang atas provenance, jadi jika izin datang, akurasi membaik tanpa menyentuh apa pun.

Jujur tentang celahnya sendiri — diterapkan pada dirinya

Tesis proyek ini diarahkan ke datanya sendiri. Seluruh 40 resep beratnya kini perkiraan, tiap baris ditandai perkiraan dan ditampilkan terakota agar pembaca melihatnya — dan dokumen mencatat, melawan saran PRD-nya sendiri, bahwa mencapai empat puluh hidangan tebakan adalah trade yang salah dan penimbangan adalah kerja paling berharga yang tersisa. Tabel takaran rumah tangga (URT) dikirim sengaja kosong alih-alih diisi dari tebakan, karena sebuah invarian melarang entri tak-terukur. Memilih tabel kosong ketimbang yang masuk akal adalah seluruh tesis diterapkan pada dirinya.

Hasil

Live dan publik, dwibahasa (Indonesia default), sepenuhnya statis dengan nol permintaan jaringan saat runtime — pipeline saat build mengunduh CSV massal USDA FoodData Central, menyaring ke daftar terkurasi 70 bahan, memproyeksikan ke 29 nutrien, dan mengirim tabel 28,9 KB; CSV mentah tak pernah di-commit. Ia menampilkan piring dengan strip resep dan batang kontribusi yang me-ranking-ulang di bawahnya, penyuntingan resep langsung termasuk metode masak, panel celah bernama, jejak komputasi per-nutrien (bahan mana menyumbang apa, di berat gram berapa, dari entri FDC mana, dengan faktor retensi mana, dan aritmetikanya dinyatakan), dan kecukupan AKG per kelompok usia/jenis kelamin dari Permenkes 28/2019 — ditampilkan sebagai seberapa banyak dari kebutuhan yang disumbang ini, tak pernah batang terkonsumsi-dari-anggaran. Tanpa tracker di mana pun: ditegakkan oleh tes yang menjatuhkan timestamp liar dari penyimpanan resep tersimpan.

Dibangun sendiri dalam satu hari ~8 jam — ~7.700 baris TypeScript, 282 tes, empat dependensi runtime. Ia menyatakan dengan lugas bahwa nilai bahan adalah aproksimasi basis-data AS untuk bahan Indonesia, bahwa angka hidangan adalah perkiraan dari resep yang dinyatakan, dan bahwa ini bukan nasihat medis.

Hasil

Indonesian dishes, recipe shown & editable
40
Tests — every number is auditable
282
Runtime network requests
0
Nutrients from USDA FoodData Central
29

Tangkapan Layar

Beranda
Masakan
Detail Masakan
Bahan
Metode

Punya proyek serupa?

Jika Anda butuh sistem yang dibangun dengan ketelitian yang sama — scope jelas, eksekusi solid — mari bicara.

Mulai proyek