A pnpm monorepo with a Rehoboam-style React UI, a Cloudflare Worker API, and a scheduled Cloudflare Worker jobs service.
- Explore a timeline of major world events with Rehoboam-style animation.
- Inspect active signals through synchronized callouts.
- React 19
- Vite 7
- TypeScript 5
- ESLint 9
- Prettier 3
- Vitest 4
- pnpm 10
- Node.js
24.12.0(see.nvmrc) - pnpm
10+
pnpm install
pnpm devpnpm dev runs all workspaces in parallel:
- Web UI:
http://localhost:3000 - API Worker:
http://localhost:3001 - Events endpoint:
http://localhost:3001/api/events - Jobs Worker (scheduled):
http://localhost:3002 - Scheduled test trigger:
http://localhost:3002/__scheduled?cron=0+*/6+*+*+*
In local web development, Vite proxies /api/* requests from apps/ui to the
API worker on port 3001.
pnpm build
pnpm --filter rehoboam-ui previewOptional bundle analysis (starts the analyzer server and does not exit on its own):
pnpm --filter rehoboam-ui bundle:analyzepnpm typecheck
pnpm lint
pnpm format:check
pnpm testUse the local screenshot tool for fast UI iteration snapshots:
pnpm --filter rehoboam-ui screenshot:sceneDefault outputs:
- full page:
apps/ui/.tmp/screenshots/current-codex-auto.png - scene element:
apps/ui/.tmp/screenshots/current-codex-auto.instrument.png
Useful options:
pnpm --filter rehoboam-ui screenshot:scene --output .tmp/screenshots/current-codex-auto.png
pnpm --filter rehoboam-ui screenshot:scene --width 1365 --height 1024 --settle-ms 250
pnpm --filter rehoboam-ui screenshot:scene --base-url http://127.0.0.1:3000
pnpm --filter rehoboam-ui screenshot:scene:headedEquivalent environment variables:
SCREENSHOT_OUTPUT_BASESCREENSHOT_VIEWPORT_WIDTHSCREENSHOT_VIEWPORT_HEIGHTSCREENSHOT_SETTLE_MSSCREENSHOT_BASE_URLSCREENSHOT_HEADLESS
The command starts a dedicated web screenshot server on port 3000 and an API
worker on port 3001 by default, waits for .rehoboam-scene__instrument to
be visible, and then applies a short settle delay before capturing.
pnpm outdated -rpnpm up --latest -r package another-package
pnpm dev- rundevin all workspaces (web+api+jobs) in parallelpnpm build- build all workspacespnpm typecheck- run TypeScript checks in all workspacespnpm lint- run ESLint in all workspacespnpm format- auto-format files with Prettierpnpm format:check- verify formattingpnpm test- run tests in all workspacespnpm --filter rehoboam-ui dev- run only the web dev server (http://localhost:3000)pnpm --filter rehoboam-api dev- run only the API worker (http://localhost:3001)pnpm --filter rehoboam-jobs dev- run only the jobs worker with scheduled testing (http://localhost:3002)pnpm --filter rehoboam-ui preview- preview the web production buildpnpm --filter rehoboam-ui bundle:analyze- launchvite-bundle-analyzerfor the UI buildpnpm --filter rehoboam-ui screenshot:scene- capture deterministic full + scene screenshotspnpm --filter rehoboam-ui screenshot:scene:headed- run screenshot capture with headed browser
Two GitHub Actions workflows validate every code change:
.github/workflows/feature.yml: runs on pull requests tomain.github/workflows/main.yml: runs on pushes tomain
Both workflows run:
- typecheck
- lint
format:check- test
On pushes to main, .github/workflows/main.yml also applies Jobs D1 migrations
before deploying the API and Jobs workers.
Manual operations workflow:
.github/workflows/migrations.yml: manually applies Jobs D1 migrations to production for retries/backfills (workflow_dispatch, environment-gated)
