{"id":16417534,"url":"https://github.com/adamghill/coltrane","last_synced_at":"2025-04-08T03:19:37.032Z","repository":{"id":43940700,"uuid":"443630775","full_name":"adamghill/coltrane","owner":"adamghill","description":"A minimal app framework for content sites.","archived":false,"fork":false,"pushed_at":"2024-09-26T01:26:42.000Z","size":1169,"stargazers_count":91,"open_issues_count":12,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-10-15T02:05:45.126Z","etag":null,"topics":["django","markdown","python","static-site-generator"],"latest_commit_sha":null,"homepage":"https://coltrane.readthedocs.io/en/stable/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adamghill.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-01T21:53:40.000Z","updated_at":"2024-09-22T01:48:52.000Z","dependencies_parsed_at":"2023-12-08T05:23:58.752Z","dependency_job_id":"7d8d6eb2-74dd-4c13-8397-964108f54207","html_url":"https://github.com/adamghill/coltrane","commit_stats":{"total_commits":189,"total_committers":5,"mean_commits":37.8,"dds":"0.042328042328042326","last_synced_commit":"93cd9bf6108e5955950c01abad6812c95c1761a3"},"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamghill%2Fcoltrane","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamghill%2Fcoltrane/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamghill%2Fcoltrane/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamghill%2Fcoltrane/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adamghill","download_url":"https://codeload.github.com/adamghill/coltrane/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247187566,"owners_count":20898333,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["django","markdown","python","static-site-generator"],"created_at":"2024-10-11T07:11:33.875Z","updated_at":"2025-04-08T03:19:37.017Z","avatar_url":"https://github.com/adamghill.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://coltrane.readthedocs.io\"\u003e\u003ch1 align=\"center\"\u003ecoltrane\u003c/h1\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003eA minimal app framework for content sites 🎵\u003c/p\u003e\n\n![PyPI](https://img.shields.io/pypi/v/coltrane?color=blue\u0026style=flat-square)\n![PyPI - Downloads](https://img.shields.io/pypi/dm/coltrane?color=blue\u0026style=flat-square)\n![GitHub Sponsors](https://img.shields.io/github/sponsors/adamghill?color=blue\u0026style=flat-square)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\n📖 Complete documentation at https://coltrane.readthedocs.io.\n\n📦 Package located at https://pypi.org/project/coltrane/.\n\n## ⭐ Features\n\n- Render `markdown` files as HTML with automatic URL routing based on the filesystem\n- Use JSON files as data sources in HTML templates or `markdown`\n- Automatic generation of `sitemap.xml` and `rss.xml` files\n- Can serve non-markdown files like `robots.txt`\n- Local development server which includes [live re-rendering of markdown and data](https://twitter.com/adamghill/status/1487522925393715205) via https://github.com/adamchainz/django-browser-reload\n- Site-wide redirects\n- Deployment best practices with `whitenoise` and `gunicorn` already configured\n- Leverage the power of built-in `Django` templates, template tags, and filters inside `markdown` files\n- Any custom template tags and filters are enabled automatically for use in `markdown` or HTML templates\n- Include any third-party [`Django` app](https://djangopackages.org) for additional functionality\n- Serve multiple domains with custom sites\n- Optional command to generate static HTML files\n- Can be integrated into a regular `Django` project as a standard third-party `Django` app to render markdown content\n\n## ⚡ Quick start\n\n1. `mkdir new-site \u0026\u0026 cd new-site` to create a new folder\n1. `python3 -m venv .venv \u0026\u0026 source .venv/bin/activate \u0026\u0026 pip install coltrane` to install the `coltrane` package\n1. `coltrane create` to create the folder structure for a new site\n1. `coltrane play` to start local development server\n1. Go to http://localhost:8000 to see the original markdown rendered into HTML\n1. Update `content/index.md`\n1. Refresh http://localhost:8000 to see the updated markdown rendered into HTML\n1. Optional: run `coltrane record` to build static HTML files\n\n### Generated `coltrane` file structure\n\n```bash\n.\n├── .gitignore\n├── Dockerfile\n├── README.md\n├── pyproject.toml\n└── site\n    ├── .env\n    ├── .watchmanconfig\n    ├── __init__.py\n    ├── app.py\n    ├── content\n    │   └── index.md\n    ├── data\n    ├── gunicorn.conf.py\n    ├── static\n    └── templates\n```\n\n## 📝 Content\n\nAdd `markdown` files or sub-directories to the `content` directory and rendered HTML will be accessible via auto-generated routes.\n\n- `/` would render the `markdown` in `content/index.md`\n- `/about/` would render the `markdown` in `content/about.md`\n- `/articles/this-is-the-first-article/` would render the content from `/content/articles/this-is-the-first-article.md`\n- `/not-there/` will 404\n\nHTML will also be served automatically if a `markdown` file can not be found.\n\n- `/app/` would render the HTML from `/templates/app.html` or `/templates/app/index.html`\n- `/app/some-user` would render the HTML from `/templates/app/*.html`\n\n## Deployment\n\nExample `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`.\n\n# 📖 Documentation\n\nRead all of the documentation at https://coltrane.readthedocs.io.\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/Tobi-De\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/40334729?v=4?s=100\" width=\"100px;\" alt=\"Tobi DEGNON\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTobi DEGNON\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/adamghill/coltrane/commits?author=Tobi-De\" title=\"Tests\"\u003e⚠️\u003c/a\u003e \u003ca href=\"https://github.com/adamghill/coltrane/commits?author=Tobi-De\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n  \u003ctfoot\u003e\n    \n  \u003c/tfoot\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamghill%2Fcoltrane","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadamghill%2Fcoltrane","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamghill%2Fcoltrane/lists"}