Kiến trúc
NoteFlare là một Cloudflare Worker phục vụ app React và một API JSON nhỏ, phía sau là database D1. Mã hoá, giải mã, lưu offline, đồng bộ và gộp đều diễn ra trong trình duyệt. Máy chủ chỉ lưu và trả lại những khối dữ liệu nó không đọc được.
Trình duyệt của bạn
App Reactservice worker lưu sẵn để dùng offline
Mã hoáArgon2id, AES-GCM. Khoá nằm ở đây
Bộ đồng bộhàng đợi, gộp ba chiều
IndexedDBciphertext + thay đổi chưa đồng bộ
ciphertext
qua HTTPS
qua HTTPS
Tài khoản Cloudflare của bạn
Cloudflare Accessđăng nhập, MFA, phiên
Worker (Hono API)kiểm tra JWT của Access, phục vụ app
Database D1chỉ ciphertext và khoá đã bọc
Cron triggerdọn thùng rác sau 30 ngày
Script, CLI và SDK đi cùng đường này qua /api/v1 bằng token truy cập cá nhân.
Công nghệ
Phần tiêu đề “Công nghệ”| Phần | Dùng gì |
|---|---|
| Runtime | Cloudflare Workers với Static Assets và một Cron Trigger |
| Database | Cloudflare D1 (SQLite) |
| Đăng nhập | Cloudflare Access, kiểm tra bằng jose |
| API | Hono |
| Giao diện | React 19, Tailwind CSS 4, shadcn/ui, lucide |
| Markdown | TanStack Markdown |
| Mã hoá | WebCrypto và hash-wasm (Argon2id) |
| Offline | Service worker cho phần vỏ app, IndexedDB qua idb cho ghi chú đã mã hoá và hàng đợi đồng bộ |
Vì sao dùng Cloudflare Access thay cho đăng nhập bằng mật khẩu
Phần tiêu đề “Vì sao dùng Cloudflare Access thay cho đăng nhập bằng mật khẩu”Access lo việc đăng nhập, MFA và phiên ngay tại edge của Cloudflare, miễn phí, nên app không có đoạn code đăng nhập nào để viết sai. Passphrase là một bí mật riêng, chỉ dùng để mã hoá.
Ghi chú kiến trúc đầy đủ trên GitHub (tiếng Anh)Sơ đồ repository, luồng request, bộ đồng bộ và schema database.