# กติกาสำหรับโปรเจคนี้ (ทีม Dev เตรียมไว้ — ผู้ใช้ไม่ต้องแก้ไฟล์นี้)

## วิธีทำงานกับผู้ใช้
- ผู้ใช้ไม่ใช่โปรแกรมเมอร์ ทำงานให้จบรวดเดียวโดยไม่ต้องรอยืนยันทุกขั้น แต่บอกสั้น ๆ ระหว่างทำว่ากำลังทำอะไร
- ถามผู้ใช้เฉพาะเมื่อต้องตัดสินใจหรือขาดข้อมูลจริง ๆ (เช่น ชื่อโปรเจค) ถามครั้งเดียวให้ครบ ไม่ถามทีละข้อ
- ข้อมูลไหนผู้ใช้ไม่ได้บอก (เบอร์โทร ราคา รีวิว ฯลฯ) ให้ใส่ตัวอย่างไว้ก่อน แล้วเขียนกำกับว่า [แก้ทีหลัง]
- เสร็จแต่ละขั้นให้สรุปสั้น ๆ เป็นภาษาไทยว่าทำอะไรไป ไม่ต้องอธิบายโค้ด
- ถ้าเจอ error ให้อ่านแล้วแก้เองก่อน แจ้งผู้ใช้เฉพาะเมื่อต้องการข้อมูลหรือการยืนยัน
- ใช้ข้อมูลสมมติเท่านั้น ห้ามใส่ข้อมูลจริงของบุคคลอื่น และไม่ต้องทำระบบล็อกอิน

## เครื่องมือบนเครื่อง (ใช้ Bun ไม่ต้องมี Node.js)
- ใช้ `bun` แทน npm/npx ทุกที่: `bun install`, `bun add`, `bun run <script>`, `bun x <cli>`
- ถ้ายังไม่มี Bun ให้ติดตั้งด้วย `curl -fsSL https://bun.com/install | bash` (Windows: `powershell -c "irm bun.sh/install.ps1 | iex"`) — ลงในโฟลเดอร์ผู้ใช้ ไม่ต้องใช้รหัสผ่าน
- ถ้า Bun บล็อก postinstall ของแพ็กเกจ ให้รัน `bun pm trust --all` แล้วทำต่อ
- ล็อกอิน Cloudflare ด้วย `bun x wrangler login` (ทำครั้งเดียว ถ้าล็อกอินอยู่แล้วให้ข้าม)

## เทคโนโลยี (ห้ามเปลี่ยน)
- Next.js (App Router) + Tailwind CSS ทุกอย่างอยู่ใน repo เดียว ภาษาไทย ดูดีบนมือถือ
- ฐานข้อมูล: Cloudflare D1 ประกาศ binding ชื่อ `DB` ใน `wrangler.jsonc` และสร้างตารางด้วย D1 migrations
- Deploy ขึ้น Cloudflare Workers ด้วย OpenNext (`@opennextjs/cloudflare`) ห้ามใช้ `@cloudflare/next-on-pages`
- เข้าถึง D1 ผ่าน `getCloudflareContext().env.DB` จาก `@opennextjs/cloudflare`

## วิธีสร้างโปรเจค (เส้นทางที่ทดสอบแล้วบน Bun — อย่าใช้ create-cloudflare เพราะบน Bun มันไม่เลือกเทมเพลต Next.js)
1. `bun x create-next-app@latest <ชื่อโปรเจค> --ts --tailwind --app --eslint --no-src-dir --import-alias "@/*" --use-bun --yes`
2. `bun add -D @opennextjs/cloudflare wrangler`
3. สร้าง `open-next.config.ts`: `import { defineCloudflareConfig } from "@opennextjs/cloudflare"; export default defineCloudflareConfig();`
4. สร้าง `wrangler.jsonc` ให้มี `main: ".open-next/worker.js"`, `compatibility_flags: ["nodejs_compat"]`, `assets: { directory: ".open-next/assets", binding: "ASSETS" }` และ `d1_databases` binding `DB`
5. เพิ่ม scripts ใน package.json: `"deploy": "opennextjs-cloudflare build && opennextjs-cloudflare deploy"`, `"preview": "opennextjs-cloudflare build && opennextjs-cloudflare preview"`, `"cf-typegen": "wrangler types"`

## การเข้าถึงข้อมูล (เลือกตามความเหมาะสมของโปรเจค ไม่บังคับแบบใดแบบหนึ่ง)
- อ่านข้อมูลเพื่อแสดงหน้าเว็บ: ใช้ Server Component (SSR) เรียก D1 ตรง ๆ
- บันทึก/แก้ไข/ลบ: ใช้ Server Action หรือ Route Handler (`app/api/...`) ก็ได้ เลือกให้เหมาะกับงาน แล้วใช้แบบเดียวกันทั้งโปรเจค
- ทั้งสองแบบเรียก D1 ผ่าน binding โดยตรง ไม่ต้องมี backend แยก

## ลำดับงานเมื่อผู้ใช้สั่งสร้างเว็บ
1. สร้างโปรเจคตามหัวข้อด้านบน แล้วเขียนโค้ดตามที่ผู้ใช้ต้องการ
2. `bun x wrangler d1 create <ชื่อ-db>` → ใส่ `database_id` ลง `wrangler.jsonc` → เขียน migration → `bun x wrangler d1 migrations apply <ชื่อ-db> --remote`
3. `bun run deploy` จนได้ลิงก์ `.workers.dev` เปิดเช็กว่าใช้งานได้ แล้วส่งลิงก์ให้ผู้ใช้
4. เมื่อผู้ใช้สั่งแก้ ให้แก้แล้ว `bun run deploy` ใหม่ให้เองทุกครั้ง แล้วบอกให้ผู้ใช้รีเฟรชดู
