เว็บแอป Next.js สำหรับจัดการคลังหนังสือ เชื่อมต่อกับ Classroom API ที่รันผ่าน Docker ผู้ใช้สามารถสมัครสมาชิก, เข้าสู่ระบบ และจัดการข้อมูลหนังสือ (เพิ่ม/ดู/แก้ไข/ลบ) พร้อมอินเทอร์เฟซที่ออกแบบด้วย Material UI
- ระบบสมาชิก
- สมัครสมาชิกด้วยชื่อผู้ใช้ อีเมล และรหัสผ่าน
- เข้าสู่ระบบ / ออกจากระบบ พร้อมเก็บสถานะผ่าน
localStorage
- การจัดการหนังสือ
- แสดงรายการหนังสือทั้งหมดจาก API
- เปิดดูรายละเอียดหนังสือแต่ละเล่ม
- เพิ่มหนังสือใหม่ (POST
/api/books) - แก้ไขข้อมูลหนังสือ (PUT
/api/books/{id}) - ลบหนังสือ (DELETE
/api/books/{id})
- ประสบการณ์ใช้งาน
- UI ตอบสนองต่ออุปกรณ์ (Responsive) ด้วย Material UI 7
- ฟอร์มมีการตรวจสอบข้อมูลเบื้องต้นและแสดง error/success
- Dialog ยืนยันก่อนลบหนังสือ
- ติดตั้ง dependency
npm install
- ตั้งค่าไฟล์
.env.localที่โฟลเดอร์book-appNEXT_PUBLIC_API_URL=http://localhost:3000ค่าเริ่มต้นของ Classroom API ที่ Docker เปิดให้ใช้งานคือพอร์ต 3000
- รันฝั่ง frontend (แนะนำให้เลือกพอร์ตอื่นจาก API เช่น 3001)
npm run dev -- -p 3001
- เปิดเบราว์เซอร์ที่
http://localhost:3001
ต้องเปิด Docker stack ของ Classroom API พร้อมฐานข้อมูล MongoDB ให้เรียบร้อยก่อนจึงจะใช้งานได้
| คำสั่ง | อธิบาย |
|---|---|
npm run dev |
รัน Next.js โหมดพัฒนา (Turbopack) |
npm run build |
สร้างไฟล์โปรดักชัน |
npm run start |
เปิดเซิร์ฟเวอร์ด้วยไฟล์โปรดักชัน |
book-app/
├─ src/
│ ├─ app/
│ │ ├─ page.tsx # หน้า Home
│ │ ├─ login/page.tsx # หน้าเข้าสู่ระบบ
│ │ ├─ register/page.tsx # หน้าสมัครสมาชิก
│ │ ├─ books/new/page.tsx # ฟอร์มเพิ่มหนังสือ
│ │ ├─ books/[id]/edit/page.tsx # ฟอร์มแก้ไขหนังสือ
│ │ └─ book/[id]/page.tsx # หน้ารายละเอียดหนังสือ
│ ├─ libs/AuthService.ts # ฟังก์ชันเรียก API ด้าน auth
│ └─ types/ # ชนิดข้อมูล TypeScript
├─ image/ # รูปตัวอย่างหน้าจอ
├─ package.json
└─ README.md
- หากเพิ่ม/แก้ไข/ลบหนังสือไม่ได้ ให้ตรวจสอบว่า token ยังอยู่ใน
localStorageและ Docker API ทำงานอยู่ - ถ้าเจอปัญหาพอร์ตชนกัน (API ใช้ 3000) ให้ระบุ
-pเมื่อรันnpm run dev - สามารถล้างสถานะผู้ใช้ได้ด้วยการลบ key
userในlocalStorage
- เพิ่มการยืนยันรหัสผ่านและข้อกำหนดความยาว/ความซับซ้อน
- รองรับการค้นหาและกรองหนังสือจากหน้าแรก
- เพิ่มการเก็บ token ใน cookie พร้อม refresh token
- เขียนชุดทดสอบ (เช่น Vitest/Playwright) สำหรับ flow หลัก
โปรเจ็กต์นี้เป็นส่วนหน้า (frontend) เท่านั้น การทำงานสมบูรณ์ขึ้นอยู่กับ Classroom API ที่รันอยู่ในเครื่องหรือเซิร์ฟเวอร์ของคุณเอง


