Skip to content

Quickstart

This walks you through running Marrow on your machine for development. For production deployment, see Docker Compose or Cloudflare.

  • Python 3.11+
  • Node.js 20+
  • Docker (for the local PostgreSQL container)
Terminal window
git clone https://github.com/spmcgraw/marrow.git
cd marrow
Terminal window
docker compose up -d

This brings up PostgreSQL 16 on port 5433 (so it doesn’t collide with a local Postgres on 5432).

Terminal window
cd api
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env
alembic upgrade head
uvicorn main:app --reload

The API runs at http://localhost:8000.

In a second terminal:

Terminal window
cd web
npm install
cp .env.local.example .env.local
npm run dev

The frontend runs at http://localhost:3000.

  • 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.zip and inspect the bundle. Then marrow restore ./out.zip into a fresh database to confirm the round-trip.

The default dev setup runs without authentication. To turn on auth, see: