3 điểm bởi GN⁺ 2025-11-29 | 1 bình luận | Chia sẻ qua WhatsApp
  • PocketBasebackend mã nguồn mở dạng tệp đơn bao gồm cơ sở dữ liệu, xác thực, lưu trữ tệp và bảng điều khiển quản trị
  • Cấu trúc cơ sở dữ liệu nhúng hiệu năng cao với trình dựng schema, kiểm tra dữ liệu, đăng ký thời gian thựcREST API
  • Đơn giản hóa quản lý người dùng với hỗ trợ email/mật khẩu và đăng nhập OAuth2 (Google, Facebook, GitHub, GitLab)
  • Lưu trữ tệp an toàn trên bộ nhớ cục bộ hoặc S3, gắn media vào bản ghi cơ sở dữ liệu và tự động tạo thumbnail
  • Có thể dùng như ứng dụng độc lập hoặc framework có thể mở rộng bằng Go·JavaScript, hữu ích để xây dựng backend tùy biến gọn nhẹ

Tổng quan về PocketBase

  • PocketBase là nền tảng backend mã nguồn mở hoạt động dưới dạng một tệp thực thi duy nhất
    • Tích hợp cơ sở dữ liệu, xác thực, lưu trữ tệp và bảng điều khiển quản trị
    • Cấu trúc có thể chạy nhanh mà không cần cấu hình máy chủ riêng

Tính năng cơ sở dữ liệu

  • Bao gồm cơ sở dữ liệu nhúng hỗ trợ trình dựng schema, kiểm tra dữ liệu, đăng ký thời gian thựcREST API
    • Cung cấp khả năng phát hiện và theo dõi thay đổi dữ liệu theo thời gian thực
    • Có thể dễ dàng truy vấn, tạo, sửa và xóa dữ liệu thông qua REST API

Xác thực người dùng

  • Hỗ trợ quản lý người dùng ứng dụng và đăng nhập bằng email/mật khẩu
  • Thông qua xác thực OAuth2, có thể đăng ký và đăng nhập bằng tài khoản Google, Facebook, GitHub, GitLab

Lưu trữ tệp

  • Có thể lưu trữ tệp an toàn trên bộ nhớ cục bộ hoặc S3
    • Có thể đính kèm tệp media vào bản ghi cơ sở dữ liệu
    • Cung cấp tính năng tự động tạo thumbnail khi tải lên

Khả năng mở rộng và hỗ trợ nhà phát triển

  • PocketBase có thể được dùng như ứng dụng chạy độc lập hoặc như framework có thể mở rộng thông qua hook Go và JavaScript
    • Nhà phát triển có thể thêm logic riêng để triển khai backend tùy biến

Ví dụ JavaScript SDK

  • Có thể tương tác với máy chủ PocketBase thông qua JavaScript SDK
    • Mã ví dụ minh họa các chức năng lấy danh sách bản ghi của collection example, truy vấn/xóa/tạo một bản ghi, đăng ký thời gian thực và hủy đăng ký
    • Cung cấp các phương thức như pb.collection('example').getList(), getOne(), create(), delete(), subscribe()

