Running locally
Every dev server, the command that starts it, and the port it listens on.
Everything at once
yarn dev
This installs dependencies, sets up the backend on a first run, and starts the backend, web app, marketing site, blog, and docs in one terminal. Ctrl+C stops them all. The desktop app needs Rust, so it has its own command.
Dev servers
Each one also starts on its own:
| Command | Serves | Port |
|---|---|---|
yarn backend:dev | Backend, Postgres, RustFS, and Mailpit in Docker | 3000 |
yarn web-static:dev | Marketing site | 3001 |
yarn workspace blog dev | Blog | 3002 |
yarn web-app:dev | The auth-gated app | 3003 |
yarn docs:dev | This site | 3004 |
yarn email-templates:dev | Email template previews | 3010 |
yarn storybook:dev | Storybook for shared-ui | 6006 |
yarn backend:dev waits for Postgres, applies pending migrations, then starts the server with hot reload.
Local services
| Service | URL | What it's for |
|---|---|---|
| Mailpit | localhost:8025 | Every email the backend sends |
| RustFS console | localhost:9001 | Browse the local S3 buckets |
| Postgres | localhost:5432 | Connect with any SQL client |
Check the backend
curl http://localhost:3000/health
curl http://localhost:3000/trpc/health.ping
Chatbot
The home page chatbot uses a local model through Ollama, installed on your machine rather than in Docker — Docker on macOS has no GPU access.
brew install ollama
brew services start ollama
ollama pull qwen2.5:7b
Desktop
yarn desktop:dev
This opens the app in a native window, with its Vite server on port 1420. For styling work without a Rust rebuild, run yarn workspace desktop dev.