# 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.