45 lines
2.4 KiB
Markdown
45 lines
2.4 KiB
Markdown
# 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.
|