Local Web Readiness

Local web development starts from the repository’s package scripts. The documented prerequisites are Node.js >=22.13.0, npm, and a Linux-compatible shell; package.json declares the same Node.js minimum, and .nvmrc contains 22.13.0.

From the repository root, follow the README’s order:

  1. Install dependencies with npm ci.
  2. Start local development with npm run dev. The dev script sets WRANGLER_LOG_PATH=.wrangler/wrangler.log and invokes vite.

Working directory and runtime paths

The dev script is declared directly in package.json; it does not route through scripts/sites-env.sh. By contrast, lint, lint:baseline, and db:generate are declared to invoke that wrapper. The wrapper derives the project root from its own location, changes to that directory, and forwards the command.

For commands that use the wrapper, SITES_RUNTIME_ROOT selects the runtime directory; if unset, it defaults to <project root>/.sites-runtime. The wrapper sets HOME to <runtime root>/home and npm’s cache to <runtime root>/npm-cache. Separately, .npmrc declares .sites-runtime/npm-cache as the cache path.

The install:ci package script maps to scripts/install-ci.sh, whose expected HOME and npm cache paths are based on ${SITES_PROJECT_ROOT}/.sites-runtime. If using this helper with a custom SITES_RUNTIME_ROOT, check that the effective HOME and cache match the helper’s expected paths.

[!NOTE] .dev.vars.example is a template that instructs you to copy it to the gitignored .dev.vars; it does not establish that your local file exists. Before relying on voice chat, check .dev.vars and configure the server-only GEMINI_API_KEY, which the environment guide marks as required for that feature. IS_CHILD_APP is declared from VITE_MOGO_CHILD_APP === '1', but that declaration does not establish a consuming entrypoint or separate child-app build; check the relevant entrypoint or build selection before relying on one.