Supabase
Backend-as-a-Service (BaaS) — แพลตฟอร์มที่รวม backend ทั้งหมดไว้ให้พร้อมใช้ โดยไม่ต้องเขียน server เอง
ถ้าเปรียบ app เหมือนร้านอาหาร — Supabase คือ ครัวสำเร็จรูป ที่มีอุปกรณ์ครบแล้ว เราแค่เอาวัตถุดิบ (data) ใส่เข้าไป
ทำไมต้องมี Supabase?
ปกติถ้าจะสร้าง app ที่มี login + เก็บข้อมูล ต้องทำเอง:
- ตั้ง server
- ตั้ง database
- เขียน API
- จัดการ login/password/token
- ดูแล security
Supabase ทำสิ่งเหล่านี้ให้ทั้งหมด — เราแค่เชื่อมแอปเข้าไปแล้วใช้งานได้เลย
ส่วนประกอบหลัก
Database — ที่เก็บข้อมูลทั้งหมด
ใช้ PostgreSQL ซึ่งเป็น database มาตรฐานที่ใช้กันทั่วโลก — เก็บข้อมูลเป็นตาราง (rows + columns) เหมือน Excel แต่ทรงพลังกว่ามาก
Auth — ระบบ login
จัดการ user account ให้ครบ — สมัคร, login, logout, reset password, เก็บ session ไว้ในเครื่อง ทั้งหมดนี้ Supabase ทำให้โดยที่เราไม่ต้องเขียนเอง
PostgREST — API อัตโนมัติ
Supabase แปลง database ให้กลายเป็น API โดยอัตโนมัติ — แอปสามารถดึงข้อมูลจาก database ได้เลยโดยไม่ต้องมี server ตรงกลาง
Row Level Security (RLS) — กำแพงป้องกันข้อมูล
กฎที่บอกว่า “ใครอ่าน/เขียนข้อมูลได้บ้าง” — เช่น user A เห็นได้เฉพาะข้อมูลของตัวเอง ไม่เห็นของ user B แม้ข้อมูลจะอยู่ในตารางเดียวกัน
Edge Functions — โค้ดที่รันบน server
เมื่อต้องการให้บางอย่างรันฝั่ง server เช่น ส่ง notification, คำนวณ score — เขียนเป็น function แล้ว deploy ขึ้น Supabase ได้เลย (ใช้ภาษา TypeScript/Deno)
pg_cron — นาฬิกาปลุก
ระบบตั้งเวลาให้รัน function อัตโนมัติ เช่น “ทุกเที่ยงคืนให้เช็ค streak ของ user ทุกคน”
DB Triggers — ระบบตอบสนองอัตโนมัติ
กฎที่ทำงานอัตโนมัติเมื่อ database เปลี่ยนแปลง เช่น “ทันทีที่มี user สมัครใหม่ ให้สร้าง profile ให้เลย” — ไม่ต้องรอแอปมาสั่ง
เทียบกับ Firebase
ทั้งคู่คือ BaaS เหมือนกัน ต่างกันที่ database:
| Supabase | Firebase | |
|---|---|---|
| Database | SQL (ตาราง, JOIN ได้) | NoSQL (document) |
| Open Source | ✅ | ❌ |
| เหมาะกับ | ข้อมูลที่มีความสัมพันธ์กัน | ข้อมูล realtime เรียบง่าย |
NextNet ใช้ Supabase สำหรับ database + auth แต่ยังใช้ Firebase สำหรับ push notification (FCM)
ใช้ร่วมกับ
- PostgreSQL — database engine ที่ Supabase ใช้อยู่ข้างใน
- go_router — routing Flutter ที่เช็ค Supabase session ก่อนเปิดหน้า
- Firebase — ใช้คู่กันในบางโปรเจกต์ (Supabase = data, Firebase = push notif)