make. The pre-push gate make local-verification can also run natively on the host — see Local verification.
Start / stop
Stripe
Database
Operational one-offs (catalog backfills, reconciliation) have no Make target — run via compose +
ts-node locally. See Operational Scripts.
Dependencies & build
Decision tree:
git pull / edited package.json / stale deps → make deps-install. Still broken → make deps-fix. Image rebuild → make fresh-start.
Deprecated aliases (pnpm-install, pnpm-install-repair, pnpm-lockfile-update) still work and print a notice.
Codegen & quality
Use
make local-verification as a pre-push gate. Prefer Local verification for backend selection, native prerequisites, and CI relationship. If it passes locally, CI is far more likely to pass on the first run.
Dev proxy Caddyfile
These targets run on the host (they usedocker run for Caddy validation, or curl to localhost:8888). They do not replace make test; they guard the unified dev URL routing only.
CI: The integration workflow job dev-proxy-verify runs
validate-dev-proxy on every pull request. The routing smoke is local-only unless you add a Compose-based CI profile.
If backend tests run out of memory locally, increase the heap for a run:
Deploy (Railway)
For the full list, run:
Lockfile policy
pnpm-lock.yaml is generated artifact state, not hand-authored code.
- Never hand-edit
pnpm-lock.yaml. - After merge conflicts in
pnpm-lock.yaml, resolve the conflict markers, then runmake pnpm-lockfile-repairto regenerate a valid lockfile. - Before pushing or running
make fresh-start, runmake pnpm-lockfile-frozen-checkto fail fast on lockfile integrity problems. - Commit the regenerated
pnpm-lock.yamlin the same PR as dependency changes.
What’s next?
- Local verification — compose vs native
make local-verification. - Configuration system —
APP_URL, env vars, dev-proxy routing, and tool swapping. - Architecture overview — the full system map and how each layer connects.
- Tooling system — how the tools object is constructed and how loaders work.
- Tooling — provider-specific setup for logger, queue, mailer, metrics, and more.
- Updating Refract — pull upstream improvements into your project.
