Mobile-first PWA สำหรับคนทำขนมปัง Sourdough — คำนวณทุกอย่างที่ต้องคิดตั้งแต่ตั้งสูตรจนออกจากเตา ติดตั้งบนมือถือได้เหมือนแอปจริง ใช้งานได้แบบ offline
เปิดใช้งาน: https://dixonsatit.github.io/sourdough-app/
แอปแบ่งเป็น 5 แท็บ ครอบคลุมการคำนวณหลักของ sourdough:
- ใส่ baker's percentage (แป้ง = 100%) → แปลงเป็นกรัมทุกส่วน
- คิดจากได้ 3 แบบ: น้ำหนักแป้ง / น้ำหนักโดว์รวม / จำนวนก้อน × น้ำหนักต่อก้อน
- หักแป้ง–น้ำที่มาจาก starter อัตโนมัติ เพื่อให้ hydration รวม "ตรงเป๊ะ"
- รองรับ starter hydration อื่น (ไม่ใช่ 100%) และส่วนผสมเพิ่ม (เมล็ด/โฮลวีต ฯลฯ)
- บันทึกเป็น preset เรียกใช้ทีหลัง (เก็บใน localStorage)
- แชร์สูตร — export เป็นลิงก์ + QR code (encode ทั้งสูตรใน URL, offline) · เปิดลิงก์/สแกน QR แล้วโหลดสูตรอัตโนมัติ · นำเข้าด้วยการวางลิงก์ก็ได้
สูตรมือโปรแบบ 3 ตาราง (เหมือนในตำราเบเกอรี่):
- Overall Formula — ส่วนผสมทั้งหมด (แป้งหลายชนิด, น้ำ, เกลือ, inclusions) เป็น baker's % เทียบแป้งรวม = 100%
- Liquid Levain — คำนวณจาก prefermented flour % (เช่น 10% fermented flour) + levain hydration + seed %
- Final Dough — สิ่งที่ต้องชั่งเข้าโดว์จริง = Overall − แป้ง/น้ำที่อยู่ใน levain (% เทียบแป้งในโดว์สุดท้าย)
- แก้แป้ง/inclusions หลายชนิดได้ · scale ตามแป้งรวม/โดว์รวม/จำนวนก้อน
- ปุ่ม (i) อธิบายความหมายของตัวเลขแต่ละตาราง · บันทึก preset + แชร์ลิงก์/QR เหมือนแท็บสูตร
- Desired Dough Temperature (DDT): คำนวณอุณหภูมิน้ำที่ต้องใช้เพื่อคุมอุณหภูมิโดว์ให้ได้เป้า
waterTemp = DDT × N − (แป้ง + ห้อง + levain) − friction - Levain build: จากอัตราส่วนป้อน (1:2:2, 1:5:5, 1:10:10) → ปริมาณที่ต้องชั่ง + เวลาถึง peak โดยประมาณ
- บอกเวลาที่อยากได้ขนมปังเสร็จ → คำนวณย้อนกลับว่าต้องเริ่มลงมือกี่โมง
- ครบทุกสเต็ป: levain → autolyse → mix → bulk (+stretch & fold) → pre-shape → shape → proof → อบ → พักเย็น
- รองรับทั้ง cold proof (แช่ตู้เย็นข้ามคืน) และ proof อุณหภูมิห้อง
bulkปรับตามอุณหภูมิด้วยโมเดล Q10
- ทำนายช่วงเวลา bulk fermentation จากอุณหภูมิ/hydration/starter (โมเดล Q10)
- ไทม์ไลน์สด + เสียงเตือนเมื่อถึงเวลาสังเกตโดว์ / เลยช่วง
- แจ้งเตือน (system notification) — เด้งเตือนตอนโดว์เข้าช่วงพร้อม แม้สลับไปแอปอื่น
- รองรับ Notification Triggers (Chrome/Edge/Android) → เด้งแม้ปิดแอป · เครื่องที่ไม่รองรับใช้ตัวจับเวลาสำรอง (เด้งตอนแอปยังรันเบื้องหลัง)
- iOS ต้อง Add to Home Screen ก่อนถึงจะเปิดสิทธิ์ได้
- Aliquot tracking — บันทึก % การขึ้นของโดว์
ทั้งแท็บ สูตร และ สูตร% มีปุ่ม "รูปเมนู" สร้างการ์ดสูตรสวยๆ (PNG สไตล์เมนูตำรา พร้อม QR ในตัว) ดาวน์โหลด/แชร์ได้ — วาดบน canvas เอง ไม่พึ่ง CDN
- เก็บประวัติการอบ และ เรียนรู้ปรับโมเดลให้คุณ อัตโนมัติเมื่อบันทึกครบ 3 ครั้ง
⚠️ ทุกการคำนวณเป็น "ตัวช่วยประมาณการ" — สภาพโดว์จริงเป็นตัวตัดสินเสมอ
| หัวข้อ | สูตร |
|---|---|
| Baker's % | ทุกอย่างเทียบน้ำหนักแป้ง (แป้ง = 100%) |
| Hydration | water / flour × 100 |
| DDT → water temp | DDT × N − Σ(อุณหภูมิอื่น) − friction (N=4 มี levain, N=3 ไม่มี) |
| Fermentation | t = t_ref × Q10^((T_ref − T)/10) × f(starter) × f(hydration) · baseline 27°C/20%/75% → 180 น. · Q10 ≈ 2 |
โค้ดคำนวณทั้งหมดอยู่ที่ src/lib/dough.js
- Vite 6 + React 18
- Tailwind CSS 3
- vite-plugin-pwa (Workbox) — offline + Add to Home Screen
- lucide-react icons
- persistence ด้วย
localStorage
npm install
npm run gen-icons # สร้าง PNG icon จาก favicon.svg (ครั้งแรก)
npm run dev # เปิด dev server
npm run build # build ไป dist/
npm run preview # ดู production buildPush ขึ้น branch main แล้ว GitHub Actions (.github/workflows/deploy.yml) จะ build และ deploy ขึ้น GitHub Pages ให้อัตโนมัติ
ตั้งค่าใน repo: Settings → Pages → Source = GitHub Actions
MIT