A minimal app framework for content sites.
MIT License
📖 Complete documentation at https://coltrane.readthedocs.io.
📦 Package located at https://pypi.org/project/coltrane/.
markdown
files as HTML with automatic URL routing based on the filesystemmarkdown
sitemap.xml
and rss.xml
filesrobots.txt
whitenoise
and gunicorn
already configuredDjango
templates, template tags, and filters inside markdown
filesmarkdown
or HTML templatesDjango
app for additional functionalityDjango
project as a standard third-party Django
app to render markdown contentmkdir new-site && cd new-site
to create a new folderpython3 -m venv .venv && source .venv/bin/activate && pip install coltrane
to install the coltrane
packagecoltrane create
to create the folder structure for a new sitecoltrane play
to start local development servercontent/index.md
coltrane record
to build static HTML filescoltrane
file structure.
├── .gitignore
├── Dockerfile
├── README.md
├── pyproject.toml
└── site
├── .env
├── .watchmanconfig
├── __init__.py
├── app.py
├── content
│ └── index.md
├── data
├── gunicorn.conf.py
├── static
└── templates
Add markdown
files or sub-directories to the content
directory and rendered HTML will be accessible via auto-generated routes.
/
would render the markdown
in content/index.md
/about/
would render the markdown
in content/about.md
/articles/this-is-the-first-article/
would render the content from /content/articles/this-is-the-first-article.md
/not-there/
will 404HTML will also be served automatically if a markdown
file can not be found.
/app/
would render the HTML from /templates/app.html
or /templates/app/index.html
/app/some-user
would render the HTML from /templates/app/*.html
Example Dockerfile
and gunicorn.conf.py
files are created when an app is created, and optional dependencies can be installed for efficient static
serving with whitenoise
.
Read all of the documentation at https://coltrane.readthedocs.io.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!