Công nghệ
Astro dựng trang, TinaCMS quản lý nội dung, React chỉ chạy trong admin. Không có database và không cần server riêng cho trang công khai.
Bảng tóm tắt
| Phần | Dùng | Ghi chú |
|---|---|---|
| Sinh trang | Astro 7 | Mọi trang được build sẵn thành HTML |
| Quản lý nội dung | TinaCMS | Bản đã chỉnh sửa, nằm trong vendor/ |
| Admin và khung xem trước | React 18 | Chỉ chạy trong admin; trang công khai không tải React |
| Ngôn ngữ | TypeScript | |
| Môi trường | Node.js 22 hoặc 24, pnpm | Không dùng npm hay yarn |
| Kiểm tra code | Biome | pnpm lint, pnpm format |
Trang tĩnh, admin có React
Lúc build, mỗi trang được dựng thành một file HTML. Trang công khai chỉ tải vài đoạn script nhỏ cho phần cần tương tác (menu, câu hỏi thường gặp, form), không tải React.
Mỗi trang còn có một bản /preview/… dùng cho admin: bản này chạy React trong trình duyệt, nên khi bạn gõ trong form, preview vẽ lại ngay mà không gọi server. Bản /preview/… có noindex, máy tìm kiếm không đưa vào kết quả.
Nội dung là file JSON
Mọi trang, menu, màu và cài đặt là file JSON trong content/. Admin đọc và ghi đúng các file đó. Vì nội dung nằm trong Git, mỗi lần sửa là một commit: xem lại được lịch sử và quay về bản cũ được.
Kiểm tra code
pnpm test # test của các phần dùng chung
pnpm check # kiểm tra kiểu TypeScript
pnpm contrast # độ tương phản của mọi bộ màu
pnpm lint # BiomeSau mỗi lần build còn có bốn lệnh kiểm tra bản build: pnpm zero-js (không trang công khai nào tải React), pnpm nul-bytes, pnpm preview-parity (bản /preview/… vẽ đúng HTML của trang công khai) và pnpm seo-check.