Fuglesteg

Projects

lisp icon guix icon docker icon nginx icon
git icon

Source code

Fuglesteg.net

The website you are currently looking at

This website is written in Common Lisp using mainly Clack, Spinneret, Parenscript, and common-doc. Most pages are written in markdown and then translated to HTML using common-doc. To add metadata to the pages I have extended the commmondoc-markdown package to parse yaml frontmatter and add it to the metadata of the common-doc document. This was done easily using CLOS method qualifiers.

The rest of the application also uses a custom router that I am going to turn into a library soon. It allows me to define routes like this:

Oversimplified example:

(defroute article "/articles/{article-title}"
          (content (find article-title *articles* :key #'title :test #'string=)))

The program is then packaged with a Guix package definition, a GitHub action builds the package as a docker image which is then deployed to Docker Hub. The image is then deployed to my self hosted server.