Appwrite vs Supabase: Người mới nên chọn gì để build CRUD 1 ngày

23/04/2026 · P T P · Chung

Appwrite vs Supabase cho người mới: Case study xây app CRUD trong 1 ngày

Bạn có một ngày cuối tuần, một ý tưởng nhỏ như app quản lý việc cần làm, quản lý chi tiêu, hay danh sách khách hàng. Bạn không muốn dựng backend từ đầu, không muốn vật lộn với auth, database, API, storage. Đây là lúc những nền tảng Backend-as-a-Service như AppwriteSupabase trở nên cực kỳ hấp dẫn.

Với người mới, câu hỏi không phải là “nền tảng nào mạnh hơn về mặt kỹ thuật?”, mà là: nền tảng nào giúp mình ra sản phẩm CRUD nhanh hơn, ít đau đầu hơn, và dễ sửa khi app bắt đầu lớn lên?

Trong bài này, mình sẽ so sánh Appwrite và Supabase dưới góc nhìn thực tế nhất: case study xây một app CRUD trong 1 ngày. Mục tiêu là giúp bạn chọn đúng công cụ cho giai đoạn bắt đầu, thay vì sa vào các bảng so sánh tính năng quá hàn lâm.

Bối cảnh case study: xây app CRUD gì trong 1 ngày?

Hãy tưởng tượng chúng ta xây một app đơn giản: Task Manager.

Các tính năng cốt lõi:

– Đăng ký, đăng nhập
– Tạo task
– Xem danh sách task
– Cập nhật trạng thái task
– Xóa task
– Mỗi người chỉ thấy task của chính họ

Stack giả định:

– Frontend: React hoặc Next.js
– Không tự viết backend riêng
– Muốn deploy nhanh
– Người làm là newbie hoặc frontend dev mới chạm backend

Đây là bài test rất sát thực tế, vì gần như mọi ứng dụng đầu đời đều xoay quanh CRUD + auth + phân quyền cơ bản.

Appwrite là gì, Supabase là gì?

Appwrite

Appwrite là một backend platform mã nguồn mở, cung cấp sẵn:

– Authentication
– Database
– Storage
– Functions
– Realtime

Trải nghiệm của Appwrite khá giống việc bạn làm việc với một “backend service” có dashboard trực quan, tạo collection, thêm thuộc tính, gán quyền, rồi gọi SDK từ frontend.

Điểm dễ thấy với người mới là: Appwrite mang tư duy hướng tài liệu/document và permission theo resource, khá gần với kiểu “backend có bảng điều khiển”.

Supabase

Supabase cũng là một backend platform mã nguồn mở, nổi bật vì xây trên PostgreSQL. Nó cung cấp:

– Postgres database
– Authentication
– Storage
– Edge Functions
– Realtime

Điểm khác biệt lớn là Supabase bám rất sát tư duy SQL-first. Bạn làm việc với table, relationship, query, policy. Nếu bạn thích cách tổ chức dữ liệu có cấu trúc rõ ràng, hoặc muốn học nền tảng backend bài bản hơn, Supabase rất có sức hút.

Tiêu chí so sánh cho người mới

Để đánh giá công bằng trong bài toán “xây app CRUD trong 1 ngày”, mình dùng 5 tiêu chí:

Tốc độ bắt đầu
Độ dễ hiểu khi cấu hình auth và database
Cách xử lý phân quyền dữ liệu
Trải nghiệm query CRUD từ frontend
Khả năng mở rộng khi app lớn dần

Bây giờ đi vào phần thực chiến.

1. Bắt đầu dự án: Appwrite thường dễ thở hơn trong 1-2 giờ đầu

Nếu bạn là người mới hoàn toàn, Appwrite thường cho cảm giác dễ tiếp cận hơn ngay từ dashboard.

Với app CRUD đơn giản, quy trình thường là:

– Tạo project
– Bật auth
– Tạo database
– Tạo collection tasks
– Thêm field như title, status, userId
– Cấu hình permission
– Dùng SDK để create/list/update/delete document

Điểm cộng lớn là bạn không nhất thiết phải hiểu SQL. Bạn chủ yếu thao tác theo kiểu:

– tạo collection
– tạo document
– set permission ai được đọc/ghi

Với nhiều bạn mới, đây là kiểu tư duy “dễ tiêu hóa” hơn.

Trong khi đó, Supabase yêu cầu bạn chạm vào khái niệm database quan hệ sớm hơn:

