Skip to content
GardenCMS

Docs › Installation

Installation

Requirements

  • Python 3.13 or later
  • uv
  • Optionally PostgreSQL 14+ — SQLite works out of the box

Run it locally

git clone https://github.com/itsnisuxyz/garden-cms.git
cd garden-cms
uv sync
uv run piccolo migrations forwards db
ADMIN_PASSWORD=admin uv run litestar run --reload

That's it: with no DATABASE_URL set, Garden CMS uses a SQLite file at data/garden.db and keeps uploads and markdown under data/media/.

Open http://localhost:8000 for the site and http://localhost:8000/admin for the admin (sign in with the password, leaving the username blank).

What the first start does

An empty database is seeded with:

  • four themes — Mycelium Term (active), Mycelium, Sprig and Nightshade
  • the pages of this website, its content blocks, and a Blog collection with a couple of posts
  • default settings, with docs/ mounted at /docs

Empty storage is seeded with the markdown in data/md/ — these docs. After that, both are yours: edit them in the admin, and restarts never overwrite your changes.

Using PostgreSQL

createdb garden
export DATABASE_URL=postgresql://postgres:postgres@localhost:5432/garden
uv run piccolo migrations forwards db
uv run litestar run --reload

See Database for choosing between the two, and Configuration for every environment variable.

Signing in

Set ADMIN_PASSWORD to enable password sign-in, or configure OAuth for single sign-on.