วิธีการทำงาน

ห้องวาดผ่านลิงก์เดียว

เวอร์ชันแรกของแอปนี้ต่อกันแบบ WebRTC ตรงระหว่างสองเครื่องโดยไม่มี server เลย ซึ่งเท่ดี แต่แลกมากับขั้นตอนคัดลอกโค้ดไปมาหลายรอบ และเครือข่ายบางคู่ (NAT แบบเข้มงวด) ต่อกันไม่ได้เลย เวอร์ชันนี้จึงเปลี่ยนมาใช้ Supabase เป็นตัวกลาง แลกความบริสุทธิ์ทางเทคนิคกับความง่ายจริง: เปิดผืน ส่งลิงก์ เพื่อนกดเข้า จบ ไม่มีขั้นตอนแลกโค้ด ไม่มีปัญหา NAT และวาดพร้อมกันได้ถึง 4 คน

ภาพวิ่งยังไง

ความเป็นส่วนตัว (พูดตรง ๆ)

ต่างจากเวอร์ชัน P2P เดิม รอบนี้ pixel และชื่อเล่นของคุณ ผ่านและถูกเก็บบน server (Supabase) จริง สิ่งที่เราออกแบบไว้เพื่อจำกัดผลกระทบ:

แปลว่าอย่าใช้ผืนนี้วาดข้อมูลลับ และใครที่ได้ลิงก์ห้องไปก็เข้ามาวาดหรือดูได้เหมือนเพื่อนคนหนึ่ง — แชร์ลิงก์เฉพาะคนที่ตั้งใจชวน

ทำไม TDD แค่บางไฟล์

lib/grid.ts (LWW conflict resolution), lib/proto.ts (encode/decode ข้อความ), lib/undo.ts (ย้อนกลับแบบไม่ทับงานเพื่อน) และตัวหน่วงบันทึก (net/canvas.ts) คือตรรกะที่ผิดพลาดแล้วข้อมูลเพี้ยน เลยเทสต์แน่นด้วย TDD ส่วนการเชื่อมต่อ Realtime จริงกับ UI (zoom/pan/canvas) ต้องอาศัย browser จริง จึงยืนยันด้วยการทดสอบหลายเบราว์เซอร์พร้อมกันแทน