AI Web Studio977-121 · PSU PHUKET
คู่มือผู้สอน
ดาวน์โหลด Markdown

AI Web Studio · 977-121 · PSU Phuket

คู่มือผู้สอน: AI Web Studio — 2 วัน / 8 ชั่วโมง

ออกแบบและพัฒนาเว็บไซต์ด้วย AI — หน่วยปฏิบัตินี้เป็นส่วนหนึ่งของ 977-121 Module: Website Design and Development, มหาวิทยาลัยสงขลานครินทร์ วิทยาเขตภูเก็ต (Prince of Songkla University, Phuket Campus). เวลา workshop คือ 2 วัน × 240 นาที รวม 8 ชั่วโมง โดย 240 นาทีของแต่ละวันรวมพัก 10 นาทีแล้ว; 8 ชั่วโมงไม่ใช่คำอธิบายชั่วโมงรวม รายวิชาฉบับเต็ม หรือจำนวนหน่วยกิตของ module มหาวิทยาลัย. บทเรียน 12 บท, คู่มือและบททดลองเสริม 11 ชุด และ prompt libraries เป็นคลังสำหรับผู้สอนเลือกใช้และให้ผู้เรียนศึกษาต่อ ไม่ได้หมายความว่าต้องสอนครบทุกบรรทัดใน 8 ชั่วโมง. ตรวจคำสั่งกับ package.json, wrangler.jsonc, src/worker.ts และ examples/ เมื่อ 9 กันยายน 2026; คู่มือนี้ไม่อ้างว่าคำสั่งใดได้รันผ่านแล้วในเครื่องผู้เรียน

ผลลัพธ์ปลายทางและหน้าที่ผู้สอน

ผู้เรียนสร้าง capstone เป็นหนึ่งในสามแบบ: เว็บบริษัท, เว็บเช่าอุปกรณ์ หรือ product showcase ที่มี quote request. ทุกชิ้นต้องมี brief/spec, UI ที่ responsive/accessibility-aware, หลักฐาน validation, preview deployment และ release packet; หน้า store เป็น quote demo ไม่ใช่ payment. ผู้สอนทำให้ AI เป็นคู่ทำงานที่มีหลักฐาน ไม่ใช่เครื่องมือที่เดาความจริงทางธุรกิจหรือ deploy โดยไร้การตรวจรับ.

แผนภาพเส้นทางผู้เรียนตลอด 2 วัน เริ่มจาก brief และ prompt ผ่านเว็บตัวอย่างกับ server authority ไปยัง preview และ release packetแผนภาพเส้นทางผู้เรียนตลอด 2 วัน เริ่มจาก brief และ prompt ผ่านเว็บตัวอย่างกับ server authority ไปยัง preview และ release packet
บนจอเล็ก เลื่อนแนวนอนเพื่ออ่านแผนภาพ หรือเปิดไฟล์ HTML จากลิงก์ใต้ภาพ

เปิดแผนภาพเส้นทางผู้เรียนแบบเต็มหน้า เพื่อใช้เปิดคอร์สและ recap ต้นวัน ตารางนาทีต่อนาทีด้านล่างยังเป็น source of truth ของเวลา เพราะตารางเหมาะกับการเทียบกิจกรรม ผู้สอน และหลักฐานมากกว่าแผนภาพ

โครง repository ที่ต้องพูดถึงตั้งแต่วันแรก:

