Chris Josten 2 years ago
parent 09fdfeb112
commit 76ea5885dd
  1. 44

@ -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
# Deploying
The built binary must be executed with the `public` directory in its working directory. It is
hardcoded to listen on 3465 on "" on HTTP (not HTTPS)! It is intended to be deployed behind
a reverse proxy.