ไอเดีย #14: ระบบเก็บสูตรอาหารและวางแผนเมนูรายสัปดาห์
"เย็นนี้กินอะไรดี" เป็นคำถามที่ตอบยากที่สุดของหลายบ้าน พอคิดไม่ออกก็สั่งเดลิเวอรีซ้ำร้านเดิม หรือไปตลาดแล้วซื้อของมาเกิน ผักเน่าคาตู้เย็นทุกสัปดาห์ ส่วนสูตรต้มข่าของคุณแม่ก็จดอยู่ในสมุดเล่มเก่า หาไม่เจอตอนจะใช้ ระบบเก็บสูตรอาหารที่วางแผนเมนูรายสัปดาห์ แล้วรวมวัตถุดิบออกมาเป็นรายการซื้อของให้อัตโนมัติ เป็นโปรเจกต์ที่ทำแล้วได้ใช้เองในบ้านจริง ๆ
ใครจะใช้
- คนทำอาหารประจำบ้าน — เก็บสูตร วางเมนู และเตรียมไปจ่ายตลาด
- สมาชิกในบ้าน — ดูเมนูของสัปดาห์ และโหวตหรือขอเมนูที่อยากกิน
- คนที่อยากคุมอาหาร — ดูภาพรวมว่าสัปดาห์นี้กินอะไรไปบ้าง
ฟีเจอร์ขั้นต่ำ (MVP)
- CRUD สูตรอาหาร: ชื่อ หมวด จำนวนที่เสิร์ฟ ขั้นตอนการทำ และเวลาที่ใช้
- วัตถุดิบของแต่ละสูตร แยกเป็นชื่อ ปริมาณ และหน่วย (กรัม ช้อนโต๊ะ ฟอง กำ)
- ค้นหาสูตรจากชื่อหรือจากวัตถุดิบที่มีอยู่ในตู้เย็น
- ตารางวางแผนเมนูรายสัปดาห์ เลือกสูตรลงช่องมื้อเช้า กลางวัน เย็น
- สร้างรายการซื้อของ รวมวัตถุดิบซ้ำจากหลายเมนูให้เหลือบรรทัดเดียว และติ๊กได้ว่าซื้อแล้ว
- ปรับจำนวนที่เสิร์ฟแล้วคำนวณปริมาณวัตถุดิบใหม่ให้อัตโนมัติ
ต่อยอดได้อีก
- ระบบคลังวัตถุดิบในบ้าน หักของที่มีอยู่ออกจากรายการซื้อ
- แจ้งเตือนวัตถุดิบใกล้หมดอายุ แล้วแนะนำสูตรที่ใช้ของนั้น
- แชร์รายการซื้อของให้คนในบ้านผ่าน LINE
- แอปมือถือด้วย Flutter ที่เปิดรายการซื้อของได้แม้อยู่ในตลาดที่สัญญาณไม่ดี
โครงข้อมูลตั้งต้น
recipes— id, user_id, name, category, servings, steps, cook_minutesingredients— id, name, default_unitrecipe_ingredients— recipe_id, ingredient_id, quantity, unitmeal_plans— id, user_id, plan_date, meal (breakfast/lunch/dinner), recipe_id, servingsshopping_items— id, user_id, week_start, ingredient_id, quantity, unit, is_bought
ระดับความยาก และสิ่งที่จะได้เรียนรู้
ระดับ มือใหม่ ใช้ Yii2 หรือ Laravel + MySQL/PostgreSQL ส่วนหน้าเว็บจะใช้ JavaScript ธรรมดาหรือ Vue ก็ได้ สิ่งที่จะได้เรียนรู้:
- ความสัมพันธ์แบบ many-to-many ผ่านตารางกลาง
- การ query แบบ
GROUP BYเพื่อรวมวัตถุดิบจากหลายเมนู - การทำฟอร์มแบบเพิ่มแถวได้ (dynamic form) สำหรับวัตถุดิบ
- การทำ UI ปฏิทินรายสัปดาห์แบบลากวาง
ข้อควรระวัง
- เรื่องหน่วยเป็นกับดักใหญ่ "1 ถ้วย" กับ "200 กรัม" รวมกันตรง ๆ ไม่ได้ ควรเริ่มจากรวมเฉพาะหน่วยเดียวกันก่อน แล้วค่อยทำตารางแปลงหน่วย
- ชื่อวัตถุดิบภาษาไทยสะกดได้หลายแบบ เช่น กระเทียม กับ กระเทียมไทย ควรให้เลือกจากรายการที่มีอยู่แทนการพิมพ์อิสระ
- ถ้าเปิดให้หลายครอบครัวใช้ ต้องแยกข้อมูลแต่ละ user ให้ชัด อย่าให้เห็นสูตรส่วนตัวของคนอื่น
สายทำอาหารกับสายโค้ดที่เป็นคนเดียวกันมีไหมครับ อยากรู้ว่าจะจัดการเรื่องแปลงหน่วยแบบไหนให้ใช้ง่ายแต่ไม่ซับซ้อนเกินไป และถ้าเป็นคุณจะเพิ่มฟีเจอร์อะไรให้บ้านตัวเองได้ใช้จริง ทำแล้วเอามาแชร์ในกระทู้นี้ได้เลย