Basic Website Workflow
Day 1 - ชั่วโมงที่ 1: Basic Website Workflow
เป้าหมายของชั่วโมงนี้
หลังจบชั่วโมงแรก ผู้เรียนควรสามารถ:
- อธิบายได้ว่าเว็บไซต์หนึ่งระบบประกอบด้วย frontend, backend และ database
- เข้าใจภาพรวม request/response ระหว่าง browser และ server
- อธิบาย CRUD ได้ในภาษาง่าย ๆ
- เห็นภาพว่า HTML, CSS, TypeScript, Next.js, database และ authentication อยู่ตรงไหนในระบบจริง
- เข้าใจโจทย์โปรเจกต์หลักของ bootcamp คือระบบแจ้งปัญหาและติดตามงานภายในฝ่าย IT
ไฟล์ที่เกี่ยวข้องในชั่วโมงนี้
ชั่วโมงนี้ยังไม่เริ่มเขียนไฟล์ code หลัก เป็นช่วงอธิบายภาพรวมและวาด flow
ไฟล์ที่จะเริ่มสร้างในชั่วโมงถัดไป:
index.html
style.css
README.mdโครงสร้างเวลา 60 นาที
| เวลา | หัวข้อ | รูปแบบ |
|---|---|---|
| 0-5 นาที | เปิดคลาสและตั้งเป้าหมาย | พูดคุย |
| 5-15 นาที | เว็บไซต์คืออะไรในมุมระบบงานจริง | Explain + examples |
| 15-30 นาที | Frontend, Backend, Database | Diagram |
| 30-40 นาที | Request/Response flow | Diagram + live demo concept |
| 40-50 นาที | CRUD คืออะไร | Mapping กับระบบจริง |
| 50-60 นาที | วาด flow ตัวอย่างระบบแจ้งปัญหา | อธิบายพร้อมภาพ |
Slide 1: จากหน้าเว็บธรรมดาไปสู่ Web Application
ก่อนเริ่มเขียน code เราจะทำความเข้าใจก่อนว่าแต่ละส่วนของระบบเว็บทำงานร่วมกันอย่างไร
- Web PageHTML, CSS prototype
- Next.jscomponents, routing
- CRUDcreate, read, update
- Auth + Datalogin, users, issues
- Deployใช้งานจริง
หลังจบชั่วโมงนี้คุณจะเห็นภาพว่า:
- Frontend, backend และ database รับผิดชอบอะไร
- Request และ response เดินทางอย่างไร
- Prototype ที่เริ่มวันนี้จะต่อยอดเป็นระบบจริงได้อย่างไร
Slide 2: Project ที่เราจะสร้าง
ตลอด 5 วัน เราจะสร้าง ระบบแจ้งปัญหาและติดตามงานภายในฝ่าย IT
| ผู้ใช้งาน | สิ่งที่ต้องทำได้ |
|---|---|
| USER | แจ้งปัญหาและติดตามรายการของตัวเอง |
| ADMIN | ดูรายการปัญหาและเปลี่ยนสถานะงาน |
ระบบจะเริ่มจากหน้า HTML/CSS แบบ static แล้วค่อยเพิ่ม Next.js, database, login และการกำหนดสิทธิ์
Slide 3: Website กับ Web Application ต่างกันอย่างไร
| Website | Web Application |
|---|---|
| เน้นแสดงข้อมูลให้ผู้ใช้อ่าน | ให้ผู้ใช้ส่งข้อมูลและทำงานกับระบบ |
| เช่น หน้าแนะนำหน่วยงานหรือหน้าประกาศ | เช่น ระบบแจ้งปัญหา ระบบลงทะเบียน หรือ Dashboard |
| เนื้อหาเปลี่ยนไม่บ่อย | ข้อมูลเปลี่ยนตามการใช้งาน |
ระบบที่เราจะสร้างเป็น Web Application เพราะผู้ใช้กรอก form, ระบบบันทึกข้อมูล และ ADMIN เปลี่ยนสถานะงานได้
Slide 4: ระบบเว็บหนึ่งระบบมีอะไรบ้าง
- Userผู้ใช้งาน
- BrowserChrome, Edge, Safari
- FrontendHTML, CSS, TypeScript
- BackendValidation, Auth, API
- DatabaseIssues, Users
- Browser เปิดหน้าเว็บและรับการคลิกหรือข้อมูลจากผู้ใช้
- Frontend แสดงหน้าจอและส่งคำขอ
- Backend ตรวจคำขอและตัดสินใจว่าจะทำอะไรต่อ
- Database เก็บข้อมูลที่ระบบต้องใช้
ผู้ใช้ไม่ได้ติดต่อ database โดยตรง แต่ทำงานผ่าน frontend และ backend
Slide 5: Frontend คือส่วนที่ผู้ใช้มองเห็น
ในระบบแจ้งปัญหา Frontend ประกอบด้วย:
- Form สำหรับกรอกชื่อผู้แจ้งและรายละเอียดปัญหา
- ปุ่ม Submit สำหรับส่งข้อมูล
- ตารางรายการปัญหา
- Badge แสดงสถานะ
OPEN,IN_PROGRESSและDONE - หน้า Login และหน้า ADMIN
HTML ใช้สร้างโครงสร้างของหน้า CSS ใช้จัดหน้าตา ส่วน TypeScript ใช้เพิ่ม logic และจัดการข้อมูล
Slide 6: Backend คือส่วนที่ตัดสินใจหลังบ้าน
เมื่อ Frontend ส่ง request เข้ามา Backend ต้อง:
- รับข้อมูลจากผู้ใช้
- ตรวจว่าข้อมูลครบและอยู่ในรูปแบบที่ยอมรับได้
- ตรวจว่าผู้ใช้ Login แล้วหรือยัง
- ตรวจว่าผู้ใช้มีสิทธิ์ทำสิ่งนั้นหรือไม่
- อ่านหรือบันทึกข้อมูลใน database
- ส่งผลลัพธ์หรือ error กลับไป
การตรวจข้อมูลและสิทธิ์ที่ Backend เป็นสิ่งที่ขาดไม่ได้
Slide 7: Database คือที่เก็บข้อมูลของระบบ
ตัวอย่างข้อมูล issue ที่ระบบต้องเก็บ:
| id | ผู้แจ้ง | หัวข้อ | สถานะ |
|---|---|---|---|
| 1 | Anan | Login ไม่ได้ | OPEN |
| 2 | Mali | ส่งแบบฟอร์มไม่ได้ | IN_PROGRESS |
นอกจากข้อมูลที่ผู้ใช้กรอก ระบบยังต้องเก็บเวลา ผู้สร้างรายการ และข้อมูลที่ ADMIN แก้ไข
Database ช่วยให้ระบบค้นหา เพิ่ม และแก้ไขข้อมูลได้อย่างเป็นระบบ แม้หน้าตาจะดูคล้ายตารางก็ตาม
Slide 8: Request และ Response คืออะไร
User กด Submit
↓
Browser ส่ง Request ไปยัง Server
↓
Server ตรวจและประมวลผล
↓
Server ส่ง Response กลับ
↓
Browser แสดงผลสำเร็จหรือ Error- Request คือคำขอ เช่น เปิดหน้าเว็บ ส่ง form หรือ Login
- Response คือคำตอบ เช่น หน้าเว็บ ข้อมูล ข้อความ Error หรือการ Redirect
ทุกครั้งที่เราใช้งาน Web Application จะมี request และ response เกิดขึ้น
Slide 9: Flow การแจ้งปัญหาหนึ่งรายการ
- เปิดหน้าแจ้งปัญหาUser เข้าหน้าฟอร์ม
- กรอกข้อมูลtitle, detail, contact
- กด SubmitFrontend ส่ง request
- Backend validateผ่านหรือไม่ผ่าน
จุดสำคัญคือ Backend ต้องตรวจข้อมูลอีกครั้งก่อนบันทึก เพราะข้อมูลที่ส่งจาก Browser สามารถถูกแก้ไขได้
หากข้อมูลผ่าน ระบบจึงบันทึก issue ลง database หากไม่ผ่าน ระบบส่ง error กลับไปให้ผู้ใช้แก้ไข
Slide 10: CRUD คือการทำงานพื้นฐานกับข้อมูล
| ตัวอักษร | ความหมาย | ในระบบแจ้งปัญหา |
|---|---|---|
| C | Create | สร้างรายการปัญหา |
| R | Read | ดูรายการและรายละเอียด |
| U | Update | เปลี่ยนสถานะหรือเพิ่ม comment |
| D | Delete | ลบหรือปิดรายการ |
ใน Project นี้เราจะใช้ status DONE เพื่อปิดงานแทนการลบข้อมูลจริง ทำให้ยังย้อนดูประวัติได้
Slide 11: แต่ละเทคโนโลยีอยู่ตรงไหน
| เทคโนโลยี | หน้าที่ใน Project |
|---|---|
| HTML | สร้าง Form, Input, Button และ Table |
| CSS / Tailwind CSS | จัดหน้าตาและ Responsive Layout |
| TypeScript | กำหนดรูปแบบข้อมูลและเขียน Logic |
| Next.js | จัดหน้า Component และ Code ฝั่ง Server |
| Supabase | เก็บข้อมูลและจัดการ Authentication |
| Git / GitHub | เก็บประวัติและส่ง Source Code |
เราไม่จำเป็นต้องเรียนทุกอย่างพร้อมกัน แต่จะเพิ่มทีละชั้นบน Project เดิม
Slide 12: ทำไมต้องเข้าใจ Flow ก่อนใช้ AI
AI ช่วยเขียน code ได้เร็ว แต่ยังต้องมีคนตรวจว่า:
- Code อยู่ฝั่ง Frontend หรือ Backend
- ข้อมูลถูกตรวจที่จุดใด
- ผู้ใช้มีสิทธิ์ทำสิ่งนั้นหรือไม่
- Error ถูกจัดการอย่างไร
- ข้อมูลสำคัญหรือ Secret ถูกเปิดเผยหรือไม่
ก่อนใช้ code ที่ AI สร้าง ให้ขอคำอธิบาย flow และตรวจว่า code เชื่อมกับระบบส่วนใด
Slide 13: สรุปก่อนเริ่มเขียน HTML
ตอนนี้เราเห็นภาพแล้วว่า:
- Frontend รับข้อมูลและแสดงผล
- Backend ตรวจและประมวลผล request
- Database เก็บข้อมูลของระบบ
- CRUD อธิบายการสร้าง อ่าน แก้ไข และปิดข้อมูล
- AI ช่วยเขียน code ได้ แต่เราต้องเข้าใจ flow ก่อนนำไปใช้
ชั่วโมงถัดไปเราจะเริ่มสร้าง Frontend ส่วนแรกด้วย index.html และทำ Form สำหรับแจ้งปัญหา
คำศัพท์สำคัญ
| คำศัพท์ | ความหมาย |
|---|---|
| Frontend | ส่วนที่ผู้ใช้เห็นและโต้ตอบด้วย |
| Backend | ส่วนหลังบ้านที่ประมวลผลและติดต่อ database |
| Database | ที่เก็บข้อมูลของระบบ |
| Request | คำขอที่ browser ส่งไปหา server |
| Response | คำตอบที่ server ส่งกลับมา |
| CRUD | Create, Read, Update, Delete |
| Authentication | การตรวจสอบตัวตน |
| Authorization | การตรวจสอบสิทธิ์ |
| Validation | การตรวจสอบความถูกต้องของข้อมูล |