[Open Source] #61 - Papermark: Kiến trúc chia sẻ tài liệu bảo mật và hệ thống Tracking thời gian thực với Next.js và Tinybird
Việc gửi một tài liệu quan trọng (Pitch Deck, hợp đồng, báo cáo) qua email thường là một "hố đen" thông tin: bạn không biết liệu đối tác đã mở xem chưa, họ dừng lại ở trang nào lâu nhất, hay liệu họ có chia sẻ nó cho người khác không. Papermark xuất hiện như một lời giải mã nguồn mở mạnh mẽ thay thế cho DocSend, cho phép bạn không chỉ chia sẻ tài liệu bảo mật mà còn sở hữu toàn bộ dữ liệu phân tích hành vi người dùng.
Dưới góc độ kỹ thuật, Papermark là một bản thiết kế hiện đại về cách kết hợp giữa Next.js, Big Data Analytics (Tinybird) và AI để xử lý tài liệu ở quy mô lớn.
Github: https://github.com/mfts/papermark
🛠️ 1. Nền tảng công nghệ: Sự kết hợp của tốc độ và dữ liệu lớn
Papermark không sử dụng các phương pháp lưu trữ và truy vấn truyền thống cho phần phân tích, thay vào đó dự án chọn những công nghệ "nặng đô" nhất:
- Next.js (App & Pages Router): Tận dụng tối đa Server Components để tăng tốc độ render và SEO cho các trang tài liệu công khai.
- Big Data Engine (Tinybird/ClickHouse): Đây là "vũ khí bí mật". Mọi sự kiện (view, scroll, click) được đẩy vào Tinybird. Với lõi là ClickHouse, hệ thống có thể phân tích hàng triệu sự kiện mỗi giây để trả về báo cáo "người xem đã đọc trang 5 trong 2 phút" gần như tức thì.
- Background Jobs (Trigger.dev v3): Các tác vụ nặng như chuyển đổi PDF, tạo ảnh thumbnail, hoặc xử lý vector cho AI được tách biệt hoàn toàn khỏi luồng xử lý chính.
- Document Processing (MuPDF Wasm): Sử dụng WebAssembly để render PDF trực tiếp trên trình duyệt, đảm bảo tốc độ cực nhanh và khả năng tương tác (chú thích, đánh dấu) mượt mà.
🏗️ 2. Trụ cột kiến trúc: Open Core và Middleware-centric
Kiến trúc của Papermark tập trung vào khả năng kiểm soát truy cập và phân tách tính năng:
- Kiến trúc Core & EE: Dự án đi theo mô hình Open Core. Phần lõi (Core) xử lý việc chia sẻ cơ bản, trong khi các tính năng nâng cao (Enterprise) như ngăn chụp màn hình, quản lý tên miền tùy chỉnh được đóng gói trong các module riêng biệt (
/ee). - Middleware-centric Routing: File
middleware.tsđóng vai trò là "cửa ngõ" thông minh. Nó không chỉ làm nhiệm vụ Auth mà còn xử lý Custom Domains (ánh xạ tên miền riêng của người dùng vào tài liệu) và Bot Protection (ngăn chặn crawler thu thập dữ liệu trái phép). - Multi-tenancy (Teams): Mọi tài nguyên đều được quản lý theo
teamId, cho phép các tổ chức lớn chia sẻ chung kho tài liệu nhưng vẫn đảm bảo phân quyền chặt chẽ.
🔄 3. Workflow: Quy trình từ Upload đến Phân tích (Sequence Diagram)
Dưới đây là luồng hoạt động từ khi tài liệu được tải lên cho đến khi chủ sở hữu nhận được báo cáo hành vi người xem:

⚡ 4. Các kỹ thuật "Pro-level" trong mã nguồn
- Dynamic Watermarking: Papermark có khả năng chèn email hoặc địa chỉ IP của người xem vào từng trang tài liệu trong thời gian thực. Kỹ thuật này giúp ngăn chặn việc người xem chụp ảnh màn hình và phát tán tài liệu trái phép.
- PDF-to-Image Conversion: Để tăng cường bảo mật và tốc độ load, hệ thống có tùy chọn chuyển đổi PDF thành các lớp ảnh. Điều này ngăn chặn việc "Ctrl+C / Ctrl+V" nội dung văn bản một cách trực tiếp.
- Real-time Analytics Pipeline: Thay vì ghi log vào PostgreSQL (gây chậm DB), Papermark đẩy dữ liệu qua một pipeline bất đồng bộ vào Tinybird. Điều này đảm bảo dù có hàng vạn người đang xem tài liệu cùng lúc, Dashboard của bạn vẫn mượt mà.
- AI Insights: Tích hợp Vercel AI SDK để cho phép chủ sở hữu "hỏi" AI về nội dung tài liệu hoặc yêu cầu AI tóm tắt những điểm quan trọng nhất mà người xem thường xuyên bỏ qua.
⚖️ 5. So sánh chiến lược
| Tiêu chí | Papermark | DocSend (SaaS) | Google Drive / Dropbox |
|---|---|---|---|
| Quyền sở hữu dữ liệu | Tuyệt đối (Self-host) | Bị kiểm soát | Phụ thuộc Big Tech |
| Tracking chi tiết | Có (Tới từng giây/trang) | Có | Rất hạn chế |
| Bảo mật | OTP, Watermark, Domain | OTP, Password | Basic |
| Tùy chỉnh thương hiệu | Toàn quyền (Logo, CSS) | Theo gói giá | Không có |
✅ Kết luận: Papermark là hình mẫu lý tưởng về Data-driven App
Papermark không chỉ là một công cụ chia sẻ file; nó là một bài học về cách xây dựng ứng dụng dựa trên dữ liệu (Data-driven applications). Dự án chứng minh rằng việc kết hợp Next.js với một nền tảng phân tích thời gian thực như Tinybird có thể tạo ra những tính năng "vượt mặt" cả những giải pháp SaaS hàng đầu.
Đối với các kỹ sư, nghiên cứu Papermark sẽ giúp bạn học được:
- Cách xử lý WebAssembly để thao tác file nặng trên browser.
- Tư duy thiết kế Analytics Pipeline cho ứng dụng SaaS.
- Kỹ thuật xây dựng hệ thống Custom Domains quy mô lớn.
Hy vọng bản phân tích này mang lại cho bạn những góc nhìn mới về kiến trúc phần mềm hiện đại. Đừng quên Upvote và Follow để đón chờ những bài phân tích mã nguồn tiếp theo nhé!
All rights reserved