About Glacius[source]
xml
<glacius:metadata> | |
<title>About Glacius</title> | |
<description>About the wiki engine</description> | |
<category>Site meta</category> | |
</glacius:metadata> | |
<p> | |
Glacius (<em style="font-variant: small-caps">glay-see-uss</em>) is a <a href="https://en.wikipedia.org/wiki/Wiki">wiki engine</a> | |
I wrote from scratch. It's named after | |
<a href="https://killerinstinct.fandom.com/wiki/Glacius">a character</a> from the | |
fighting game <a href="https://en.wikipedia.org/wiki/Killer_Instinct">Killer Instinct</a>. | |
</p> | |
<h2>Tech stack</h2> | |
<p> | |
Glacius is pretty simple. It is a <a href="https://nodejs.org/">Node.js</a> application | |
that uses <a href="https://sqlite.org/">SQLite</a> for data storage. Static content and | |
uploads are stored in <a href="https://aws.amazon.com/s3/">S3</a> and served through | |
<a href="https://aws.amazon.com/cloudfront/">Cloudfront</a>. | |
<a href="https://nginx.org/">nginx</a> is used as a reverse proxy to the Node app. | |
</p> | |
<p> | |
It has very little client-side JavaScript because that's a philosophy I'm starting | |
to (re-)subscribe to. Basically I'm yearning for the days circa 2008 when | |
<a href="https://developer.mozilla.org/en-US/docs/Glossary/Graceful_degradation"><em>graceful | |
degradation</em></a> was a proud endeavor. | |
</p> | |
<p> | |
During development I use <a href="https://www.docker.com/">Docker</a>, | |
a bunch of custom Bash scripts, and <a href="https://sass-lang.com/">SASS</a>. At the | |
moment it's written in plain JavaScript but someday I may port it to | |
<a href="https://www.typescriptlang.org/">TypeScript</a>. The incredible slowness of | |
the TypeScript compiler turned me off of it for a while but now I'm in love with | |
<a href="https://esbuild.github.io/">esbuild</a> which basically alleviates that pain. | |
</p> | |
<p> | |
Infrastructure is deployed (mostly) with CloudFormation. This site currently is | |
sharing resources with a bunch of <glacius:link page="about/sites">other stuff</glacius:link> | |
I host. | |
</p> | |
<h3>Other tools</h3> | |
<ul> | |
<li> | |
<a href="https://mediaarea.net/en/MediaInfo"><code>mediainfo</code></a> for introspecting | |
uploaded media files | |
</li> | |
<li> | |
<code>file</code> | |
<small>(via <a href="https://linux.die.net/man/3/libmagic">libmagic</a>)</small> for | |
determining mimetypes of uploaded files | |
</li> | |
</ul> | |
<h2>Wiki content</h2> | |
<p> | |
I decided to use XML (mostly XHTML) as the markup text for all wiki content. Mostly | |
because XML is very easy to parse, and since I could just write regular HTML, custom | |
styling would be easy. Markup languages like Markdown or something similar to | |
MediaWiki were deemed too complex and frankly I don't like Markdown very much. | |
</p> | |
<p> | |
When I need customization in the form of markup I create a new tag prefixed with | |
<code>glacius:</code>, e.g. <code><glacius:link /></code>. | |
</p> |