Parakeet

Parakeet is the CMS that serves this site, and mrmichael.co.uk. I wrote it to see what Swift on the server was capable of. Hummingbird looked like a project worth investigating.

It is not a public project (yet?). This is just a description of what this site runs on.

What it does

Posts and pages are written in Markdown and rendered to HTML. Each site has its own domain, navigation, templates, and SEO fields.

There is an admin for writing and editing, user sessions, and image storage in the database rather than a pile of files on disk. Feeds and a sitemap come out of the same post and page tables. None of that is especially novel. The point was to have something I can change.

Lektor used to build these sites as a folder of HTML that I dragged onto S3. Parakeet is a live server. I still write in Markdown. I no longer have to rebuild the world to change a line.

Stack

The HTTP server is Hummingbird. Persistence is Fluent, with SQLite on a laptop and Postgres in production. Markdown goes through Down. Templates are Stencil, which I vendored and hand-optimised after it turned out to be painfully slow. It is about 10× faster now, and competitive with the dynamic Rust Jinja2 libraries. Auth is Hummingbird's session stack.

It builds as a Swift 6.2 package, ships in a Docker image, and runs on Fly.