MarkdownMaster CMS is a flat-file framework designed to render HTML content from simple markdown files and HTML templates capable of running entirely client-side, (though for best results, should be paired with the server-side component).
The idea of this is similar to Jekyll, but has the benefit of not requiring any pre-compiling for files to be served. All content processing is handled within the browser.
As a complement system to the client-side engine, a PHP-based server-side component facilitates support for search crawlers to ensure SEO, bots, form submissions, and RSS feeds by rendering the Markdown files into HTML on the server. This server-generated content will not exactly match the client-side rendering as there are some features lacking, but is sufficient for basic content.
Because there is no database, registry, or administration of pages, deploying new pages is as simple as just uploading Markdown files to your server. This can be done via automated sync applications such as NextCloud or just uploading via SFTP or your web hosting interface. No building or scripts needed for deployment!
The client-side javascript rendering in this project was originally based from Chris Diana's CMS.js.
First-party professional support for this code, along with server hosting and technology consultation is available from Ohio-local eVAL Agency.
Aside from business support, you can also help support this project by donating to me directly.
- Low dependencies (just PHP 8.2+ and a web server)
- Abstract content types
- Custom templates
- Search, filtering, tagging and sorting
- Apache, Nginx, Mail-in-a-box, and Nextcloud support
- Small footprint
- Remarkable Markdown parser embedded (modified)
- Crawler and SEO support for most content
- Automatic sitemap.xml generation
- Theme support
- RSS 2.0 feed support
Check out a live working site!
- Setup/obtain your web environment with at least PHP 8.2 or greater.
- Download the full latest release which includes themes and example content. (Alternatively the app package just contains the app, backend, and plugins.)
- Upload and extract the tarball to your web root.
- Copy / rename
config.example.php
toconfig.php
and configure to your liking.- Notably
host
andtheme
are important.
- Notably
- Copy / rename
.htaccess.example
to.htaccess
and configure if necessary.- Default setup for top-level directory, require SSL, and no
www.
prefix.
- Default setup for top-level directory, require SSL, and no
- Edit theme markup in themes/(themename)/index.html, CSS, and markdown content.
MarkdownMaster CMS ships with a few themes to get you started, and creating new ones is straight forward as you can choose whatever HTML/CSS framework you prefer.
Documentation is available on the official MarkdownMaster CMS website, compiled from docs/ and other various sources within this project.
Javascript API documentation is also available for interfacing with low-level functions within this framework.
MarkdownMaster CMS pulls the listing of files from either the server's automatic directory index or from the server-side helper application (for faster loading and better bot/crawler support). This provides meta information of all pages in the application.
When browsing to a file, the source markdown is downloaded from the server and rendered into HTML with Remarkable, (by default; this can be swapped out if necessary).
For bots and crawlers, the server-side component is capable of generating HTML from the same markdown files. Not all features are supported in this rendering, but is sufficient for SEO and indexing purposes.
- Chris Diana maintainer of original version of CMS.js