A static site generator for a portfolio website.

This script was used to generate the website between 2013 and 2020, when it was replaced by a teafolio instance.

Written in PHP, Bash


  • Generates static website, minimising server load and decreasing attack surface compared to dynamic server-side PHP
  • Automatic thumbnailing and sprite sheet generation
  • Download file attachments per-project
  • One-click rebuild, one-click deploy
  • Parallel generation


2020-05-24: v157

  • Sunset release
  • Rewrite codesite Git repository history for full public release
  • Feature: Add support for autogenerating codesite projects from a Git repository (
  • Feature: Support converting a codesite project into a readonly, archive Git repository (codesite2git)
  • Feature: Support bulk pushing codesite2git-converted repositories to a Gitea instance

2018-12-30: v138

  • (Private release only)
  • Feature: Support [git-repository] tags to link to a custom VCS repository
  • Feature: Support markdown link syntax
  • Feature: Support markdown multiline comments that include code syntax highlight tag
  • Enhancement: Support Go subpackages under [go-get] tags
  • Enhancement: Strip markdown image urls
  • Enhancement: Trim leading blank lines
  • Fix a cosmetic issue with favicons and document rendering mode in some versions of IE

2017-10-28: v132

  • Fix an issue with not applying project rename redirections in the new URL format
  • Fix a cosmetic issue with classifying downloads named with numeric strings
  • Fix a cosmetic issue with truncated sheilds caused by ID collisions
  • ⬇️ code_v132.tar.xz (106.49 KiB)

2017-04-23: v126

  • Breaking: BASEURL is now a mandatory field
  • Feature: Support [go-get] tags
  • Feature: Canonical paths for SEO
  • Feature: Use extension-less paths by default (old .html paths still supported via redirect)
  • Feature: Support [url] tags
  • Enhancement: Cache-busting parameters on homepage thumbnails
  • ⬇️ code_v126.tar.xz (106.39 KiB)

2016-04-19: v118

  • Feature: Classify download artefacts by matching CHANGELOG entry
  • Feature: Allow sorting by lifespan, artefacts, release entries
  • Feature: Separate site generation code from site data repositories
  • Enhancement: Update supplied CSS normalize script
  • Enhancement: Read parallelism from number of CPUs
  • ⬇️ code_v118.tar.xz (103.18 KiB)

2015-11-08: v97

  • Feature: Support BBCode b/i/spoiler/entry tags
  • Feature: Add more CSS styles to allow per-site customistaion
  • Feature: Use images where appropriate
  • Feature: Optional blurbs=off, article_header={string}, shields_prefix=true configuration directives
  • Fix an issue with project update-time detection
  • Fix a cosmetic issue with whitespace
  • ⬇️ code_v97.tar.xz (107.54 KiB)

2015-04-05: v72

  • Feature: Support redirecting old project names
  • Feature: Add file hash in download URLs to prevent filename collisions
  • Fix an issue generating spritesheets even if no project images are present
  • Don't include ctime when estimating project update time
  • ⬇️ code_v72.tar.xz (106.79 KiB)

2015-04-05: v64

2015-04-04: v54

  • Feature: Support multiple code sites
  • Fix an issue with parallel builds on some versions of windows
  • Fix an issue corrupting URL links with multiple parameters
  • Fix a cosmetic issue with page overflow
  • Fix a cosmetic issue with whitespace on code elements
  • ⬇️ code_v54.tar.xz (105.79 KiB)

2014-07-02: v39

  • Feature: Tags
  • Feature: Generate pages in parallel
  • Enhancement: Support raw HTML sections in page content
  • Fix an issue with URLs containing spaces
  • Fix a cosmetic issue with image thumbnail backgrounds
  • Fix a cosmetic issue with download sort order
  • Fix a cosmetic issue with page layout
  • ⬇️ (13.11 KiB)

2013-09-28: v13

2013-09-21: v3

  • Initial deployment