nikom.work: rebuilding my own site as an in-memory Go renderer
The Laravel version answered every page view with database queries and two cookies. I rebuilt it as a Go site that does no database work on a page view, and kept SQLite for one job — holding a contact message until it is delivered.

This is about the site that used to be at nikom.work and the rebuild that replaced it. I'm keeping the old domain in the title because it is the history — those pages are moving here one at a time, and pretending the old site never existed would make the rest of this harder to follow.
What was wrong with it
The Laravel version answered every page view with database queries and set two
cookies, and it sent private, no-cache responses through a CDN — the requests I
sampled came back cf-cache-status: DYNAMIC. As small sites go it was perfectly
ordinary. It was also doing a lot of work to produce a page that is identical
for everybody, and a crawler notices that.
On 10 July 2026, Search Console had 1 page indexed and 2,900,631 not
indexed: 2,900,597 excluded by noindex, 22 discovered, 9 crawled and 1 server
error.
Those excluded URLs were the site's own filter pages. They were never a count of pages worth moving, and I don't want the number read as one.
What I built instead
- Every public page from memory. A page view does no database work, opens no session and sets no cookie, so the response is the same for everyone and a cache can keep it.
- SQLite for exactly one job: writing a contact message to an outbox, so it survives a restart and gets retried until it is delivered.
- Filters that run in the browser instead of minting a new URL for every combination of them, which is where most of those 2.9 million came from.
- A real CDN policy — validators, precompressed assets, one shared cache rule — instead of private responses a cache has to skip.
- The old filter URLs cleaned up, since nobody was ever going to link to them on purpose.
Where it stands
Closing this out depended on the CDN rollout and purge, and then on crawl evidence, not on the deploy itself. The dates and numbers above are what I measured at the time.
The old addresses now redirect here as I review and publish each page.
Have a system like this?
Describe the workflow, the data or the system you need built. Scope and any quote are handled privately after the enquiry.
Published