– Tạo table tasks
– Tạo cột
– Có thể tạo foreign key với auth.users
– Viết Row Level Security (RLS)
– Tạo policy cho select, insert, update, delete

Nếu bạn chưa từng làm việc với SQL hoặc permission ở tầng database, đoạn này có thể hơi ngợp. Không phải khó quá, nhưng nó làm chậm “time to first success”.

Kết luận mục này:
Nếu mục tiêu là “thấy app chạy CRUD càng nhanh càng tốt”, Appwrite thắng nhẹ.

2. Auth: cả hai đều ổn, nhưng cách “hiểu hệ thống” rất khác nhau

Cả Appwrite và Supabase đều hỗ trợ email/password, session, OAuth ở mức khá tốt cho nhu cầu cơ bản.

Với Appwrite

Auth khá thẳng:

– Tạo user
– Tạo session
– Lấy user hiện tại
– Dùng quyền dựa trên user đó

Cảm giác là bạn đang dùng một hệ thống auth đóng gói sẵn rất rõ ràng. Với người mới, điều này khá dễ dùng.

Với Supabase

Auth cũng không khó, SDK rõ ràng, nhưng lợi thế thật sự của Supabase nằm ở việc auth gắn với database policies. Điều này mạnh, nhưng đòi hỏi bạn hiểu rằng:

– đăng nhập chỉ là bước đầu
– dữ liệu thấy được hay không còn do RLS policy quyết định

Nhiều newbie hay gặp tình huống:

– đăng nhập thành công
– insert được hoặc không insert được
– query trả về rỗng
– không hiểu lỗi nằm ở đâu

Thực ra lỗi thường ở policy, không phải ở SDK.

Kết luận mục này:
Nếu bạn muốn auth “ít khái niệm hơn”, Appwrite thân thiện hơn.
Nếu bạn muốn auth đi kèm một mô hình dữ liệu chặt chẽ, Supabase mạnh hơn về lâu dài.

3. Phân quyền dữ liệu: Appwrite dễ cảm hơn, Supabase chuẩn hơn

Đây là phần rất quan trọng với app CRUD nhiều người dùng.

Appwrite: trực quan và nhanh

Trong Appwrite, bạn có thể gán quyền ở mức document hoặc collection. Ví dụ:

– user A chỉ đọc/sửa document của user A
– user B không thấy document của user A

Cách này rất trực quan, đặc biệt khi bạn đang xây app nhỏ. Bạn nhìn vào resource và thấy ngay ai có quyền gì.

Với app CRUD cá nhân như Task Manager, cách làm này giúp bạn triển khai khá nhanh.

Supabase: dùng RLS rất “đúng bài”

Supabase dùng Row Level Security, nghĩa là quyền truy cập nằm ở chính database. Ví dụ, bạn có thể viết policy kiểu:

– user chỉ được xem row có user_id = auth.uid()
– user chỉ được insert row có user_id là chính họ

Đây là cách làm cực kỳ mạnh và chuẩn cho ứng dụng thực tế. Nhưng với newbie, nó có thể là bức tường đầu tiên. Chỉ cần policy viết thiếu một điều kiện là CRUD lỗi ngay.

Kết luận mục này:
– Muốn ra sản phẩm nhanh và dễ hiểu: Appwrite
– Muốn hệ thống phân quyền bài bản, chuyên nghiệp hơn: Supabase

4. Trải nghiệm CRUD từ frontend: Supabase “đã tay” hơn nếu bạn thích query dữ liệu

Đến lúc code thật, sự khác biệt bắt đầu rõ.

Appwrite

CRUD trong Appwrite thường theo kiểu gọi SDK tương đối rõ ràng:

– tạo document
– liệt kê documents
– update document theo id
– delete document theo id

Rất phù hợp với các thao tác CRUD cơ bản. Nhưng khi query bắt đầu phức tạp hơn, trải nghiệm có thể không “mượt” bằng SQL.

Supabase

Supabase cho cảm giác cực kỳ thoải mái nếu bạn đã biết chút SQL hoặc tư duy dữ liệu có cấu trúc. Bạn có thể:

– select theo điều kiện
– sort
– paginate
– join thông qua quan hệ
– aggregate dễ hơn về lâu dài

Ngay cả khi dùng SDK JavaScript, bạn vẫn đang tận hưởng sức mạnh của Postgres ở phía sau. Điều này khiến Supabase rất hợp với app mà sau này sẽ có:

– filter nâng cao
– báo cáo
– dashboard
– quan hệ nhiều bảng