1 bình luận

 
GN⁺ 2025-11-29
Ý kiến trên Hacker News
  • Câu “SQLite không có khả năng mở rộng” phần lớn là ảo giác tối ưu hóa quá sớm
    Trên thực tế, hiếm khi đụng tới giới hạn tranh chấp WAL, và tôi nghĩ sự đơn giản của một binary duy nhất tốt hơn rất nhiều so với độ phức tạp của hệ thống phân tán
    Dạo này ngay cả các dự án nhỏ cũng mặc định gắn thêm DB cluster và Redis cache, nhưng Pocketbase cho thấy ở 99% ứng dụng CRUD, nút thắt không phải DB mà là độ trễ mạng và thời gian quản trị của lập trình viên

    • Với đa số ứng dụng, nút thắt khó hơn giới hạn kỹ thuật là thu hút người dùng
    • Tôi đang chạy blog cá nhân trên gói DigitalOcean droplet rẻ nhất và dùng SQLite
      Tôi đã thử bằng benchmark CLI viết bằng Rust, và hiệu năng còn tốt hơn MySQL hay Postgres trên cùng một máy
      Với dự án ở quy mô này thì SQLite là tối ưu
    • Nhưng vì thiếu kiểu decimal nên khó dùng SQLite cho các phép tính tài chính
      Phải xử lý toàn bộ phép tính ở phía ứng dụng nên khá phiền
  • Cứ thấy Pocketbase là tôi bấm upvote ngay
    Tôi đang dùng nó trong nhiều ứng dụng production và nó rất ổn định
    Thỉnh thoảng có thay đổi gây vỡ tương thích, nhưng nhìn chung rất tuyệt và cũng mở rộng tốt
    Khi thiếu tính năng cần thiết thì hơi khó chịu một chút, nhưng với lập trình viên có kinh nghiệm thì hoàn toàn xử lý được

    • Tôi thật sự thích câu trong FAQ: “nếu bạn không có thời gian đọc tài liệu và chỉ định dựa vào công cụ AI thì đừng dùng Pocketbase”
    • Tôi cũng nghĩ vậy. Tôi đã mở rộng bằng JS và nó hoạt động rất tốt
      Chỉ là dự án do một mình tác giả phát triển nên tôi hơi lo về việc bảo trì sau này
      Dù vậy, đây vẫn là lựa chọn rất tốt khi cần tách riêng front-end và back-end
    • Tôi tò mò không biết bạn đang vận hành những loại ứng dụng production nào bằng Pocketbase
  • Tôi rất hay dùng Pocketbase cho dự án cá nhân và công cụ nội bộ
    Dùng cùng PocketPages thì có thể dễ dàng dùng file-based routing và template
    Nhờ tính năng DB migration tự động, có thể đưa thay đổi schema vào version control
    Tôi thậm chí còn gắn thêm server giao thức Gemini để duyệt đồ thị tri thức cá nhân bằng Lagrange

    • Tôi đang định host trên Raspberry Pi 5, không biết yêu cầu hiệu năng ra sao và so với Supabase có ràng buộc đặc biệt nào không
    • Tôi không biết Lagrange là gì. Trông nó không giống dự án liên quan tới LLM hay knowledge graph
  • Pocketbase là một backend server có thể cấu hình bằng GUI
    Nó cho phép tạo backend hoạt động gần như không cần code, nên phù hợp cho prototype, MVP và ứng dụng đơn giản
    Kiểu khái niệm này được Firebase phổ biến rộng rãi

    • Tôi muốn biết cụ thể nó làm những gì
      Backend tôi viết thường cần từ vài trăm tới vài nghìn dòng code, nên tôi muốn hiểu nó thay thế phần đó như thế nào
      Tôi cũng tò mò phạm vi ứng dụng có thể làm bằng loại công cụ này
    • Nhìn ví dụ trên trang chủ thì tôi nhớ đến Parse
  • Tôi đã thử dùng Pocketbase trong một side project và thật sự rất ấn tượng
    Tôi đã làm việc với Django từ lâu, nhưng với các dự án nhỏ và vừa thì Pocketbase phù hợp hơn nhiều so với việc tự xây backend truyền thống
    Nếu có câu hỏi thì tôi sẵn sàng trả lời

    • Tích hợp GIS của Django rất tuyệt, nên tôi tò mò Pocketbase thế nào
      Ngoài ra nó có hỗ trợ PostgreSQL không, hay chỉ dành cho SQLite
    • Tôi cũng muốn biết migration từ backend hiện có dựa trên SQLite sang có dễ không
    • Tôi cũng đã dùng nó cho dự án cá nhân, nhưng các LLM cứ hay nhầm lẫn cách tương tác với Pocketbase
      Vì vậy tôi đã làm một Claude Skill, không biết có ai gặp trải nghiệm tương tự không
  • Trailbase là phiên bản hiện thực hóa cùng ý tưởng đó bằng Rust

    • trang so sánh của TrailBase
    • Tôi có thiện cảm với Trailbase vì họ không lược bỏ lệnh curl trong ví dụ
    • Pocketbase dựa trên SQLite nhưng lại không hỗ trợ cột NULLABLE nên khá bất tiện
      Vì thế tôi đã chuyển sang Trailbase
    • Trailbase có thể chạy JS ở endpoint
      Tức là nó còn có thể host cả ứng dụng hoàn chỉnh
      Liên kết hướng dẫn
    • Nhìn ở khía cạnh này thì phía Pocketbase có thể lại hấp dẫn hơn
  • Tôi đang dùng Pocketbase làm lớp xác thực cho side project
    Nó đang chạy tại kavla.dev, và hệ thống hook của nó rất tuyệt
    Nhờ tài liệu Go event hook mà cả tự động hóa hạ tầng cũng có thể triển khai dễ dàng

  • Tôi đã làm MVP rất nhanh với SQLite và DuckDB, nhưng về sau lại hối hận ở giai đoạn backup và đưa vào production
    Có lẽ nếu ngay từ đầu dùng Supabase thì đã nhàn hơn

  • Tôi đã làm OpenSOHO bằng Pocketbase, và nhờ đó tiết kiệm được rất nhiều thời gian phát triển
    Tôi có chỉnh sửa một chút để tái sử dụng backend, nhưng không hề khó
    Chỉ nhìn screenshot thôi cũng nhận ra ngay dấu vết của Pocketbase
    Liên kết GitHub

  • Vì lo về chuyện backup SQLite của Pocketbase, tôi đã tự làm sqlrsync.com, một công cụ cho phép backup bằng sqlite3_rsync ngay cả khi đang chạy
    MVP đã hoạt động, và vì dựa trên Cloudflare Durable Objects nên nhanh và ổn định
    Rất mong nhận được phản hồi

    • Tôi cũng thích SQLite. Tôi đang dùng sao chép liên tục bằng litestream, không biết bạn có dùng SQLite rsync không
    • Tôi muốn hỏi bạn đã thử online backup API của SQLite chưa. Có vẻ nên tránh truy cập trực tiếp file thô
    • Tôi muốn biết sự khác biệt giữa sqlrsync và litestream là gì