hablog: A blog system

[ library, mit, program, web ] [ Propose Tags ]

blog system with tags

[Skip to Readme]


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS] 0.4.0, 0.4.1, 0.5.0, 0.5.1, 0.6.0, 0.7.0, 0.7.1, 0.8.0
Dependencies base (>=4.7 && <5), bifunctors, blaze-html, blaze-markup, bytestring, containers, directory, filepath, hablog, markdown, mime-types, mtl, network-uri, optparse-applicative, rss, scotty, scotty-tls (>=0.4), text, time, transformers, warp-tls (==3.2.12) [details]
License MIT
Author Gil Mizrahi
Maintainer gilmi@posteo.net
Category Web
Source repo head: git clone https://gitlab.com/gilmi/hablog
Uploaded by gilmi at 2021-01-27T21:44:17Z
Executables hablog
Downloads 3790 total (12 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for hablog-0.8.0

[back to package description]



A simple blog platform with tags. Made with Haskell and Scotty.

Hablog will read posts written in Markdown from the _posts folder.


Hablog is licensed under MIT license. This means the Haskell source files in the src directory. Highlight.js related content is not a part of Hablog and is not licensed by it.


git clone https://github.com/soupi/hablog
cd hablog
stack build


hablog --title <TITLE> --theme <THEME> --domain <DOMAIN> <COMMAND> [--port <PORT> --tls-cert <TLS_CERT> --tls-port <TLS_PORT>]
  • <TITLE> is the title you want in the HTML headers;
  • <THEME> is light or dark, depending on the theme you want, to create your own themes look at the examples in /static/css;
  • <DOMAIN> is the domain you're running the blog on;
  • <COMMAND> is http, https, or both;
  • <PORT> is the http port (not required if COMMAND is https);
  • <TLS_CERT> is the https certificate (not required if COMMAND is http);
  • <TLS_PORT> is the https port (not required if COMMAND is http).

How to write a new post?

  1. All posts must go under the /_posts/ directory
  2. All pages must go under the /_pages/ directory
  3. The content of the post/page must correspond to a specific structure

A Post's Structure

title: <the title of the post>
route: <route to the post>
authors: <the author of the post, seperated, by, commas>
date: yyyy-mm-dd
tags: <tags for the post, separated, by, commas>


<The rest of the post in Markdown format>

A Page's Structure

title: <the title of the page>
route: <route to the page>

<The rest of the page in Markdown format>