Cloudflare Pages hiển thị app. Supabase lưu tài khoản và sổ nợ/thu chi. Bạn cấu hình một lần rồi tải index.html đã cấu hình để dùng trên các thiết bị.
1. Tạo Supabase và bảng dữ liệu
- Vào Supabase, tạo project, chờ project sẵn sàng.
- Mở SQL Editor → New query. Sao chép SQL dưới đây, dán và bấm Run. SQL bật phân quyền: mỗi người chỉ đọc/sửa sổ của chính mình.
2. Nhập thông tin kết nối
Trong project Supabase, mở Connect hoặc Settings để lấy Project URL; phần API Keys có Publishable key (sb_publishable_…) hoặc anon key cũ. Chỉ dùng khóa công khai, không dùng secret/service_role.
3. Tải và đưa một file lên Cloudflare
Bấm nút dưới để tải bản HTML đã chứa URL/khóa công khai. Trong Cloudflare: Workers & Pages → Create application → Pages → Direct Upload / Upload assets. Đặt index.html trong một thư mục, tải thư mục đó lên rồi Deploy.
Không cần worker.js, D1 hay file CSS/JS riêng. Khóa công khai trong HTML là bình thường; chính sách RLS trong SQL bảo vệ dữ liệu từng tài khoản.
4. Email đăng nhập và cách dùng
Sau khi có link Pages, trong Supabase Authentication → URL Configuration, đặt Site URL là link app; thêm cùng link vào Redirect URLs. Tạo tài khoản bằng email và mật khẩu ít nhất 10 ký tự. Nếu Supabase yêu cầu xác nhận email, mở email rồi quay lại đăng nhập. Không cần mã tạo tài khoản của bản Worker.
Sổ Nợ có cộng/trừ nợ, ghi chú, ảnh và thời gian chỉnh tay. Thu chi có lịch tháng, danh mục, nguồn tiền, tổng tháng và CSV. Khoản mới lên đầu danh sách sau khi lưu; mở thiết bị khác đăng nhập cùng email để xem. Có thể nhập JSON của bản cũ trong mục Sao lưu.
Dữ liệu sổ mã hóa AES-GCM trước khi gửi. Trình duyệt chỉ giữ URL/khóa công khai để tiện cấu hình; không lưu sổ hay mật khẩu vào localStorage. Phiên/khóa chỉ nằm trong bộ nhớ. Mất mạng chưa thể lưu; cần giữ biểu mẫu và kiểm tra Đồng bộ trước khi nhập lại.
Chưa có đổi/quên mật khẩu trong app. Đổi mật khẩu trực tiếp trong Supabase có thể khiến sổ cũ không giải mã được; hãy có bản sao và mật khẩu cũ để nhập lại. Giới hạn sổ mã hóa: 8 MB/tài khoản. CSV không mã hóa, JSON sao lưu có mã hóa. Gói miễn phí và hạn mức do Cloudflare/Supabase quyết định.
Bản này cần cấu hình dịch vụ online trước khi dùng. Mã đã được kiểm tra cục bộ; cần kiểm tra tạo tài khoản, lưu và đăng nhập thiết bị khác trên project thực tế của bạn.