Sveltekitblog Engine
Guestbook
Login
Read in:
한국어English日本語

[Devlog] How I Ended Up Building an Outdated Blog Engine

devlog • 2026-07-26 PM1:50:02 (GMT+9) • 👀 5 •
#BlogEngine#DevStory#SvelteKit#BlogBlogEngine#DevStory#SvelteKit#Blog

Please note: This post is written in a casual, monologue style to organize my personal thoughts.

1.
To be honest, YouTube is largely to blame for how things turned out(?).
When I decided to try my hand as a solo developer later in life, I was flooded with an overwhelming amount of information.
The problem is that while the quantity of information is overflowing, the quality is often terrible.

2.
If it's just basic introductory stuff, a high volume of info isn't really a problem. But the moment things get slightly specialized or require a specific niche, I encounter completely useless information that leaves me wondering why it even popped up in my search results. Or worse, the title perfectly matches what I want, but the actual content is just a meaningless sequence of text generated to form valid sentences.
When this happens on a YouTube video, it genuinely makes me furious.

3.
Then, like finding an oasis in the desert, the rare pieces of truly valuable information almost always came from developer blog posts.
I felt so relieved, grateful, and inspired. And then, my focus—which makes me suspect I might have adult ADHD—led me to a sudden decision: "Hey, maybe I should build a dev blog too, help someone out, and maybe earn enough for a cup of coffee(?)."

4.
So I started evaluating existing blogging platforms, but every single one of them had a dealbreaker for me.
First, I ruled out anything that required hosting or maintenance costs.
Sure, earning a little coffee money would be nice, but I know that to actually pull that off, you have to work ridiculously hard. And I know myself—I'm just not that hard-working.
So right from the start, my absolute baseline rule was: Zero setup or recurring maintenance costs.
My initial plan was to host WordPress on a local Proxmox server.
To run that safely, I figured minimum security measures like an L2 switch and a firewall like pfSense were essential.
After setting all that up and looking at WordPress again, I realized customization was way too hard. When I realized I'd have to properly study PHP just to customize it, I abandoned that approach.

5.
I quickly looked for alternative solutions, but every option had its own catch.
No matter what solution I picked, having to study something completely new just to set it up felt mentally exhausting.
That mental fatigue eventually led me to a reckless thought: "Screw it, I'll just build a simple one myself."

6.
At the time, I was already messing around quite a bit with Svelte and SvelteKit.
Building a basic blog was easy enough. The real issue was that I couldn't trust my own design skills.
So I decided to architect it in a way that made swapping designs effortless—and that rabbit hole kept rolling until it became what it is today.

7.
In reality, I spent the vast majority of my time polishing the design editor and debugging.
Initially, I set out to build a "simple blogging tool" and finished about 90% of the code in just one day.
Then I actually built a blog with it and started running it.
That’s when the feature creep hit: "Oh, I need this too," "I should add this feature," "It'd be nice to have this," "This is a must-have." It felt like an endless flood of ideas.
What started as a mini-project in late November last year finally wrapped up feature implementation in March this year, and only in July did I finally open-source it on GitHub.

8.
Before I knew it, the codebase had grown way too large and complex, forcing me to modularize and refactor along the way.
I even overhauled the system architecture multiple times.
Initially, the admin panel was hosted on a Proxmox server accessible only locally, while the DB and auth relied on Supabase.
However, after experiencing terrible cold starts and seeing the project name exposed during auth on Supabase's free plan, I pivoted to going all-in on the Cloudflare ecosystem and integrated Better-auth, which I had used before.
After that, I continued making major changes to the internal logic and architecture.
On top of that, working in a Windows environment meant that every single code tweak required a full deployment to verify, leading to an astronomical amount of trial and error.

9.
Near the finish line, the codebase became so massive that I couldn't handle modifications alone anymore, so while I wrote a lot of it, I relied heavily on Gemini for the rest.
Since I hadn't documented anything, I had to compare the actual running features one by one to write the docs—and whenever I spotted a bug, I went right back into fixing code.
From March to July, it was an endless loop of: Documentation ➔ Bug Discovery ➔ Bug Fixing.
Meanwhile, thoughts like "Wait, I need this feature too!" and "Hold on, where did that feature I built go?" kept popping up, driving me absolutely insane.

10.
To make matters worse, Gemini frequently lost its mind.
Instead of fixing a single line of code, it would tear down completely unrelated modules and rewrite them. I'm convinced that if Gemini hadn't thrown so many tantrums, I would have finished at least two months earlier.
Anyway, right up to the GitHub release, I was under extreme stress until I finally decided to cut out all the "I should add this" features and just ship whatever was already working and cleaned up.
That became v1.0.0.0.

11.
And right after that, v1.0.0.1 was released.
I thought I only shipped the "cleaned up working parts," but I immediately noticed things that hadn't been cleaned up properly.
I'm fairly certain there are more hidden issues like this, which makes me a bit anxious. I guess I had a hunch even before uploading, which is why I prepared the v1.0.0.x versioning ahead of time.

12.
And that is how the SvelteKit Blog Engine came to be!
Ending a post is always awkward, so I'll wrap up by sharing my PageSpeed Insights score.
AdSense is currently pending approval, but the code script is already embedded. Also, CDN caching is set to a 2-minute TTL, so if a test runs while the cache is purged and regenerating, it might impact performance—though I'm not 100% sure of the exact cause, the scores fluctuate quite a bit.
Please treat these scores as a rough reference from an average run.
Once AdSense gets approved, I'll post an updated PageSpeed Insights report.
Have a great day! :)

img-devlog-devlog-why-i-built-a-blog-engine-in-2026-ko-001
Mobile score. (Integrated with AdSense [pending approval], GA4, Google Search Console, and Naver Search Advisor)
img-devlog-devlog-why-i-built-a-blog-engine-in-2026-ko-002
Desktop score. (Integrated with AdSense [pending approval], GA4, Google Search Console, and Naver Search Advisor)

Share this post on social networks

0 Comments

Login is required to write comments.

This post is written in English.

Are you sure you want to delete?

This post is written in English.

인기 포스트

  • Cloudflare Wrangler Login and API Token Configuration Guide in CLI Environments
    2026-07-15 PM9:17:34 (GMT+9)
  • Admin Frequently Asked Questions (FAQ) and Troubleshooting
    2026-07-15 PM9:18:57 (GMT+9)
  • Reader Policy and Frequently Asked Questions (FAQ)
    2026-07-15 PM9:18:27 (GMT+9)
  • Admin Core Features and Dual Editor Overview
    2026-07-15 PM9:19:17 (GMT+9)

태그

#API Token#AccountRestriction#Admin#Animation#Anonymization#Backup#Blog#BlogBlogEngine#BlogEngine#CLI
1 / 6

후원

AboutPrivacy PolicyContact

© 2026 스벨트킷 블로그 엔진 · Powered by Sveltekitblog Engine on Svelte 5

RSS SKBE v1.0.0.9 Share Design