From 76ea5885ddd1038d673c54f2dd052d3b55a3f088 Mon Sep 17 00:00:00 2001 From: Henk Kalkwater Date: Wed, 24 Jun 2020 22:04:51 +0200 Subject: [PATCH] Added README --- README.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..bcc990a --- /dev/null +++ b/README.md @@ -0,0 +1,44 @@ +# The source code of my website + +# Features +An overview of the features of this piece of software: + +* Parses MarkDown files and transforms it into webpages (well, most of the credit goes to Pandoc) +* Automatically adds new pages/posts when added in their respective directories. +* D should be fast, and I've tried to move all the computationally expensive parts to occur only + when adding/removing pages. Templates are compiled to native code when this software is compiled. + +# Limitations +* Assumes all posts fit into memory + * I'm going to resolve this either by either lazy-loading the posts into memory (while keeping + metadata) or by transforming this piece of software into an static website generator. +* Really only meant as a blog for people with some kind of technical skill. + * Writing MarkDown is not for everyone and remembering the MetaData keys. + * It has no GUI for writing posts. +* Assumes you trust its page authors. + * Although you could prevent people from editing each others articles by placing them into + subfolders with distinct user rights, you cannot prevent people from faking metadata. + * Blog writers can inject arbitrary HTML and JavaScript in their pages. +* A lot is hard coded: + * Menu items + * should be able to be configured via a configuration file + * Page types (Page, Article, Project et cetera). + * Not planning on changing this. Theoretically it shouldn't be too hard since they mostly + are a definition of required/optional metadata properties but since the templates are + compiled to D code, that means that also has to be compiled. If you can compile software, + you most likely could also copy some code, modify it to your needs and call it a day. + Routes are also hard coded and so on. + * Routes are hardcoded + * Basic server settings like bind address, port, ssl certificates. + * Should be able to be set via a configuration file or command line parameters. + * Templates + * This is a feature of Diet, the template language I'm using. + +# Dependencies +This program assumes pandoc is installed and is in your $PATH. Ohter dependencies are resolved with +dub. + +# Deploying +The built binary must be executed with the `public` directory in its working directory. It is +hardcoded to listen on 3465 on "0.0.0.0" on HTTP (not HTTPS)! It is intended to be deployed behind +a reverse proxy.