Publ is an open-source Flask-based publishing platform that brings dynamic features to the classic static-site workflow, using Markdown files as the source of truth.
What is Publ?
Publ is a flexible publishing system for the web, built as a Python Flask application. It takes simple Markdown files organized in a sensible file hierarchy and renders them into a dynamic website, supporting scheduled posts, private posts, category-based templates, and built-in image renditions such as thumbnails, high-DPI variants, and galleries. The file system is the ground truth for all site data; a database such as SQLite, MySQL, Postgres, Oracle, or Cockroach serves only as a content index. Publ is developed by fluffy and karinassuni under the PlaidWeb organization, with the main demonstration site at beesbuzz.biz.
Key Features
- Markdown-first authoring — Write content in simple Markdown files organized in a hierarchy; no database content editing required.
- Scheduled posts — Set future publication times and Publ will make posts appear dynamically.
- Private posts — Restrict access to specific content, useful for members-only or draft material.
- Category-based templates — Use different templates for different categories of content, allowing flexible presentation of heterogeneous material.
- Image renditions — Automatically generate thumbnails, high-DPI (Retina) versions, and image galleries from a single source image.
- CDN-friendly — Publ is designed to work behind a content delivery network.
- IndieWeb support — Interoperates with open web standards like those from IndieWeb.
- Portable deployment — Runs in any WSGI-capable Python environment, including shared hosting with Passenger, Heroku, Google AppEngine, S3, or other containerized targets.
Who is it for?
- Multidisciplinary creators — Artists, musicians, writers, and developers who publish comics, music, art, code, and games all in one place without switching platforms.
- Self-hosters — Users who want the simplicity of static files combined with the advantages of a dynamic site, and who can manage a Python application.
- IndieWeb enthusiasts — People who want a publishing system that embraces open standards for interoperability.
What can you do with Publ?
- Publish a personal homepage — Use the sample site template from the Publ-templates-beesbuzz.biz repo to launch a site like beesbuzz.biz.
- Run a multi-format blog — Combine written posts with image galleries and scheduled releases under your own domain.
- Create a documentation site — The Publ site itself runs on Publ, demonstrating its ability to serve as a documentation platform.
How does Publ work?
Create Markdown files in a directory structure, and Publ reads those files as the authoritative source for site content. A database index is maintained for performance, but the files remain the ground truth. When deployed to any WSGI server, Publ dynamically renders pages based on the file hierarchy, applying category templates and generating image renditions on demand.
FAQ
Is Publ free?
Yes, Publ is open-source software hosted on GitHub under the PlaidWeb organization, so it can be used without licensing fees.
What do I need to run Publ?
You need a supported version of Python and the Poetry dependency manager, plus any WSGI-capable hosting environment. On Windows, Visual C++ build tools may be required for some dependencies.
What database does Publ use?
By default Publ uses SQLite, but it also supports MySQL, Postgres, Oracle, and Cockroach because the database is only an index and the file system is the source of truth.
Does Publ support high-DPI images?
Yes, image renditions include thumbnails and high-DPI support, as well as image galleries, making it suitable for photography and art sites.





