Skip to content

Deployment

GitHub Actions (automation)

This repo ships two workflows:

  • Scheduled sync/export: runs 3x/day and publishes the snapshot as an artifact.
  • CI tests: runs on push/PR.

Required secrets in the GitHub repository:

  • NOTION_TOKEN
  • NOTION_PARENT_PAGE_ID
  • GITHUB_TOKEN
  • SYNC_WINDOW_DAYS (optional; defaults to 90)

Outputs:

  • Workflow artifacts include output/observable/snapshot.json and snapshot.csv.
  • The workflow also publishes dashboard data files to DOCS/public/dashboard/data/ for web hosting.

Observable refresh

The Observable dashboard is intentionally manual-refresh:

  • Download the artifact from the workflow run (or export locally).
  • Replace the snapshot.json FileAttachment in your private Observable notebook.

React dashboard app (same Cloudflare Pages site)

  • Source app: apps/dashboard/ (Vite + React).
  • Hosted path: /dashboard/ on the same site that serves docs.
  • Build pipeline:
    • docs-site build runs apps/dashboard build first.
    • Built dashboard assets are copied into DOCS/public/dashboard/.
    • VitePress then builds docs to DOCS/.vitepress/dist.
  • Data path at runtime: /dashboard/data/snapshot.json.
  • Snapshot data is refreshed by scripts/publish_dashboard_data.py in sync_export.yml.

Docs site (VitePress)

Docs are built from DOCS/ using the wrapper in docs-site/. Cloudflare Pages build:

  • Build command: npm --prefix docs-site run build
  • Output directory: DOCS/.vitepress/dist