Source code of the website deployed at https://chris.netsoj.nl/ https://chris.netsoj.nl/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Chris Josten 1d0d1a54b1 Fix crash caused by lastIndexOf returning negative numbers 2 weeks ago
public/static Add more support for internationalisation, style changes 8 months ago
source/nl/netsoj/chris/blog Fix crash caused by lastIndexOf returning negative numbers 2 weeks ago
translations Add contact menu option and hide unneeded sections on project page 7 months ago
views Fix template indentation 7 months ago
.gitignore Add accidentally removed files 8 months ago
LICENSE.md Refractor code 4 months ago
README.md Added README 1 year ago
default.nix Initial commit 1 year ago
defaultClasses.lua Add more support for internationalisation, style changes 8 months ago
dub.json Update dependencies Nix 2 months ago
dub.selections.json Update dependencies Nix 2 months ago
dub.selections.nix Update dependencies Nix 2 months ago
mijnblog.nix Initial commit 1 year ago
mkDub.nix Fix NixOS build 4 months ago
shell.nix Initial commit 1 year ago

README.md

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.