A digital garden CMS built with Flask
Project description
Trellis
A Flask-based digital garden and hierarchical content management system.
Overview
Trellis is a flexible CMS for building digital gardens with hierarchical content organization. It supports both traditional flat markdown files and nested .page directories, allowing you to organize complex projects with multiple pages while keeping related assets together.
Features
- 📁 Hierarchical Content Structure - Organize content in nested
.pagedirectories with unlimited depth - 📝 Markdown-Based - Write content in markdown with YAML frontmatter
- 🔍 Full-Text Search - Powered by Whoosh with error-tolerant query parsing
- 🔗 Include System - Reference other files using
{{include: filename}}syntax - 🖼️ Page-Specific Assets - Store images and files alongside your content
- 🔐 User Authentication - Role-based access control (admin/editor)
- ✏️ Built-in Editor - Web-based interface for editing content
- 🌿 Git Integration - Automatic commits for content changes
- 🎨 Digital Gardens - Content organized into themed "gardens"
- 🔄 Backwards Compatible - Works with both flat
.mdfiles and.pagedirectories
Quick Start
See QUICKSTART.md for detailed instructions on creating a new site.
TL;DR:
# Install Trellis
git clone https://github.com/almargolis/trellis.git
pip install -e ./trellis
# Set up your site (see QUICKSTART.md for details)
trellis-init-db
trellis-search --rebuild # Initialize search index
python run.py
Content Structure
Traditional Flat Files
content/
garden-name/
article.md
another-article.md
Hierarchical Pages
content/
projects/
my-project.page/
page.md # Main content
screenshot.png # Page asset
code.py # Include file
setup.page/ # Nested sub-page
page.md
URL mapping:
content/projects/article.md→/garden/projects/articlecontent/projects/project.page/page.md→/garden/projects/projectcontent/projects/project.page/setup.page/page.md→/garden/projects/project/setup
Documentation
- CLAUDE.md - Developer guide and architecture overview
- HIERARCHICAL_CONTENT.md - Detailed guide to hierarchical content structure
- DEPLOYMENT.md - Production deployment instructions
Project Name
Trellis - A trellis is a garden structure that supports growth, perfectly representing this system's hierarchical framework for organizing and growing your digital content.
Technology Stack
- Flask - Web framework
- SQLAlchemy - Database ORM
- Markdown - Content format with Python-Markdown extensions
- Whoosh - Full-text search engine
- GitPython - Git integration
- Flask-Login - Authentication
License
MIT License - see LICENSE for details.
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file trellis_cms-0.2.2.dev0.tar.gz.
File metadata
- Download URL: trellis_cms-0.2.2.dev0.tar.gz
- Upload date:
- Size: 43.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45f1f982048e49b0fb3f5e77c56804cb14b91b559fb4e309747f3e4aa9f1ae45
|
|
| MD5 |
1905757cbc2aea888433469063692ac7
|
|
| BLAKE2b-256 |
3ab54914394156b664ed8bf0881f6cbb2e818b19501fa49ec157c0fdbe713b03
|
File details
Details for the file trellis_cms-0.2.2.dev0-py3-none-any.whl.
File metadata
- Download URL: trellis_cms-0.2.2.dev0-py3-none-any.whl
- Upload date:
- Size: 44.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
031f41dfa80e4f507a98f10132260ffe9d9f9165bfcbd3ac7218b6e4eef57346
|
|
| MD5 |
fefd49443060c8240b0fa11d203057f1
|
|
| BLAKE2b-256 |
7577f68c0f555bf97786c6cbc2951d3b1baffb84bfa0f583a54ecf18f5ea5e5a
|