Quickstart
This walks you through running Marrow on your machine for development. For production deployment, see Docker Compose or Cloudflare.
Prerequisites
Section titled “Prerequisites”- Python 3.11+
- Node.js 20+
- Docker (for the local PostgreSQL container)
1. Clone the repo
Section titled “1. Clone the repo”git clone https://github.com/spmcgraw/marrow.gitcd marrow2. Start PostgreSQL
Section titled “2. Start PostgreSQL”docker compose up -dThis brings up PostgreSQL 16 on port 5433 (so it doesn’t collide with a local Postgres on 5432).
3. Backend setup
Section titled “3. Backend setup”cd apipython -m venv .venv && source .venv/bin/activatepip install -e ".[dev]"cp .env.example .envalembic upgrade headuvicorn main:app --reloadThe API runs at http://localhost:8000.
4. Frontend setup
Section titled “4. Frontend setup”In a second terminal:
cd webnpm installcp .env.local.example .env.localnpm run devThe frontend runs at http://localhost:3000.
5. Try it
Section titled “5. Try it”- Open
http://localhost:3000. - Create a workspace, then a space, then add folders and pages inside that space.
- Type into the editor — it auto-saves after 2 seconds and creates a revision on every save.
- Hover over a folder in the sidebar to create child folders and pages via the
+buttons. - Try
cd api && marrow export --workspace <slug> --output ./out.zipand inspect the bundle. Thenmarrow restore ./out.zipinto a fresh database to confirm the round-trip.
Configuration
Section titled “Configuration”The default dev setup runs without authentication. To turn on auth, see:
- Environment variables — full reference.
- OIDC — sign-in via Google, Keycloak, etc.