Giao diện
api.conan1.com
Một Cloudflare Worker duy nhất, đứng trước Cloudflare D1, phục vụ mọi ứng dụng nội bộ của Conan. Frontend không bao giờ truy cập D1 trực tiếp.
Trình duyệt ──▶ Cloudflare Access ──▶ compass.conan1.com (Pages)
│ fetch(credentials: 'include')
▼
Cloudflare Access ──▶ api.conan1.com (Worker)
│
▼
D1: conan-compassCông nghệ
| Thành phần | Lựa chọn |
|---|---|
| Runtime | Cloudflare Workers |
| Router | Hono |
| Database | Cloudflare D1 (SQLite) |
| Truy vấn | SQL thuần với prepared statement |
| Xác thực | Cloudflare Access JWT |
Không dùng ORM. Schema nhỏ và ổn định, SQL thuần dễ đọc và dễ soi khi có sự cố hơn một lớp trừu tượng.
Quy ước
- Mọi endpoint nghiệp vụ nằm dưới
/v1/. /healthlà endpoint duy nhất không cần xác thực.- Lỗi trả về
{ "error": "..." }kèm mã HTTP đúng nghĩa. - Ghi dữ liệu luôn tạo một dòng trong
audit_log.
CORS
Biến ALLOWED_ORIGINS trong wrangler.jsonc liệt kê các origin được phép, phân tách bằng dấu phẩy. Request gửi kèm cookie nên origin phải khớp chính xác — không dùng *.