Colophon
for
phillipharrington.com
Updated:
Apr 2026, Smithfield, NC
My CMS is Just HTML... Kinda
This website is static HTML built with Vite, Tailwind, and
graspr-build
— a small build package I made that turns custom HTML tags into plain HTML at build
time. The "Kinda" part is those custom tags: I write things like
<lnk>,
<heading>, and
<spaced>
instead of repeating the same markup on every page. I wrote about it in
HTML is Fun Again.
To write an article, I typically dictate my thoughts into Notes on my phone then edit at
the computer. To
publish
it, I simply make an HTML file in my
content/pages
directory, and the build script handles the rest. When it's that simple, you'd think I
would publish more often 😂
The code is
here, and
graspr-build is
here, if you're curious.
Abstract URLs
The abstract URLs, e.g.
/about, are simply HTML files without an extension containing the rendered
output. During the build, I apply system metadata in the S3 bucket so they have
Content-type: text/html
applied to them and will render in the browser. No SPA. No routing or anything. But the
pages load fast, it's just as good.
Locally I develop with the Vite dev server, which handles live-reload and serves the
abstract URLs the same way production does — no extension, no trailing slash, no
redirect. A small Vite plugin from
graspr-build
renders each page on the fly from the source files in
content/pages.
A TailwindCSS Convert, Finally
The site uses TailwindCSS, which I finally converted to, but the notion of using it with a team and having a common framework for CSS is what sold me, so I'm using it here, too. It's honestly one less thing to worry about.
Other than that and the JS hamburger menu script, which I never update, all I have to do is write content, which I hardly ever get around to doing. No node-sass or any other junk just to slap together some HTML. It's refreshing.
Hosting is Just S3
The site is served from an AWS S3 bucket with a CloudFront distribution in front of it, which is why the pages load so fast. (And even that seems like an extravagance, when I could just as easily slap this mother onto GitHub pages and put Cloudflare in front of it.) I also use AWS for the SSL certificate and domain name. No database. No server-side junk. No container.