Database (Postgres)
Nơi lưu dữ liệu. Dạng bảng hàng cột có quan hệ, mạnh cho dữ liệu thật.
Khi app đã có giao diện, bước tiếp theo là cho nó một hậu trường thật: nơi lưu dữ liệu và cho người dùng đăng nhập. Supabase là một lựa chọn rất hợp với người mới. Trang này giúp bạn hiểu Supabase là gì và cách đưa app lên đó, theo cách dễ nhất.
Hiểu ngắn gọn: Supabase là một bộ backend đóng gói sẵn, xây trên database Postgres, dùng được ngay mà không phải tự dựng máy chủ.
Thường được gọi là "giải pháp thay cho Firebase nhưng dùng SQL". Bạn có ngay nhiều thứ trong một dự án:
Bạn tập trung mô tả điều mình muốn, phần hạ tầng để Supabase lo.
Không cần dùng hết ngay. Hầu hết app cho người mới chỉ cần database và đăng nhập là đã chạy thật.
Nơi lưu dữ liệu. Dạng bảng hàng cột có quan hệ, mạnh cho dữ liệu thật.
Đăng nhập dựng sẵn. Email, mật khẩu, magic link, đăng nhập Google và nhiều cách khác.
Lưu file. Ảnh, video, tài liệu, tách riêng với database.
Cập nhật tức thì. Dữ liệu mới hiện ngay cho mọi người, hợp với app cộng tác.
Code chạy phía server. Dùng cho logic riêng, gửi email, gọi AI một cách an toàn.
Tạo bảng là có API. Supabase tự tạo cửa giao tiếp để app đọc và ghi dữ liệu.
Bạn không đẩy giao diện lên Supabase. Bạn dựng phần hậu trường ở Supabase, rồi nối giao diện vào. Đây là bức tranh đúng.
Phần người dùng nhìn thấy và bấm. Vẫn deploy ở nơi chuyên chứa giao diện.
Phần lo dữ liệu và đăng nhập. Đây mới là chỗ bạn dựng trên Supabase.
Đây là trình tự chung, mô tả mỗi bước làm gì và vì sao. Giao diện Supabase có thể đổi theo thời gian, nên hãy nắm ý chính.
Mở tài khoản, tạo một project mới. Chọn vùng máy chủ gần người dùng của bạn và đặt mật khẩu database.
Vì sao: vùng gần giúp app phản hồi nhanh hơn.Tạo các bảng app cần, ví dụ bảng người dùng, bảng công việc. Mỗi bảng có các cột rõ ràng.
Vì sao: dữ liệu có cấu trúc thì app mới lưu và tìm đúng.Bật Row Level Security cho mỗi bảng và viết quy tắc: mỗi người chỉ đọc và sửa dữ liệu của mình.
Vì sao: không bật là bất kỳ ai cũng có thể lấy sạch dữ liệu.Chọn phương thức cho người dùng vào app: email, magic link, hoặc đăng nhập Google.
Vì sao: có đăng nhập thì mới biết dữ liệu là của ai.Supabase cấp cho bạn một URL dự án và một anon key. Đây là hai thứ để giao diện app kết nối vào.
Vì sao: đây là "địa chỉ" và "chìa khóa" để app gọi tới backend.Trong app, dùng thư viện kết nối của Supabase, điền URL và anon key. Sau bước này app đã đọc ghi được dữ liệu thật.
Vì sao: đây là lúc giao diện và hậu trường bắt tay nhau.Nếu cần xử lý riêng như gửi email hay gọi AI, viết một Edge Function chạy phía server.
Vì sao: giữ logic nhạy cảm ở server, không lộ ra giao diện.Đăng nhập thử, thêm vài dữ liệu, tải lại trang xem có còn không, thử bằng tài khoản khác xem RLS có chặn đúng.
Vì sao: chạy được mới tính, đừng tin là xong khi chưa thử.Deploy frontend lên Cloudflare, Vercel hoặc tương tự. Nhớ điền cùng URL và anon key vào phần cấu hình của hosting.
Vì sao: chạy trên máy mình khác với chạy thật cho người khác.Supabase cho bạn vài loại khóa. Hiểu đúng cái nào để ở đâu là tránh được hầu hết rủi ro lộ dữ liệu.
Dùng cho giao diện app. Nó đã bị RLS giới hạn, nên kể cả người dùng thấy cũng chỉ làm được đúng quyền cho phép.
Mở mọi cửa, bỏ qua RLS. Chỉ dùng ở phía server hoặc Edge Function. Không bao giờ để trong giao diện hay đẩy lên GitHub.
environment variable, không viết thẳng vào code.
Thêm file .env vào .gitignore để không vô tình đẩy khóa lên GitHub. Trên hosting, khai báo lại các biến này trong phần cấu hình.
AI làm phần lặp đi lặp lại rất nhanh. Việc của bạn là giao đúng, giữ khóa an toàn và kiểm tra lại.
Nói cho AI app cần bảng gì, cột gì, ai được làm gì. Mô tả càng rõ, AI tạo bảng và quy tắc càng đúng.
Đừng dán service key hay mật khẩu database vào prompt. Tự bạn điền khóa vào environment variable.
Tự bật RLS và thử bằng tài khoản khác. Đừng tin "AI nói xong rồi" khi chưa thử thật.
Hầu hết người mới vấp đúng vài chỗ này. Biết trước là tránh được.
Dữ liệu để mở, ai cũng đọc được hết. Đây là lỗi bảo mật nặng và rất hay gặp.
Để service key trong giao diện là mở toang mọi dữ liệu cho bất kỳ ai.
Chạy trên máy mình thì ổn, nhưng deploy lên là lỗi vì thiếu URL và khóa.
Người dùng ở Việt Nam mà chọn vùng xa thì app phản hồi chậm.
Khi bạn nắm được Supabase lo hậu trường, giao diện ở nơi khác, hai bên nối nhau bằng link và khóa, cộng thêm việc bật RLS và giữ khóa an toàn, bạn đã có thể tự tin cho app chạy thật với người dùng.
Phong Ho - AI Business