Development setup
Two approaches: local mixed stack (./rh dev …) for day-to-day work, or all-in-one Docker (./rh start) for a full environment without local service wiring.
Prerequisites
- Git
- Docker (for
./rh dev up,./rh start, and related commands) - uv — Python tooling at the repo root and under
apps/backend - Node.js 18+ and npm — frontend and docs dev servers
Optional: pyenv to pin Python 3.10+ if your machine needs it.
Default ports
| What | Port |
|---|---|
| Backend API / OpenAPI | 8080 |
| Frontend / Next.js | 3000 |
| Documentation site | 3001 |
Dev PostgreSQL (./rh dev up) | 11000 |
Dev Redis (./rh dev up) | 11001 |
Clone the repo
Path 1: Local dev (recommended)
From the repo root:
- App: http://localhost:3000
- API docs: http://localhost:8080/docs
./rh dev init writes apps/backend/.env and apps/frontend/.env.local for local infrastructure. If those files already exist and were not created by init, the script may prompt before overwriting.
Run ./rh help or ./rh dev for the full command list (./rh dev worker, ./rh dev docs, ./rh dev status, etc.).
Path 2: Full stack with Docker
Typical URLs: frontend http://localhost:3000 , API http://localhost:8080/docs . Use ./rh logs, ./rh stop, ./rh restart, and ./rh delete to manage the stack.
This mode is aimed at local testing (including convenient sign-in behavior). For production-style deployment, see the deployment documentation on this site.
Backend-only workflows
For database access, environment configuration, make targets, and advanced setups (including cloud database proxies when your team uses them), see the Backend section — especially Development workflow and Environment config.
From apps/backend, common entrypoints are ./start.sh, or from the repo root ./rh dev backend, or running uvicorn directly once the venv is active.
Documentation site locally
This runs docs/src/start.sh (default port 3001).
Quick checks
Branching, commits, and checks
- Use feature branches and Conventional Commits
uvx pre-commit installbefore your first commit- Run
make format,make lint, andmake testfromapps/backend/,sdk/, orapps/frontend/as appropriate for your change
Troubleshooting
./rh dev upfails: ensure Docker is running; confirm nothing else is bound to the dev Postgres/Redis ports in the table above- Backend database errors: run
./rh dev upafter./rh dev init; for non-local database setups, see Environment config - Stale Python env: from
apps/backend, runuv syncagain and useapps/backend/.venv
Still stuck? Ask on Discord .