Local Development

Each project runs independently from its own repo. This page covers running them together and the gotchas that only show up when more than one service is up.

Default ports

Service Command (in its repo) Port
Website npm run watch:dev (or make dev) 3000
Platform npm run dev (wrangler dev) 8787
AI npm run dev (wrangler dev) 8787 (clashes with Platform)
App make run-local (Docker: Django + Postgres + Redis + Celery) 8000
Blog / CMS ./start.sh (Lando; pulls the Pantheon DB via Terminus) swapps.lndo.site

Platform and AI both default to 8787

Run one of them on a different port (e.g. wrangler dev --port 8788) if you need both simultaneously.

Wiring the Website to a local Platform

For the Website to talk to a local Platform worker, its dev environment points API_URL to http://localhost:8787 (see the Website's wrangler.toml). The Service Binding (API_WORKER) is a production/preview construct; locally the Website falls back to API_URL over HTTP.

Workspace meta-repo and skills

platform/ is a meta-repo: each app/tool is an independent git repo cloned into a sibling folder (all gitignored from platform). The meta-repo also ships Claude Code skills (.claude/skills/) that automate cross-repo work — cloning and syncing all repos, routing a request to the right sub-repo, the ClickUp task flow, bringing up the local stack, Cloudflare deploys, and more. See the repo's SKILLS.md for the catalog.

Cloning / syncing all repos

Use the sync-repos skill (or its documented mapping) to clone any missing sub-repos and fast-forward the ones already present without discarding local work.