We Built This Website Ourselves
No WordPress. No page builders. No templates. Just HTML, CSS, and a Node.js server running in Pterodactyl.
No WordPress. No page builders. No templates. Just HTML, CSS, and a Node.js server running in Pterodactyl.
A question we get occasionally is what the website is built on. The answer is pretty unglamorous: it's hand-written HTML and CSS, served by a small Node.js HTTP server, proxied through Nginx, and hosted on our own infrastructure in a Pterodactyl egg. That's it. No framework, no CMS, no build pipeline.
That might sound like the hard way to do it, and in some respects it is — but it also means we have complete control over every pixel, every byte that gets sent to your browser, and how fast the page loads. There's no WordPress core, no plugin ecosystem, no database query slowing down your first paint. It's just files on disk being served over HTTP.
The actual serving layer is about as minimal as you can get. A Node.js script reads files from disk and responds to HTTP requests:
That runs inside a Pterodactyl server using a custom egg. Nginx sits in front of it and handles SSL termination, compression, and proxying. The Pterodactyl egg means we can manage the website process the same way we manage game servers — start, stop, restart, file manager access, console output. It's a familiar interface for us and it works.
We could have used Netlify or Cloudflare Pages and it would have taken ten minutes. But we run our own infrastructure. Hosting our own website on it is partly a practical decision (we already have the hardware) and partly a point of principle — if we're going to tell customers that our infrastructure is reliable enough to run their servers on, the least we can do is run our own stuff on it too.
The styling is a single stylesheet shared across all pages, built on CSS custom properties for theming. No preprocessor, no utility framework — just vanilla CSS with a clear naming convention. It keeps the codebase small and means any of us can make changes without needing a build step. The fonts are loaded from Google Fonts (Syne for headings, DM Sans for body) and that's the only external dependency the frontend has.
It's not the most sophisticated setup in the world, but it loads fast, it's easy to maintain, and it's ours. Sometimes that's enough.