Prerequisites
สิ่งที่ต้องติดตั้ง
หัวข้อที่มีชื่อว่า “สิ่งที่ต้องติดตั้ง”เครื่องมือแต่ละตัวจะแนะนำใน module ที่ใช้งานครั้งแรก แต่ตรงนี้คือรายการเต็มเพื่อให้คุณ set up ล่วงหน้าได้
- Node.js 20+ และ pnpm 9+ — แอปเป็น monorepo แบบ pnpm-workspaces (web app กับ sync server อยู่ด้วยกัน)
- Rust (ผ่าน
rustup) และ wasm-pack — CRDT engine เขียนด้วย Rust แล้ว compile เป็น WebAssembly ส่วนrustup target add wasm32-unknown-unknownจะเพิ่มตอน Module 5 ต้องใช้ - browser ที่ใช้ Chromium พร้อม DevTools — คุณจะคลุกอยู่กับ panel Application (IndexedDB, Service Workers, Cache, Manifest) และสลับ throttle Offline อยู่ตลอด
- git — คุณจะ deploy PWA และ sync server แยกกันในภายหลัง
ไม่ต้องมี framework CLI แบบ global เลย — แอปถูก scaffold ด้วย Astro ภายใน monorepo
คอร์สนี้ถือว่าคุณรู้อะไรมาแล้ว
หัวข้อที่มีชื่อว่า “คอร์สนี้ถือว่าคุณรู้อะไรมาแล้ว”OfflineNotes เป็นโปรเจกต์ระดับ intermediate-to-advanced คุณจะได้ประโยชน์มากที่สุดถ้าคุ้นกับ:
- TypeScript — type, module,
async/awaitและ Promise ฝั่ง client เป็น TypeScript ล้วน - แพลตฟอร์ม browser — DOM, custom event และการได้ลอง Web Components (custom element) กับ IndexedDB เป็นครั้งแรก ทั้งคู่สอนตั้งแต่พื้นฐาน แต่การเคยเจอมาก่อนช่วยได้
- Rust นิดหน่อย — คุณไม่ต้องคล่อง; Module 5–6 สอน Rust เท่าที่ต้องใช้กับ CRDT และอาศัยการเทียบเคียงตรงที่ช่วยได้ ความคุ้นกับพื้นฐาน ownership/borrowing ทำให้ราบรื่นขึ้น
- พื้นฐาน HTTP — sync server เล็กมาก แต่คุณควรคุ้นกับ request และ JSON
คุณ ไม่ จำเป็นต้องมีประสบการณ์ CRDT, WASM หรือ PWA มาก่อน — พวกนั้นคือจุดประสงค์ของคอร์สนี้
ตรวจสอบผล
หัวข้อที่มีชื่อว่า “ตรวจสอบผล”คุณ set up เสร็จเมื่อ:
node --versionแสดง 20+,pnpm --versionแสดง 9+rustc --versionและwasm-pack --versionทำงานได้ทั้งคู่- คุณเปิด panel Application ใน DevTools ของ browser แล้วเจอส่วน IndexedDB และ Service Workers
ต่อไป roadmap จะแสดงว่า OfflineNotes อยู่ตรงไหนในซีรีส์ที่ใหญ่กว่า