Why I use Jekyll + Web Components

A decade of trial and error to find the right architecture

The Beginning: Blog Platforms

Like most people, I started with popular platforms:

But problems appeared quickly:

I wanted my own land, my own house.

First Attempt: Pure GitHub

Map routes directly to file system structure:

home/README.md        → homepage
about/README.md       → about me
tech/linux/README.md  → tech articles

The Pain of Pure GitHub

“Raw” quickly became painful:

Entering Jekyll

Jekyll gave me my first taste of Template power

But as my needs grew, so did the pain…

Jekyll’s Bottleneck

I wanted interactive charts and dynamic code demos in my articles

In Jekyll’s world, this is a disaster:

Changing a chart’s color means opening Markdown, HTML layout, and CSS files simultaneously

Trying Other Frameworks

Framework Pros Cons
Hugo Extremely fast Template syntax complex, Liquid is easier
Gatsby React ecosystem Too heavy, Webpack + GraphQL setup drains all energy
MDsveX Svelte integration Only works in specific folders, no flexible structure
SvelteKit Closest to auto md → html Folder structure still less flexible than Jekyll

SvelteKit’s closest approach:

src/
├── routes/
│   ├── blog/[slug]/
│   └── docs/[slug]/
├── content/
│   ├── blog/
│   └── docs/
└── lib/

But folder structure is still not flexible enough

Discovering Web Components + Svelte

First time experiencing the real power of Separation of Concerns

Write a clean component in Svelte, compile to standard Web Component

In Markdown, just write:

<my-chart data="[1,2,3]"></my-chart>

Jekyll + WC = Islands Architecture

Jekyll becomes a content routing shell

Svelte takes over all interactive logic

This is the modern Islands Architecture concept. Astro is the ultimate expression of this idea.

But in the end, Jekyll + WC is the most flexible.

Conclusion: Why Jekyll + WC

No complex frameworks, no build pipeline Just Markdown + standard Web Components

Thank You!