Patrick Leckey
Cover image

Building a Personal Site During Recovery

Life has a way of making us slow down, whether we like it or not. A minor surgery recently gave me some unexpected downtime, and while recovery wasn’t exactly fun, it gave me the space to finally focus on something I had been meaning to do for a while - building my personal website.

I wanted something modern, lightweight, and flexible. A place where I could share ideas, projects, and thoughts without feeling constrained by rigid structures. At the same time, I didn’t want to deal with the overhead of a traditional CMS or a complex backend. That’s why I turned to Nuxt.js, Sanity.io, and Cloudflare Workers, a stack that let me build exactly what I wanted without unnecessary complexity.

Why Sanity.io Was the Perfect Content Solution

Content management can be a tricky thing. Some projects start simple, maybe with a few markdown files or a basic database, but they quickly become unmanageable as they grow. On the other hand, traditional CMS platforms can feel bloated, especially when all you need is a clean, structured way to store and retrieve content.

Sanity.io struck the perfect balance. Unlike traditional CMS solutions, it’s headless, meaning it doesn’t dictate how content should be displayed. Instead, it provides a flexible backend where content is stored as structured data, making it easy to fetch, organize, and reuse. I could model my content exactly as I needed - defining separate structures for blog posts, projects, and even smaller reusable content blocks.

One of the standout features was the real-time editing experience. Any changes I made in Sanity’s Studio were reflected instantly on my site, without the need for manual updates or rebuilds. This made content management feel seamless, something I appreciated after years of dealing with static site generators that required redeployments just to correct a typo.

Sanity also handled images intelligently, automatically optimizing them for performance and delivering them efficiently. That meant I didn’t have to worry about resizing, compression, or manually generating different image formats - it just worked. For a personal site, these kinds of conveniences make all the difference.

Why Nuxt Made Frontend Development Feel Effortless

I’ve worked with various frontend frameworks over the years, but Nuxt has always stood out for its balance of simplicity and power. Since it’s built on Vue, the development experience is smooth and intuitive, but what really sets Nuxt apart is how it provides a well-structured approach to building applications.

Routing, layouts, and data fetching all felt incredibly natural. There was no need to spend time setting up configurations or dealing with boilerplate - everything was already optimized out of the box. Fetching content from Sanity was straightforward, and Nuxt’s ecosystem provided all the tools I needed to build a fast, interactive experience without unnecessary friction.

Another major advantage of Nuxt is its server-side capabilities with Nitro. Unlike traditional static site generators, which often rely on pre-generated pages, Nuxt with Nitro allows for a true server-powered backend. This meant I could keep my site dynamic, fetching the latest content on demand rather than being restricted to a prebuilt structure.

Cloudflare Workers: A Next-Level Hosting Solution

When it came time to deploy, I wanted a solution that was fast, scalable, and didn’t require traditional server infrastructure. While platforms like Vercel and Netlify are great for frontend deployments, I needed something that could fully support Nuxt’s Nitro-powered backend. That’s where Cloudflare Workers and Cloudflare Pages came in.

Cloudflare Workers offer serverless execution at the edge, meaning my Nuxt backend could run globally distributed, with ultra-low latency. Instead of a traditional server handling requests from a single region, my Nuxt API endpoints could run on Cloudflare’s edge network, automatically scaling and responding from the closest data center to each user.

With Cloudflare Pages’ support for full-stack applications, deploying my Nuxt app felt effortless. It seamlessly handled both the frontend and the Nitro-powered backend, allowing me to fetch live content from Sanity without needing a separate API server. The result? A site that was dynamic, fast, and globally available without any backend maintenance.

Reflections on the Process

Looking back, what started as an unplanned break from my routine turned into a chance to build something meaningful - something that I had been putting off for too long. It reminded me that the best projects don’t always require grand ambitions; sometimes, they just need the right tools and the right moment.

Sanity.io gave me a powerful yet lightweight way to manage content, Nuxt provided a seamless development experience with built-in server-side capabilities, and Cloudflare ensured that everything ran globally, with near-instant responses. It all came together in a way that felt natural - no unnecessary complexity, no wasted effort, just a simple, modern stack that worked exactly the way I needed it to.

Now that the site is live, I find myself thinking less about what’s under the hood and more about what I can create with it. And at the end of the day, isn’t that exactly what the right tech stack should do?

RSS