Skip to content

Phần 0. Giới thiệu & Tổng quan ​

Mục đích: giúp dev mới hiểu "Supabase là gì", "vì sao chọn stack này", và "lộ trình học ra sao" trước khi đi vào kỹ thuật cụ thể.

0.1 🎯 Mục tiêu của tài liệu ​

Mục đích ​

  • Cung cấp kiến thức và hướng dẫn từng bước để dev mới có thể:

    • Hiểu kiến trúc Supabase + Next.js (Fullstack as one project).
    • Biết triển khai ứng dụng từ đầu đến deploy (Auth, CRUD, RLS, Storage, Cron, Queue,...).
    • Nắm best practices nội bộ khi viết code, test, và quản lý môi trường.
    • Biết so sánh hiệu quả Supabase với backend truyền thống (NestJS, Express, Spring Boot,...).

Đối tượng học ​

  • Frontend Dev muốn mở rộng sang fullstack.
  • Fullstack Dev muốn tiết kiệm effort backend (MVP nhanh).
  • Intern / Junior Dev cần nắm stack chuẩn nội bộ.
  • Tech lead / Trainer cần dùng bộ tài liệu này để đào tạo người mới.

Kết quả đạt được ​

Sau khi hoàn thành tài liệu:

  • Có thể tạo Supabase project mới + Next.js frontend từ zero.
  • Tự viết CRUD, Auth, RLS, batch job, storage, deploy CI/CD.
  • Hiểu được "Supabase = Postgres + Backend service layer", không phải chỉ là database.
  • Có khả năng review code / hướng dẫn người khác đúng best practice.

0.2 🧠 Giới thiệu về Supabase ​

Định nghĩa ngắn gọn ​

Supabase là Backend-as-a-Service (BaaS) mã nguồn mở, xây dựng trên PostgreSQL, cung cấp:

  • Database (Postgres)
  • Authentication
  • Storage (file, image,...)
  • Realtime
  • Edge Functions
  • Cron / Queue → Giúp bạn dựng backend trong vài giờ thay vì vài tuần.

Thành phần chính ​

Thành phầnMô tảVai trò tương đương trong backend truyền thống
DatabasePostgreSQL có thể truy vấn trực tiếp hoặc qua REST/GraphQLRDS / Cloud SQL
AuthQuản lý user, OAuth, JWT, Magic LinkAuth service / JWT middleware
StorageLưu trữ file, image, signed URLS3 / Cloud Storage
Edge FunctionsFunction serverless viết bằng JS/TSCloud Functions / Lambda
CronLên lịch job (pg_cron, pg_net)BullMQ / Cloud Scheduler
RealtimePub/Sub thay đổi dữ liệu (WebSocket)Socket.IO / Pusher
Queue (pgmq)Message Queue trong DBSQS / RabbitMQ

So sánh tổng quan ​

Tiêu chíSupabaseBackend truyền thống
Tốc độ dựng MVP🚀 Rất nhanh (Auth, Storage, DB có sẵn)Cần setup từng phần
DevOps effortThấp (hầu như không cần server quản lý)Cao (RDS, S3, cron, queue, CI/CD)
Kiểm soát hạ tầngTrung bìnhToàn quyền
Độ phức tạp domainPhù hợp app nhỏ-vừaTốt hơn cho app lớn, phức tạp
Chi phí ban đầuRất thấp (free tier)Trung bình - cao
Mức độ mở rộng (scalability)Hạn chế theo plan SupabaseLinh hoạt tuỳ infra

0.3 🏗️ Kiến trúc tổng quan Supabase + Next.js ​

Tổng quan kiến trúc ​

mermaid
graph TD
A[Next.js App Router] -->|Supabase SDK| B[(Supabase API)]
B --> C[(PostgreSQL DB)]
B --> D[Auth Service]
B --> E[Storage Service]
B --> F[Edge Functions]
F --> C
C -->|Triggers/Webhooks| F
G[Cron Scheduler] --> F

