💾 Archived View for gmi.schrockwell.com › posts › 2024-05-03-new-site.gmi captured on 2024-07-08 at 23:30:35. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2024-05-10)

-=-=-=-=-=-=-

schrockwell.com - Now simulcast to the Web and Geminispace!

May 3, 2024

It's a tradition observed by developers everywhere: the complete overhaul and redesign of the personal web site. Today, it's my turn.

This site is now published to the Web _and_ to Gemini. It's the same content, the same formatting, the same silly side projects – now on the creaky old Web and the shiny new Geminispace.

---

I played around with Kirby CMS for a few weeks. It went _okay_. I like how Kirby starts as a barebones setup, and every additional feature is opt-in. It's endlessly customizable, the admin panel UI looks great, and the documentation is mostly complete.

But the whole thing felt really complex for a basic home page, I'm not super familiar with PHP, and the deployment story was kind of "meh". I really didn't like how schemas and content were inextricably coupled together in the same repo.

Kirby CMS

Plus, I wanted to put something "real" on Gemini. And I definitely did _not_ want to maintain content in two places with two different formats.

Project Gemini

---

The solution ended up being the simplest in nearly every way. There's one folder of Gemtext content, and a build script that statically generates both the web site and the Gemini capsule.

The build script is just shy of 400 lines of Ruby, which is a testament to the simplicty of Gemtext. Honestly, once GitHub Copilot figured out what I was trying to do, it did most of the work.

generate.rb       <-- Build script
content/          <-- INPUT: Gemtext files, images, etc.
    about/
    posts/
    projects/
    index.gmi
_site/            <-- OUTPUT: Web site (HTML)
    index.html
    ...
_capsule/         <-- OUTPUT: Gemini capsule (Gemtext)
    index.gmi
    ...

The web site is built and hosted on Netlify, and the Gemini capsule gets rsync'ed to a Digital Ocean VPS running gemserv.

Now I can stop procrastinating and focus on the content.

There are still a few TODOs. A GitHub Action to deploy the Gemini capsule would be cool. And I would love to run the image assets through ImageMagick for resizing and sharpening. Should be easy enough to add.

Source code

Navigation

Home

Posts

Pursuits

About

View on the web