Stack
The site is a Next.js app (App Router) deployed to Cloudflare Workers via OpenNext. There is no Node server nor origin. The site runs at the edge, which keeps it fast and cheap but rules out a few conveniences (there’s no runtime filesystem, so all content is bundled at build time).
Architecture
There are two workers behind one domain. The main one serves the site you’re reading, while the other is a router that proxies each of my live projects under /projects/<name>. For example, the globe and orrery live as their own projects in my broader apps monorepo but appear seamlessly on dennisgavrilenko.com!
Populating “Things I Like”
The writing on /blog and /adventures is imported from my Substacks, where they were originally written and posted, then rendered natively here. I built the lists on /things I like with a set of command-line tools: I pasted in my favorite raw titles and links, then sent Claude subagents to enrich my selections with authors, years, and URL information. Books link to their OpenLibrary entry, movies to their Wikipedia article, and albums to their Spotify page. Spotify is the elite music player and anyone who disagrees on this is wrong.
Design
This site’s design is inspired by Nathan Brown, Ralph Hajjar, Justin Williams, and Austin Kennedy. The contact form is protected by Cloudflare Turnstile and delivered with Resend. I specifically left out a mailto: so scrapers couldn’t easily harvest my email. The social-share image is rendered with headless Chrome.
Open source
Like the site? I open-sourced it! I’ve scrubbed all my personal content into a de-personalized template you can fork and fill in with your own stuff under an MIT license. Check it out on GitHub!
And yes, there are things hidden around here. Good luck finding them!