A minimal, general-purpose Markdown-based CMS.
Go to file
Fabio Manganiello dc882c7237 Do os.path.abspath on custom content folders in the app constructor before initialization
If relative paths are used for the content folder then send_from_directory may mistakenly interpret the paths as relative to the main application, instead of the content folder
2022-01-12 00:30:25 +01:00
madblog Do os.path.abspath on custom content folders in the app constructor before initialization 2022-01-12 00:30:25 +01:00
.gitignore First commit 2022-01-11 20:16:27 +01:00
LICENSE.txt First commit 2022-01-11 20:16:27 +01:00
MANIFEST.in First commit 2022-01-11 20:16:27 +01:00
README.md Added demos to README 2022-01-12 00:19:48 +01:00
requirements.txt First commit 2022-01-11 20:16:27 +01:00
setup.py First commit 2022-01-11 20:16:27 +01:00

README.md

madblog

This project provides a minimal blogging platform based on Markdown files.

Demos

This project powers the following blogs:

Installation

$ python setup.py install

Usage

# The application will listen on port 8000 and it will
# serve the current folder
$ madblog
usage: madblog [-h] [--config CONFIG] [--host HOST] [--port PORT] [--debug] [dir]

Serve a Markdown folder as a web blog.

The folder should have the following structure:

.
  -> config.yaml [recommended]
  -> markdown
    -> article-1.md
    -> article-2.md
    -> ...
  -> img [recommended]
    -> favicon.ico
    -> icon.png
    -> image-1.png
    -> image-2.png
    -> ...

positional arguments:
  dir              Base path for the blog (default: current directory)

options:
  -h, --help       show this help message and exit
  --config CONFIG  Path to a configuration file (default: config.yaml in the blog root directory)
  --host HOST      Bind host/address
  --port PORT      Bind port (default: 8000)
  --debug          Enable debug mode (default: False)

Configuration

The application will look for a config.yaml file in the current directory if none was specified through the -c command-line option. The structure is the following:

title: Blog title
description: Blog description
link: https://link.to.your.blog
# Use home_link if you have a different home/portal address
# than your blog, otherwise it's the same as `link`
home_link: https://link.to.home
# Path/URL to the logo (default: /img/icon.png)
logo: /path/or/url/here
# Blog language (for the RSS feed)
language: en-US

categories:
  - category1
  - category2
  - category3

Markdown files

Articles are Markdown files stored under pages. For an article to be correctly rendered, you need to start the Markdown file with the following metadata header:

[//]: # (title: Title of the article)
[//]: # (description: Short description of the content)
[//]: # (image: /img/some-header-image.png)
[//]: # (author: Author Name <email@author.me>)
[//]: # (published: 2022-01-01)

Images

Images are stored under img. You can reference them in your articles through the following syntax:

![image description](/img/image.png)

You can also drop your favicon.ico under this folder.

LaTeX support

LaTeX support is built-in as long as you have the latex executable installed on your server.

Syntax for inline LaTeX:

And we can therefore prove that \( c^2 = a^2 + b^2 \)

Syntax for LaTeX expression on a new line:

$$
c^2 = a^2 + b^2
$$

RSS syndacation

RSS feeds for the blog are provided under the /rss URL.