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.