Frontpage Projects Game Development Posts

Vault Static Site Generator

The program that generates the website you are reading this on. Currently closed-source, because I'm too lazy to remove the hard-coded corner cases, but I can detail a bit about it's internals. Think of this page as the obligatory I want to show off my weird website's internals article.

The generator is essentially a static HTML page frontend for my note archive. The archive is mainly managed and expanded through Obsidian, with pages written as Markdown pages with an YAML Front Matter. This allows me to easily write pages in an intuitive syntax, while configuring technical aspects of the pages directly on the Obsidian properties. Properties are used to determine whether a page should be visible on the website, and if not, how links to the page should then be presented.

Within the note archive most links are internal, linking from one page to another internal page, but not all pages are public, so the generator uses a short process to determine what to link to:

  • If the linked page is public: Link to the page.
  • If the linked page is not public: Link to the official website or related, specified through the Obsidian properties.
  • If the linked page is not public, and doesn't have a useful link: Remove the link, but keeping the text.

I'm an avid linker, and greatly enjoy Obsidian's backlinks discovery feature to quickly add links between pages, but this makes some sentences overwhelmingly link-filled, to the point of being unreadable. To counteract this, I've stolen and automated Wikipedia's style: Only link on the first mention. See Suggest Require for a great example, where "Lua" is only linked once. I also stole the Mark first occurrence of the covered word as bold style, because it looks neat.

Info Tables

Some pages have auto-generated info-tables (see Final Fantasy XV.) These tables are also inspired by Wikipedia, and allows for presenting a lot of structured data very quickly. The data is pulled from the page properties, and from a specialized format used by the Obsidian dataview plugin (- key:: value). The tables are mainly for fun, and because I think they're neat; especially the tiny links a the top.