Kết luận mục này:
Với CRUD cơ bản, cả hai đều đủ tốt. Nhưng nếu bạn đoán app sẽ sớm cần query “xịn” hơn, Supabase có lợi thế rõ rệt.

5. Sau 1 ngày làm app: cảm giác tổng thể khác nhau thế nào?

Đây là phần đáng quan tâm nhất.

Nếu dùng Appwrite

Sau 1 ngày, khả năng cao bạn sẽ có:

– auth chạy được
– CRUD chạy được
– permission cơ bản hoạt động
– ít phải đụng khái niệm database nâng cao

Cảm giác chung: nhanh, trực quan, đỡ nặng đầu.

Đổi lại, khi app lớn dần, bạn có thể bắt đầu muốn nhiều khả năng query và mô hình dữ liệu linh hoạt hơn.

Nếu dùng Supabase

Sau 1 ngày, bạn vẫn có thể ra app CRUD hoàn chỉnh, nhưng sẽ có nguy cơ mất thêm thời gian ở các điểm:

– hiểu RLS
– debug policy
– thiết kế table hợp lý
– map auth với dữ liệu ứng dụng

Bù lại, nếu vượt qua được đoạn đầu, bạn đang đứng trên nền tảng rất tốt để phát triển app nghiêm túc hơn.

Cảm giác chung: khó hơn chút lúc đầu, nhưng “đáng tiền” nếu bạn đi đường dài.

Vậy người mới nên chọn cái nào?

Mình sẽ trả lời rất thực tế.

Chọn Appwrite nếu bạn:

– Mới học backend lần đầu
– Muốn có kết quả nhanh trong vài giờ
– Ưu tiên dashboard trực quan
– Xây app CRUD cá nhân hoặc MVP nhỏ
– Không muốn học SQL ngay lập tức

Chọn Supabase nếu bạn:

– Chấp nhận học thêm một chút ở giai đoạn đầu
– Muốn làm quen với tư duy backend chuẩn hơn
– Thích sức mạnh của PostgreSQL
– Dự đoán app sẽ có nhiều bảng, nhiều quan hệ, query phức tạp
– Muốn kỹ năng dùng được lâu dài hơn

Gợi ý lựa chọn theo mục tiêu học tập

Đây là điểm nhiều người bỏ qua: chọn tool không chỉ theo tính năng, mà còn theo mục tiêu học.

– Nếu mục tiêu của bạn là hoàn thành sản phẩm đầu tiên để có động lực, hãy chọn Appwrite.
– Nếu mục tiêu của bạn là vừa làm app vừa học backend bài bản, hãy chọn Supabase.
– Nếu bạn là frontend dev muốn thêm backend vào portfolio, cả hai đều ổn, nhưng Supabase thường ghi điểm hơn khi dự án cần dữ liệu có cấu trúc tốt.

Kết luận: Appwrite nhanh hơn để bắt đầu, Supabase mạnh hơn để đi xa

Trong case study “xây app CRUD trong 1 ngày”, Appwrite thường thân thiện hơn với người mới. Bạn ít bị chặn bởi SQL, policy, hay tư duy quan hệ dữ liệu. Nếu điều bạn cần là một cú hích để hoàn thành app đầu tiên, Appwrite là lựa chọn rất hợp lý.

Tuy nhiên, Supabase không hề quá sức. Nó chỉ đòi hỏi bạn đầu tư thêm thời gian để hiểu cách dữ liệu và quyền truy cập vận hành đúng chuẩn. Đổi lại, bạn có một nền móng rất mạnh cho những ứng dụng nghiêm túc hơn sau này.

Nói ngắn gọn:

Muốn làm nhanh, dễ vào, ít khái niệm: chọn Appwrite
Muốn học chắc, mở rộng tốt, query mạnh: chọn Supabase

Nếu bạn là người mới hoàn toàn, mình khuyên một cách rất thực dụng:
hãy bắt đầu với nền tảng khiến bạn hoàn thành app đầu tiên sớm nhất. Vì trong giai đoạn đầu, thứ quý nhất không phải là kiến trúc hoàn hảo, mà là cảm giác: “À, mình thật sự build được một sản phẩm chạy được.”

Và khi đã có trải nghiệm đó, chuyển từ Appwrite sang Supabase — hoặc ngược lại — sẽ dễ hơn rất nhiều.

Chia sẻ:

Bài viết tương tự

Bình luận

Chưa có bình luận. Hãy là người đầu tiên!