eveningjazz.net is an (almost) static website.

The tools used to construct the website (excluding HTML, CSS, and JavaScript) are as follows...

Bash-TPL

Reusable templates for generating HTML pages with variable replacements.

wavesurfer.js

Audio player implemented in Javascript. All mixes are preprocessed and have their waveform metadata stored as JSON.

GNU recutils

GNU Recutils is a set of tools and libraries to access human-editable, plain text databases called recfiles. The recfile database of Evening Jazz mixes is located in the site's public /files directory.

openbsd.amsterdam.

Hosting provider for OpenBSD virtual machines. eveningjazz.net and a few other projects are hosted on a VM that I rent from openbsd.amsterdam.

httpd

OpenBSD’s web server that is used to serve page requests.

relayd

OpenBSD’s relay that sits in front of the server to handle TLS termination, setting appropriate response headers, and redirecting traffic to the varnish cache that sits in front of httpd.

varnish

Reverse caching proxy. If a hit is found on page request, we can skip httpd entirely and directly respond with the cached page. This type of caching is overkill for a static site (it is, however, fun).

The routing flow looks like this...

       +--------------------------+
       |                          |
  ---->|  http://eveningjazz.net  |---+   +-------------------------------+
       |                          |   |   |                               |
       +--------------------------+   |   |  httpd (:80, :8080)           |
                                      |   |                               |
                                      +-->|  1. Block return 301 to :443  |
       +--------------------------+   |   |                               |
       |                          |   |   |                               |
  ---->|   www.eveningjazz.net    |---+   +-------------------------------+
       |                          |                       |
       +--------------------------+                       |
                     +------------------------------------+
                     |
                     |                            +-----------------------+
                     v                            |                       |
       +--------------------------+               |  relayd (:443)        |
       |                          |               |                       |
  ---->| https://eveningjazz.net  |-------------->|  1. Add headers       |--+
       |                          |               |  2. Forward to :8081  |  |
       +--------------------------+               |                       |  |
                                                  +-----------------------+  |
                                                                             |
    +------------------------------------------------------------------------+
    |
    |  +-------------------------------+          +-----------------------+
    |  |                               |          |                       |
    |  |  varnish (:8081)              |          |  httpd (:8082)        |
    |  |                               |          |                       |
    +->|  1. Check for cache           |--------->|  1. Serve content     |
       |  2. If not, forward to :8082  |          |                       |
       |                               |          |                       |
       +-------------------------------+          +-----------------------+