Skip to content

Deploy ​

Hai project Cloudflare Pages từ cùng một repo GitHub.

ProjectRoot directoryBuild commandOutputDomain gợi ý
nemo-planner/(không build)publicplanner…
docs-nemoplanner/npm run docs:builddocs/.vitepress/distdocs.nemoplanner…

1 · Tạo D1 và nạp dữ liệu ​

bash
npm install
npx wrangler login
npm run db:create                 # copy database_id vào wrangler.toml
npm run db:schema:remote
npm run db:seed:remote            # chỉ chạy một lần, vì nó xoá dữ liệu cũ

2 · Planner (Pages + Functions) ​

  1. Đẩy repo lên GitHub.
  2. Cloudflare Dashboard → Workers & Pages → Create → Pages → Connect to Git.
  3. Build output directory: public. Bỏ trống build command.
  4. Settings → Functions → D1 database bindings: biến DB → database nemo-planner.

3 · Docs ​

Tạo project thứ hai cùng repo, build command npm run docs:build, output docs/.vitepress/dist.

Planner cho phép ghi dữ liệu, nên chỉ mentor được vào. Dùng Cloudflare Access (Zero Trust → Access → Applications → Self-hosted), thêm chính sách Allow theo email mentor, áp dụng cho cả planner và docs. Không cần viết code đăng nhập.

5 · Tự động đồng bộ D1 → git ​

Workflow sync-seed.yml cần 3 secret trong GitHub (Settings → Secrets → Actions):

SecretGiá trị
PLANNER_URLURL của Planner, vd https://nemo-planner.pages.dev
CF_ACCESS_CLIENT_IDTừ service token
CF_ACCESS_CLIENT_SECRETTừ service token

Tạo service token: Zero Trust → Access → Service Auth → Create Service Token. Rồi thêm vào policy của application Planner một rule Service Auth (action Service Auth, include Service Token vừa tạo). Nếu bỏ qua, Action sẽ bị Access chặn và báo lỗi, không ghi gì vào repo.

Chạy local ​

bash
npm run db:schema:local && npm run db:seed:local
npm run dev        # Planner tại http://localhost:8788
npm run docs:dev   # Docs

Tài liệu nội bộ dành cho mentor Nemo12.