Metadata-Version: 2.4
Name: trellis-cms
Version: 0.2.2.dev0
Summary: A digital garden CMS built with Flask
License: MIT
Project-URL: Homepage, https://github.com/almargolis/trellis
Project-URL: Documentation, https://github.com/almargolis/trellis#readme
Project-URL: Repository, https://github.com/almargolis/trellis
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: Flask
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Flask>=3.0.0
Requires-Dist: Flask-Login>=0.6.3
Requires-Dist: Flask-SQLAlchemy>=3.1.1
Requires-Dist: Markdown>=3.5.1
Requires-Dist: Pygments>=2.17.2
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: PyYAML>=6.0.1
Requires-Dist: GitPython>=3.1.40
Requires-Dist: python-frontmatter>=1.1.0
Requires-Dist: Werkzeug>=3.0.0
Requires-Dist: Whoosh>=2.7.4
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Dynamic: license-file

# 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 `.page` directories 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 `.md` files and `.page` directories

## Quick Start

See [QUICKSTART.md](QUICKSTART.md) for detailed instructions on creating a new site.

**TL;DR:**
```bash
# 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/article`
- `content/projects/project.page/page.md` → `/garden/projects/project`
- `content/projects/project.page/setup.page/page.md` → `/garden/projects/project/setup`

## Documentation

- **[CLAUDE.md](CLAUDE.md)** - Developer guide and architecture overview
- **[HIERARCHICAL_CONTENT.md](HIERARCHICAL_CONTENT.md)** - Detailed guide to hierarchical content structure
- **[DEPLOYMENT.md](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](LICENSE) for details.

## Contributing

Contributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
