0

[Open Source] #88 - Formbricks: Hạ tầng khảo sát đa kênh cho SaaS với Next.js, Prisma và kiến trúc Monorepo

Thấu hiểu khách hàng là chìa khóa sống còn của bất kỳ sản phẩm SaaS nào. Tuy nhiên, việc tích hợp các công cụ khảo sát truyền thống thường khiến trải nghiệm người dùng bị ngắt quãng, hoặc dữ liệu bị rời rạc khỏi hệ thống chính. Formbricks xuất hiện như một "Survey Infrastructure" (hạ tầng khảo sát) hiện đại, mã nguồn mở, cho phép các đội ngũ sản phẩm nhúng sâu các bộ câu hỏi vào trong ứng dụng (In-product) mà vẫn giữ toàn quyền kiểm soát dữ liệu.

Dưới góc độ kỹ thuật, Formbricks là một Case Study mẫu mực về việc ứng dụng Next.js (App Router) và kiến trúc Monorepo để xây dựng một nền tảng SaaS quy mô lớn, linh hoạt và dễ mở rộng.

Github: https://github.com/formbricks/formbricks


🛠️ 1. Nền tảng công nghệ: Chiếm lĩnh Modern Web Stack

Formbricks tận dụng tối đa những công nghệ tiên tiến nhất trong hệ sinh thái JavaScript để đảm bảo tốc độ và tính an toàn:

  • Lõi thực thi (Next.js App Router): Sử dụng triệt để Server Components để tối ưu hiệu suất render và Server Actions để xử lý logic nghiệp vụ phía backend một cách liền mạch.
  • Quản lý Monorepo (Turborepo & pnpm): Giúp chia nhỏ hệ thống thành các gói (packages) độc lập như database, types, surveys, và js-core. Điều này cho phép tái sử dụng code giữa Dashboard quản trị và bộ thư viện nhúng (SDK).
  • Database & Schema (Prisma & PostgreSQL): Sử dụng Prisma làm cầu nối, kết hợp với Zod để đảm bảo dữ liệu luôn được validate chặt chẽ từ tầng Client đến tầng lưu trữ vật lý.
  • Hệ thống đệm (Valkey/Redis): Đảm bảo khả năng chịu tải cực cao cho các API public phục vụ hàng triệu lượt hiển thị khảo sát mỗi ngày.

🏗️ 2. Trụ cột kiến trúc: Tách biệt Core và Distribution

Kiến trúc của Formbricks giải quyết bài toán "khảo sát ở mọi nơi" (Omnichannel):

  • Widget Injection (UMD Bundling): Formbricks xây dựng bộ engine render khảo sát dưới dạng gói UMD bundle. Khách hàng chỉ cần nhúng một dòng mã <script> (tương tự Google Analytics), hệ thống sẽ tự động khởi tạo "lớp não" bên trong trình duyệt của người dùng.
  • Event-driven Targeting: Khác với các form tĩnh, khảo sát của Formbricks có thể được kích hoạt dựa trên Sự kiện (Actions). Ví dụ: Chỉ hiển thị khảo sát khi người dùng nhấn nút "Hủy gói" (Cancel subscription).
  • Open Core & EE Modules: Dự án áp dụng mô hình kinh doanh Open-core. Các tính năng Enterprise (như SSO, Audit Logs) được đóng gói riêng biệt trong thư mục ee/, giúp quản lý bản quyền chuyên nghiệp mà không làm ảnh hưởng đến lõi mã nguồn mở.

🔄 3. Workflow: Từ thiết kế đến Phân tích phản hồi (Sequence Diagram)

Sơ đồ dưới đây mô tả hành trình từ lúc Admin tạo khảo sát đến khi nhận được dữ liệu phản hồi từ người dùng cuối:

image.png


⚡ 4. Các kỹ thuật "Pro-level" trong mã nguồn

  1. Hệ thống Pipeline & Integrations: Formbricks xây dựng một kiến trúc "ống dẫn" linh hoạt. Khi có một câu trả lời mới, dữ liệu sẽ được đẩy qua các node xử lý để chuyển đổi định dạng và gửi sang các nền tảng như Slack, Notion, Zapier một cách bất đồng bộ.
  2. Privacy-by-Design: Dự án hỗ trợ Self-hosting cực tốt thông qua Docker và Helm Charts. Mọi dữ liệu nhạy cảm của khách hàng được lưu trữ hoàn toàn trên hạ tầng của chính họ, giải quyết triệt để nỗi lo về quyền riêng tư.
  3. No-code Survey Editor: Bộ soạn thảo được xây dựng tinh vi, cho phép người dùng cấu hình "Logic rẽ nhánh" (ví dụ: Nếu trả lời A thì nhảy đến câu 5, nếu trả lời B thì kết thúc) hoàn toàn trực quan mà không cần gõ một dòng code nào.
  4. Universal Data Types: Việc chia sẻ package @formbricks/types trong Monorepo giúp toàn bộ hệ thống (từ SDK chạy trên máy khách đến Backend xử lý dữ liệu) luôn thống nhất về kiểu dữ liệu, loại bỏ hoàn toàn lỗi "undefined" khi tích hợp.

⚖️ 5. So sánh chiến lược

Tiêu chí Formbricks Typeform Qualtrics (Enterprise)
Nhúng vào App Chuyên sâu (In-product native) Iframe (Hạn chế) Rất phức tạp
Quyền sở hữu Tuyệt đối (Self-host) Phụ thuộc bên thứ 3 Phụ thuộc bên thứ 3
Khả năng tùy biến Rất cao (Sửa code trực tiếp) Trung bình Thấp
Giá cả Miễn phí (Bản Community) Rất đắt theo Response Cực kỳ đắt

✅ Kết luận: Tại sao Formbricks là hình mẫu lý tưởng?

Formbricks không chỉ là một công cụ khảo sát; nó là một bài học về hệ thống hóa quy trình thu thập dữ liệu. Dự án chứng minh rằng ngay cả những bài toán "cũ" như tạo form vẫn có thể được nâng tầm thành một hạ tầng kỹ thuật mạnh mẽ nhờ ứng dụng đúng các tư duy hiện đại như Monorepo và Serverless-friendly architecture.

Đối với các kỹ sư Full-stack, nghiên cứu Formbricks sẽ giúp bạn hiểu sâu về:

  • Cách xây dựng Survey Engine linh hoạt với logic phức tạp.
  • Kỹ thuật đóng gói SDK nhúng (Injected scripts) chuyên nghiệp.
  • Tư duy thiết kế Modular Monorepo để tối ưu hóa quy trình phát triển.

Hy vọng bản phân tích này mang lại cho bạn những góc nhìn giá trị về cách xây dựng ứng dụng SaaS hiện đại. Đừng quên Upvote và Follow để theo dõi những bài phân tích mã nguồn "khủng" tiếp theo nhé!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí