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.