Giải thích flow ​

  1. Frontend (Next.js): render SSR/CSR, gọi Supabase SDK để CRUD, login,...
  2. Supabase API layer: tự động expose REST/GraphQL endpoint từ schema.
  3. Postgres (Database): lưu dữ liệu + thực thi policies (RLS).
  4. Auth module: xử lý đăng ký, đăng nhập, JWT claim.
  5. Edge Functions: xử lý nghiệp vụ phức tạp / kết nối dịch vụ bên ngoài.
  6. Cron & Queue: xử lý background tasks / định kỳ.
  7. Realtime & Webhook: push dữ liệu cập nhật tới frontend theo event.

0.4 ⚡ Vì sao chọn Supabase + Next.js ​

Lý do kỹ thuật ​

  • Dự án nội bộ hoặc MVP cần ra nhanh → giảm thời gian setup backend.
  • Next.js App Router + Supabase SDK hỗ trợ tốt SSR/SSG/ISR → trải nghiệm người dùng mượt.
  • Postgres + RLS đảm bảo bảo mật ở tầng DB, giảm rủi ro do lỗi code.
  • CLI, migration, Edge Function, Cron → đủ mạnh để triển khai production-scale.

Lý do vận hành ​

  • Supabase có Free Tier và Pay-as-you-go, không cần team DevOps.
  • Có dashboard monitoring, log, rollback, auto backup.
  • Dễ đào tạo đội mới: chỉ cần biết SQL và JavaScript/TypeScript.

Lý do đào tạo ​

  • Một dev mới có thể nắm toàn bộ stack trong 1 tuần.
  • Giúp dev frontend hiểu thêm backend logic mà không cần học framework backend riêng.

0.5 🚀 Lộ trình học & triển khai ​

Giai đoạnChủ đề chínhKết quả đạt đượcThời lượng gợi ý
Phase 0Tổng quan, setup môi trườngBiết Supabase là gì, tạo project & Next.js app0.5 ngày
Phase 1Database, Auth, RLSBiết cách thiết kế schema, bảo mật RLS2 ngày
Phase 2Supabase + Next.js IntegrationCRUD, Auth UI, Protect route2 ngày
Phase 3Batch job, Queue, Edge FunctionTạo job, xử lý async2-3 ngày
Phase 4CI/CD & DevOpsBiết deploy, migration, test2 ngày
Phase 5Review & Best practicesTổng kết, so sánh backend truyền thống1 ngày

Tổng cộng: ~10 ngày training để một dev có thể tự làm MVP production-ready.

0.6 📦 Case Study xuyên suốt: Subscription Manager App ​

Để dễ học và thống nhất ví dụ, tài liệu sẽ sử dụng 1 app xuyên suốt.

Yêu cầu tính năng ​

  • User đăng ký / đăng nhập (email + OAuth).
  • Mỗi user có thể tạo nhiều "subscription" (Netflix, Spotify,...).
  • Gửi email nhắc khi gần hết hạn.
  • Cho phép upload ảnh hóa đơn (invoice).
  • Dashboard hiển thị realtime khi thêm/sửa subscription.

Cấu trúc thư mục gợi ý ​

bash
/app
  /auth
  /dashboard
  /subscription
/lib
  supabaseClient.ts
  auth.ts
/supabase
  /migrations
  /policies
  /functions
/scripts
  sendReminder.ts

Output ​

  • App hoàn chỉnh triển khai trên Vercel + Supabase.
  • Toàn bộ ví dụ trong tài liệu sẽ dùng app này để minh hoạ.

0.7 ✅ Checklist sau khi đọc xong phần này ​

  • Hiểu khái niệm Supabase và các module chính.
  • Hiểu lợi thế so với backend truyền thống.
  • Nắm sơ đồ kiến trúc Supabase + Next.js.
  • Biết mục tiêu của tài liệu và kết quả mong đợi.
  • Đã cài đặt sẵn công cụ (Node, Supabase CLI, VSCode).
  • Đã tạo project Supabase + Next.js mẫu.

0.8 💡 Best Practices nội bộ ​

  1. Luôn nghĩ Supabase như Postgres mở rộng, không phải "no-code backend".
  2. Luôn viết migration và policy bằng SQL - không thao tác bằng tay trên dashboard production.
  3. Mỗi module học → commit riêng (để dev mới có thể checkout từng bước).
  4. Bắt đầu từ use-case thật (app xuyên suốt) → dễ hiểu hơn học khô.
  5. Sau mỗi phần → review bằng checklist & mini quiz.

0.9 📚 Tài liệu tham khảo ​

Released under the MIT License.