0

[Open Source] #210 - Readest: Hệ thống quản trị tri thức và đọc Ebook đa nền tảng với kiến trúc Tauri v2, Next.js 16 và cơ chế đồng bộ hóa Offline-First

Trong kỷ nguyên của các ứng dụng đọc sách bị kiểm soát bởi các nền tảng đóng, Readest xuất hiện như một "pháo đài" tự do cho những người yêu sách. Không chỉ dừng lại ở một trình xem tệp (Ebook Viewer), Readest là một hạ tầng quản trị tri thức toàn diện, cho phép người dùng đọc, ghi chú, tra cứu AI và đồng bộ hóa liền mạch giữa Desktop, Mobile và các thiết bị đọc sách chuyên dụng (Kindle/Kobo). Sự kết hợp giữa tính nhẹ nhàng của Rust và sự linh hoạt của React đã tạo ra một công cụ vừa mạnh mẽ về hiệu năng, vừa đẳng cấp về trải nghiệm người dùng.

Dưới góc độ kỹ thuật, Readest là một minh chứng xuất sắc về việc ứng dụng kiến trúc Tauri v2, kỹ thuật xử lý Native Bridge giữa Rust/JavaScript và tư duy thiết kế Adapter Pattern cho các dịch vụ AI/Cloud.

Github: https://github.com/readest/readest


🛠️ 1. Nền tảng công nghệ: Native-Web Hybrid thế hệ mới

Readest chọn một ngăn xếp công nghệ tiên phong để phá vỡ giới hạn về tài nguyên hệ thống:

  • Logic Core (Tauri v2 & Rust): Thay thế các framework nặng nề như Electron bằng Tauri v2. Readest sử dụng Rust để xử lý các tác vụ "hạng nặng" (File I/O, SQLite, trích xuất Metadata tệp tin nhị phân) và tận dụng WebView bản địa của hệ thống, giúp giảm 90% mức chiếm dụng RAM so với các đối thủ.
  • Frontend Engine (Next.js 16 & React 19): Mặc dù chạy dưới dạng ứng dụng local, Readest sử dụng Next.js theo cơ chế Static Site Generation (SSG) để đạt được tốc độ render UI cực đại, kết hợp với các tính năng mới nhất của React 19 để quản lý trạng thái phức tạp.
  • Ebook Rendering (foliate-js): Tích hợp engine xử lý ebook chuẩn mực, hỗ trợ hoàn hảo EPUB, MOBI và PDF với khả năng tùy biến dàn trang (reflowable) và xử lý phông chữ chuyên sâu.
  • Hybrid Storage (LibSQL & SQLite): Sử dụng LibSQL để hỗ trợ cơ chế lưu trữ cục bộ ổn định và khả năng mở rộng đồng bộ hóa đám mây (Cloud Sync) thông qua WASM.

🏗️ 2. Trụ cột kiến trúc: Monorepo và Offline-First

Kiến trúc của Readest được thiết kế để phục vụ người dùng trong mọi điều kiện mạng:

  • Modular Monorepo Structure: Sử dụng pnpm workspaces để tách biệt mã nguồn ứng dụng (apps/readest-app), thư viện lõi (packages/foliate-js) và các module mở rộng hệ thống (extensions/windows-thumbnail). Cách tiếp cận này cho phép dự án phát triển và kiểm thử từng phần một cách độc lập.
  • Offline-First Strategy: Readest coi máy local là "Single Source of Truth". Mọi dữ liệu sách, vị trí đọc và ghi chú đều được lưu trữ bền vững tại SQLite cục bộ. Quy trình đồng bộ hóa (Supabase/S3) chỉ diễn ra như một lớp phủ để đảm bảo tính nhất quán giữa các thiết bị.
  • Cross-platform Native Bridge: Tận dụng khả năng biên dịch của Tauri v2 để chuyển đổi cơ sở mã duy nhất sang các ứng dụng di động iOS (Swift)Android (Kotlin), mang lại hiệu suất mượt mà như ứng dụng bản địa (Native-like feeling).

🔄 3. Workflow: Vòng đời từ Tệp thô đến Tri thức đồng bộ (Sequence Diagram)

Sơ đồ mô tả quy trình hệ thống điều phối việc nhập sách và đồng bộ hóa vị trí đọc:

image.png


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

  1. Native Windows Thumbnail Provider: Một kỹ thuật cực khó: Readest tích hợp module Rust xử lý COM DLL để thay thế icon file EPUB bằng ảnh bìa sách thật ngay trong Windows Explorer, mang lại trải nghiệm hệ thống đồng nhất.
  2. Universal TTS & Translation Adapter: Hệ thống hỗ trợ đa dạng Provider (Edge TTS, Web Speech, DeepL, Google). Kỹ thuật Adapter Pattern cho phép Readest tự động chuyển đổi phương thức xử lý (ví dụ: dùng Native Android TTS khi trên di động và Web Speech API khi trên máy tính) một cách minh bạch.
  3. Safe Area Insets Orchestration: Xử lý tinh tế vấn đề giao diện trên các thiết bị có "tai thỏ" hoặc màn hình cong thông qua việc tính toán tọa độ an toàn cho UI, đảm bảo các thanh công cụ không bị che khuất trên iPhone/Android.
  4. KOReader Protocol Compatibility: Readest triển khai giao thức đồng bộ hóa tương thích với KOReader, cho phép người dùng đồng bộ tiến độ đọc với các máy đọc sách e-ink chuyên dụng như Kindle hay Kobo (đã jailbreak).

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

Tiêu chí Readest Calibre (Desktop) Kindle App (SaaS)
Công nghệ Rust + Next.js (Cực nhẹ) Python + Qt (Nặng) Đóng (Proprietary)
Trải nghiệm UI Hiện đại (Vibe di động) Cổ điển (Thập kỷ trước) Tốt nhưng bị khóa
Đồng bộ hóa Mở (S3/Supabase) Phụ thuộc Server ngoài Chỉ trong hệ sinh thái
Hỗ trợ AI Có (Local & Cloud) Qua Plugin lẻ Có (Cơ bản)
Quyền sở hữu Tuyệt đối (Local-first) Tuyệt đối Thấp

✅ Kết luận: Tại sao Readest là chuẩn mực cho ứng dụng đa nền tảng hiện đại?

Readest chứng minh rằng bạn có thể xây dựng một ứng dụng đa nền tảng không thỏa hiệp: Vừa đẹp như Web, vừa nhanh như Native, vừa riêng tư như một thư mục ổ cứng. Việc làm chủ sự phối hợp giữa Rust (hệ thống)React (giao diện) đã biến dự án này thành một bài mẫu (Boilerplate) lý tưởng cho bất kỳ ai muốn xây dựng ứng dụng Productivity cho tương lai.

Đối với các kỹ sư Frontend và Systems, nghiên cứu Readest mang lại giá trị về:

  • Kỹ thuật xây dựng Native Bridge hiệu quả với Tauri v2.
  • Cách triển khai kiến trúc Offline-First quy mô lớn.
  • Tư duy thiết kế Universal UI hỗ trợ cả Desktop và Mobile notches.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.