how this thing was made

28 Jan 2026
3 min read |
#hobby

Hey! You found the blog part of the website. This is where I'll be documenting my finds and interests in this tech-y part of my life.

This website is a work of love. Most personal sites today are mostly sterile templates (not saying this isn't one) but I really want to make this much more sentimental than just a landing page for people to get to know what I do. Why work of love you ask?

This website is powered by my favorite things: SvelteKit my comfort framework, TailwindCSS my crutch, and Cloudflare my dearly beloved.

Why SvelteKit?

The site is built with SvelteKit. I chose Svelte because it stays out of the way. It allows for that snappy, "app-like" navigation while keeping the bundle size tiny. Every transition between the blog and home is handled via client-side routing, making it feel seamless. The UI feels incredibly lightweight (at least on my end :P) Also, Svelte is my first framework!

(It's Laravel actually, but we don't talk about that. The lioness doesn't concern herself with the PHP language)

Every transition is "SPA-like" (Single Page Application). When you click a blog post, SvelteKit fetches only the data needed for that post, and the browser updates without a full page reload. Crazy stuff, huh :0

The CMS

Instead of using a generic CMS like WordPress or Sanity, I built a custom Admin Dashboard from the ground up. I know... I know I already have a Medium account. But I think it's best to differentiate personal and whatever realm this is. In here I want to talk about my passions, my findings, and my interests.

So... this is how I made my own CMS:

My Pride: Cloudflare D1

This is where things get interesting. Mainly because I love Cloudflare so much for being so helpful throughout my entire learning process. I kid you not... I've been heavily abusing Cloudflare for years and never have they ever billed me a single cent! Not even joking. I love Cloudflare!!!!!!!!

Okay. Most SvelteKit blogs use import.meta.glob to read files from a folder. That's what I used to do. However, on serverless platforms like Cloudflare, the filesystem is read-only.

My Joy: Cloudflare R2

Storing images in a database is a recipe for disaster, and storing them in the static/ folder requires a new git push every time I find a cool picture for my blog post's thumbnail. That's what I used to do for my old blog. Just manually pushing new .md file every time..... yup...

My Dearly Beloved: Cloudflare Pages

The entire site is deployed via Cloudflare Pages. Everything I've ever built myself is deployed via Cloudflare Pages (well... I used Vercel once or twice). I kid you not, I have successfully convinced my new workplace to migrate one of their projects to Cloudflare. I love it so much I can't even imagine using anything else.

So, with the three Cloudflare services, I bound them together with this thing called a Wrangler to make sure the code knows exactly which production resources to talk to.

And that's about it for the stack ❤️ Thank you!

naosletter.com 28 Jan 2026