A minimal app framework for content sites 🎵
📖 Complete documentation at https://coltrane.readthedocs.io.
📦 Package located at https://pypi.org/project/coltrane/.
- Render
markdown
files as HTML with automatic URL routing based on the filesystem - Use JSON files as data sources in HTML templates or
markdown
- Automatic generation of
sitemap.xml
andrss.xml
files - Can serve non-markdown files like
robots.txt
- Local development server which includes live re-rendering of markdown and data via https://github.com/adamchainz/django-browser-reload
- Site-wide redirects
- Deployment best practices with
whitenoise
andgunicorn
already configured - Leverage the power of built-in
Django
templates, template tags, and filters insidemarkdown
files - Any custom template tags and filters are enabled automatically for use in
markdown
or HTML templates - Include any third-party
Django
app for additional functionality - Optional command to generate static HTML files
- Can be integrated into a regular
Django
project as a standard third-partyDjango
app to render markdown content
mkdir new-site && cd new-site
to create a new folderpython3 -m venv .venv && source .venv/bin/activate && pip install coltrane
to install thecoltrane
packagecoltrane create
to create the folder structure for a new sitecoltrane play
to start local development server- Go to http://localhost:8000 to see the original markdown rendered into HTML
- Update
content/index.md
- Refresh http://localhost:8000 to see the updated markdown rendered into HTML
- Optional: run
coltrane record
to build static HTML files
.
├── .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 themarkdown
incontent/index.md
/about/
would render themarkdown
incontent/about.md
/articles/this-is-the-first-article/
would render the content from/content/articles/this-is-the-first-article.md
/not-there/
will 404
HTML 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):
Tobi DEGNON |
This project follows the all-contributors specification. Contributions of any kind welcome!