พื้นที่ หน้าที่ใน workshop
examples/company/ หน้า form ติดต่อ; main.js ส่ง POST /api/contact
examples/rental/ catalog/availability/rental form; ใช้ /api/catalog, /api/availability, POST /api/rentals
examples/store/ GSAP, cart และ POST /api/quotes
src/worker.ts Worker API, validation, idempotency, Turnstile และ static-assets fallback
migrations/0001_initial.sql + 0002_demo_retention.sql D1 schema, capacity trigger, quote/contact tables และ rate-limit counters
scripts/build.mjs render Markdown ใน docs/ เป็น site ไป dist/
wrangler.jsonc Worker entry, static assets, /api/* routing, D1 binding และ DEMO_MODE

ก่อนเริ่มคอร์ส: ห้องและ setup

ผู้สอนเตรียม Node.js ที่เข้ากับ project, npm, browser Chromium และบัญชี Cloudflare สำหรับภาพรวม deploy ในวันที่ 2. อย่าแจก production API token ในห้อง. ผู้เรียนทำงานใน clone ของตนเองหรือ branch/worktree แยก และใช้ demo content เท่านั้น.

ส่ง คู่มือติดตั้ง Claude Code, Codex, Claude Desktop และ ChatGPT Desktop ให้ผู้เรียนก่อนวันแรก โดยเลือก coding tool หลักหนึ่งตัวและส่ง version/sign-in check ที่ตัดข้อมูลบัญชีออก การติดตั้งและดาวน์โหลดเป็น prework; ช่วง setup 25 นาทีในห้องใช้ตรวจความพร้อมและแก้ปัญหาสำคัญ ผู้เรียนที่ยังไม่มีสิทธิ์ใช้ Desktop/web ฝึก brief และทำงานคู่กับผู้สอนได้

เพิ่ม Lab Research to Brand เป็น prework/self-study 150 นาที: ข้อมูล → evidence → brief → brandbook → icons/key visual → handoff มี HUSH kit ให้เปิดเทียบ ผู้สอนเลือกสาธิต inventory/research/brief 20 นาทีภายในช่วง design 30 นาทีเดิม ไม่บวกเวลาอบรมเพิ่ม และให้ผู้เรียนทำ visual assets ต่อหลังเรียน

สำหรับ design demo ให้เตรียม frame/export ที่ใช้ข้อมูลสมมติและอ่านได้จริง เลือกเส้นทางเดียวจาก Lab Design Tools/MCP: Claude Design → Claude Code, Stitch → handoff หรือ Figma remote MCP → coding agent ตรวจสิทธิ์และลอง read-only ก่อนวันสอน หาก connector ใช้ไม่ได้ให้ใช้ screenshot/HTML ที่เตรียมไว้ พร้อมระบุว่ารอบนั้นเป็น file handoff

ก่อนวัน 2 ให้ทำ คู่มือ Wrangler login และ Cloudflare API token เลือก OAuth สำหรับเครื่องส่วนตัว หรือ token สำหรับ environment ที่เหมาะสม ตรวจ account ให้ตรงและส่งเฉพาะผลตรวจที่ไม่แสดง credential เนื้อหาสร้าง token/แก้ปัญหาเป็น prework หรือ self-study 30–45 นาที ไม่เพิ่มเวลาช่วง deploy/release 40 นาทีในตาราง

สำหรับผู้เรียนที่ต้องการเห็น workflow เต็มจากข้อมูลถึงเว็บไซต์ ใช้ Lab RW Web เป็น self-study 120–180 นาทีหลังบท 02 Lab นี้ติดตั้ง skill 4 ตัว ทดลองทั้งการเรียกแยกช่วงและ $rw-web แบบ one-shot สร้างภาพ hero/key visual ด้วย built-in imagegen เป็นทางเลือก และส่งต่อไปยัง Cloudflare เฉพาะเมื่อมี account/hostname ที่ได้รับอนุญาต ผู้สอนอาจเลือกสาธิต pipeline diagram และ prompt หนึ่งช่วงในเวลา Context and skills 30 นาทีเดิม โดยแทนที่แบบฝึกย่อย ไม่เพิ่มเวลา 480 นาที

Lesson 00 — setup และ verify (ใช้เปิดวัน 1)

ให้ผู้เรียนเปิด terminal ที่ repository root แล้วทำตามลำดับนี้:

npm ci
npm run
npm run types
npm run typecheck
npm run build
npm run db:local
npm run dev

ผลที่ควรสังเกต ไม่ใช่ผลที่ผู้สอนรับประกันล่วงหน้า: npm run แสดง scripts ที่มีอยู่; types อาจเขียน worker-configuration.d.ts; build ควรสร้าง dist/; db:local ใช้ migration migrations/ กับ binding DB; dev เปิด Wrangler ที่ port 3320 ตาม script. ให้เปิด http://localhost:3320/, /examples/company/, /examples/rental/, /examples/store/, และ http://localhost:3320/api/health. หาก command ใดล้มเหลว ผู้เรียนเก็บ output เต็ม, node --version, npm --version, current directory และแก้จากข้อมูลจริง—ไม่ให้ AI เดา command ใหม่.

npm run test และ npm run test:e2e เป็น scripts ที่ประกาศไว้ แต่ผู้สอนไม่ควรบอกว่า test ผ่านจนกว่าจะรันใน session นั้นและอ่านผล. ตรวจว่ามีไฟล์ใต้ tests/ และ Playwright configuration/required browser ก่อนนำเข้า acceptance gate.

แบบฝึก install/verify skill แบบ portable (20 นาที)

ให้สอนแนวคิด ไม่ติดตั้ง global skill จริง. สร้าง ชั่วคราว ใน working folder ของผู้เรียน เช่น scratch-skills/marketing-page-review/SKILL.md จากตัวอย่างเต็มใน บท 02. ตรวจว่ามี frontmatter name และ description, body ระบุ evidence/stop condition, และไม่มี secret/script/MCP config. จากนั้นให้ผู้เรียนใช้ agent ของตนอ่านไฟล์นั้นโดย explicit file path แล้วทำ review หน้า /examples/company/; บันทึกว่ามันอ่าน skill และรายงาน not verified อย่างซื่อตรงหรือไม่.

อย่าบอกว่า $marketing-page-review จะใช้ได้ทุกเครื่อง. Claude Code ใช้ /skill-name; Codex/host อื่นอาจ auto-select, ใช้ $..., หรือมี syntax ต่างกัน. ทดลอง direct invocation เฉพาะเมื่อ documentation และ installation ของเครื่องนั้นยืนยัน. การสอนนี้วัด portable core ไม่ใช่ command ของ vendor.

ตาราง 2 วันแบบนาทีต่อนาที

ตารางนี้คือเส้นทาง workshop 480 นาทีรวมพัก ผู้สอนใช้ lesson ที่ระบุเป็นแหล่งเตรียมตัวและเลือก exercise ตามเวลา ส่วนกิจกรรมที่ไม่ได้เลือกให้เป็น self-study/extension

วัน 1 — brief, skills, design และเว็บบริษัท (240 นาที)

นาที กิจกรรม ผู้สอนทำ/พูด หลักฐานจากผู้เรียน
0–15 เปิดหน่วยเรียน + diagnostic อธิบายตำแหน่งใน 977-121; เลือก pretest 4 ข้อจากคลัง คำตอบตั้งต้น
15–40 Setup และอ่าน repository demo root commands, หน้าเว็บ และหลักฐาน error ที่ครบ local URL หรือ error log
40–80 Brief → spec → prompt สาธิต facts/assumptions/acceptance และ prompt แบบ plan-first brief 7 ช่อง + prompt
80–110 Context และ skills เทียบ project rule, task prompt, skill และ source of truth context map สั้น
110–120 พัก พัก 10 นาทีภายในเวลา 4 ชั่วโมง
120–150 Rawinnipa design + design tool 10 นาทีอ่าน tokens; 10 นาที demo หนึ่งเส้นทาง; 10 นาทีตรวจ context/handoff mini style board + หลักฐานอ่านแบบ
150–200 Company vertical slice trace contact flow แล้วให้คู่เรียนแก้ hero/form state หนึ่งส่วน diff + screenshot
200–225 Mobile, keyboard และ review ตรวจ 390px, Tab, error/success และ finding จากเพื่อน checklist + finding
225–240 Exit ticket เขียนสิ่งที่ยืนยันแล้ว, risk หนึ่งข้อ และ slice ถัดไป exit ticket

สคริปต์ demo: “ผมจะไม่ขอให้ agent สร้างเว็บทั้งเว็บ. ผมจะให้มันอ่าน spec แล้วตอบสามอย่าง: facts ที่ยืนยัน, assumptions, และแผน. ถ้ามันแต่งราคา เราหยุดและแก้ brief—ไม่แก้ CSS.” จากนั้นเปิด docs/lessons/01-vibe-coding-foundations.md ให้เห็น prompt contract.

ขอบเขตที่เลือกในชั้น: บท 00–05 ใช้เฉพาะส่วนที่สนับสนุน brief, skill, design และ company slice. แบบฝึก 45–75 นาทีในแต่ละบทเป็นเวลาทำเต็มแบบอิสระ ผู้สอนไม่ต้องทำครบทุกชุดในวัน 1

วัน 2 — data, motion overview, deploy และ capstone (240 นาที)

นาที กิจกรรม ผู้สอนทำ/พูด หลักฐานจากผู้เรียน
0–25 Recap + data authority เทียบ browser state กับ Worker/D1 authority และ [start,end) authority map
25–70 Rental/API exercise trace catalog → availability → rental; ทดลอง valid/error/conflict หนึ่งเส้นทาง request/response evidence
70–100 Motion + quote overview เปิด store, reduced motion และ server repricing; ไม่ build animation ทั้งหน้า motion/quote checklist
100–110 พัก พัก 10 นาทีภายในเวลา 4 ชั่วโมง
110–150 Deploy/release boundaries อ่าน config, dry-run, secret boundary, smoke และ rollback release gate record
150–205 Capstone vertical slice เลือก company/rental/store แล้วสร้างหรือปรับหนึ่ง slice พร้อมตรวจ working diff + evidence log
205–230 Peer demo และ review demo 4 นาที/คู่: outcome, boundary, evidence, risk reviewer note
230–240 Posttest + close ใช้ 4 ข้อคู่ขนานกับวัน 1 และกำหนดเส้นทางศึกษาต่อ posttest + learning plan

ขอบเขตที่เลือกในชั้น: บท 06–10 ใช้สำหรับ rental exercise, motion/quote overview, deploy rehearsal และ capstone slice. Operations เชิงลึก, production deploy จริง, real-estate lab, Diagram Design lab และ prompt variants ที่เหลือเป็น self-study/extension เว้นแต่ผู้สอนจัดเวลาเพิ่ม

บท 11 — เลือกบริการ Cloudflare สำหรับเว็บไซต์ เป็นบทอ่านเสริมสำหรับเทียบ Workers Static Assets/Pages, D1, KV, R2, Queues, Workflows, Turnstile, Images และบริการด้าน performance/security กับ requirement จริง ไม่เพิ่มบริการเพียงเพราะมีใน catalog ผู้สอนเลือกตารางตัดสินใจหนึ่งส่วนมา recap ช่วง deploy เดิมได้โดยไม่เพิ่มเวลา

Actual repository reference solutions

Use these as “what to inspect”, not as code to overwrite.

Company contact lab

examples/company/main.js reads a form, generates crypto.randomUUID() idempotency key, and posts JSON to /api/contact with Content-Type and Idempotency-Key. The Worker accepts only name, email, message, consent, website, turnstileToken; validation rejects unknown fields, requires same origin, consent, empty honeypot, and eventually runs Turnstile unless DEMO_MODE is true. In demo mode, it stores [demo-redacted] in contacts. The reference success is HTTP 201 with a demo message/id; it is not an email delivery system.

Rental lab

GET /api/catalog returns equipment/products read from D1 through src/worker.ts; a missing DB binding is a 503, not a fixture fallback. GET /api/availability?equipmentId=camera&start=YYYY-MM-DD&end=YYYY-MM-DD&quantity=1 validates allowed query parameters/date interval/quantity and reads rental_days to return available, remaining, totalPrice, currency, days. POST /api/rentals calculates price on the server and batches insertion of rentals and daily rows. The SQL trigger rental_days_capacity_before_insert aborts capacity overrun; Worker maps this to 409 UNAVAILABLE. Learners must not use the old names from generic docs such as /api/rental-requests or cam-a for this repository.

Store lab

examples/store/main.js keeps a client Map of product id/quantity for UI only. Its request sends {items:[{productId, quantity}], name, email, consent, website} to POST /api/quotes; Worker permits 1–10 unique products and quantities 1–10, finds authoritative product records, recomputes totalPrice, writes quotes/quote_items, and returns 201 status: "quote-demo". The server never accepts client total/price. GSAP is registered once and gsap.matchMedia() makes animations only under (prefers-reduced-motion: no-preference); static content remains available.

Facilitation interventions

Signal Intervention in under 3 minutes
Learner pastes giant prompt Ask them to underline Goal, scope, evidence, stop; make one blank explicit
AI invents business details Convert to [TODO: owner], add source owner, rerun plan-only
Terminal error overwhelms learner Ask for current directory + full command + first error line; pair and isolate one failure
Learner says “AI tested it” Ask “which command/URL/result?”; move claim to not verified if no evidence
Someone wants production now redirect to npm run deploy:check, preview/release packet and human approval gate
Motion causes visual bug toggle reduced motion; establish readable final DOM before debugging tween

Daily instructor close-out

Collect a tiny artifact, not a vague feeling: Day 1 ส่ง brief/prompt + mobile/keyboard finding; Day 2 ส่ง API evidence + capstone evidence record. Photograph or export errors only after removing tokens, emails and personal data. Record blockers for self-study or the next course activity; never “solve” by quietly changing a learner’s production configuration.

หลัง workshop 2 วัน / 8 ชั่วโมง ผู้สอนอาจมอบ Lab Diagram Design หรือ Lab Real Estate UI/UX เป็น full lab เรียนต่อด้วยตัวเองประมาณ 2 ชั่วโมงต่อชุด เนื้อหาเหล่านี้ไม่รวมอยู่ในตาราง 480 นาทีข้างต้น

Lab Design Tools/MCP ใช้ฝึกต่อ 90–120 นาที โดยส่ง prompt ที่ใช้จริง, design source, token/component mapping และหลักฐาน browser ทั้ง Light/Dark ส่วน prompt library มี brief, read-only inspection, implementation, critique และ handoff ฉบับเต็ม การเลือกใช้ทุกเครื่องมือเป็นทางเลือกศึกษาต่อ ไม่ใช่เงื่อนไขการผ่าน workshop

Website → Mobile App เป็นอีก lab เรียนต่อที่ใช้เว็บบ้านสบายของหลักสูตรเป็นต้นทาง มี prompt แยกตาม design tool และ browser prototype สำหรับทดลอง flow โดยไม่เพิ่มชั่วโมงในตาราง 2 วัน

สาธิตสร้างเว็บไซต์ของหลักสูตรเอง

ใช้ Lab สร้างเว็บไซต์หลักสูตรด้วย Codex ทีละขั้น เป็นตัวอย่างหลักสำหรับผู้เรียนที่อยากเริ่มจากโจทย์ใกล้ตัว เปิด snapshot HTML → CSS → interaction เทียบกันก่อนอ่านโค้ด มี prompt จริง, transcript และภาพ Terminal/เบราว์เซอร์แต่ละช่วง ให้ผู้เรียนตอบว่าแต่ละรอบเปลี่ยนอะไรและตรวจอย่างไร Lab เต็ม 160–180 นาทีเป็น self-study; ในห้องเลือกบางช่วงภายในเวลาเดิม ไม่เพิ่มจาก 2 วัน × 4 ชั่วโมง

ต่อจากเว็บตัวอย่าง: deploy เป็นเว็บไซต์ของผู้เรียน

Lab Deploy เว็บตัวอย่างขึ้น Cloudflare เป็นส่วนเสริม 45–60 นาทีหลัง Lab สร้างเว็บ 160–180 นาที ผู้สอนเลือกสาธิตช่วง dry-run → deploy ในช่วงเผยแพร่ของ Day 2 ได้ โดยเวลา workshop ยังคง 2 วัน วันละ 4 ชั่วโมง ใช้ชื่อ Worker และบัญชีของผู้เรียน แยกจากเว็บไซต์หลักสูตรที่มี API/D1

Lab เสริม: HUSH × brandkit

ใช้ Lab brandkit ต่อจาก Research → Brandbook เป็น self-study 60–90 นาที ผู้สอนเปิด ภาพที่สร้างจริงและ review 9 panels เพื่อสาธิต 5 นาทีภายในช่วง design เดิม โดยแทนที่ส่วนสาธิตอื่น ไม่บวกเวลาตาราง 2 วัน × 4 ชั่วโมง ให้ผู้เรียนตรวจ source/pinned skill, ส่ง prompt, บันทึกผล, review แล้วทำ handoff สำหรับเว็บไซต์ เกณฑ์สำคัญคือแยกภาพ concept ออกจาก approved brandbook, SVG และ UI ที่ผ่านการทดสอบ หากสร้างภาพไม่ได้ ใช้ภาพ worked example เพื่อฝึก review/handoff โดยระบุว่าไม่ได้ generate เอง

Lab เสริม: RW Web pipeline

Lab RW Web: Research → Brandkit → Website → Cloudflare เป็น self-study 120–180 นาทีและทำให้จำนวนคู่มือ/บททดลองเสริมเป็น 11 ชุด ใช้ profile สมมติ Harbor Flow Studio เพื่อให้ตรวจ workflow ได้โดยไม่แต่งข้อมูลบริษัทจริง ผู้เรียนส่ง evidence/brandkit, sitemap/copy, source/build, browser QA และ deployment record เฉพาะผู้ที่ deploy จริง

ผู้เรียนที่ไม่มี browser tooling ยังทำ research/build ได้ แต่ต้องรายงาน QA เป็น partial; ผู้ที่ไม่มี Cloudflare credential ทำ local release packet และอธิบาย preflight/recovery แทน ห้ามแชร์ token หรือยึด tw.rawinlab.com จากตัวอย่าง package เป็นเป้าหมายจริง ภาพตัวอย่างที่หลักสูตรให้เป็น browser capture จากไฟล์ build ผ่าน file:// ไม่ใช่ภาพ Codex Desktop และไม่ใช่หลักฐานว่าเว็บขึ้น Cloudflare แล้ว

ความคืบหน้าบันทึกเฉพาะเบราว์เซอร์นี้ ไม่มีบัญชีผู้เรียนหรือการส่งข้อมูลการเรียนขึ้นเซิร์ฟเวอร์