Architecture
โครงสร้างที่ใช้บน Cloudflare
`rinbooks` ถูกแยกเป็น frontend และ backend แต่ยังอยู่ใน repo เดียวเพื่อให้ deploy ง่ายและ ต่อกับ GitHub ได้ตรง
- `web/` build เป็น static files แล้วปล่อยผ่าน Cloudflare Pages บน `rinbooks.com`
- `worker/` เป็น API สำหรับหนังสือ, การยืมคืน, และอัปโหลดปกขึ้น R2 ผ่าน route `/api/*`
- Postgres (เช่น Neon/Supabase) เก็บ catalog และรายการยืม
- R2 เก็บรูปปก และเสิร์ฟกลับผ่าน Worker route เดียวกัน
- Push ไป GitHub แล้ว Pages/Worker deploy ต่อให้อัตโนมัติ