Host Node is only needed for local development (Vite dev server, running the API outside Docker, installing CLIs).
UI dev/build requires Node 22 (or Node 20.19+). On Ubuntu 24.04, an easy install path is NodeSource:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
node -v
npm -vcd api
npm install
npm run devcd ui
npm install
npm run devRun nginx + Vite (HMR) + API (watch) + MySQL:
bash ./scripts/dev-upStop it:
bash ./scripts/dev-downBoth API and UI have ESLint configured. CI enforces lint checks on all PRs.
cd api
npm run lint # Check for issues
npm run lint:fix # Auto-fix issuescd ui
npm run lint # Check for issues
npm run lint:fix # Auto-fix issues
npm run typecheck # TypeScript type checkingA shared Prettier config (.prettierrc) is used across the project:
- Single quotes
- Semicolons
- 2-space indent
- 120 character line width
Notes:
- The Vite dev server is a different origin by default (
http://localhost:5173), so setCORS_ORIGIN=http://localhost:5173in.envif you want the browser to call the API directly during UI dev. - Production UI is shipped via the nginx image; see
docs/OPERATIONS.mdfor deployment.
# Claude Code
curl -fsSL https://claude.ai/install.sh | bash
# Codex CLI
npm i -g @openai/codex