Creator — Building a Ghost Theme (Work Log)
Building Creator, a free open-source multipurpose Ghost theme — documented step by step, in the open.
This is the build log for Creator — a free, open-source multipurpose Ghost theme for builders, makers, and software engineers. I'm building it in the open and journaling every step so anyone who wants to build their own Ghost theme can follow the same path.
What Creator is
One theme that's a home for the whole maker: blog, portfolio, project showcase, courses, and newsletter — tag-driven, fast (Lighthouse 100), accessible, and easy to fork.
Why I'm building it
- To learn Ghost deeply — Handlebars, contexts,
routes.yaml, dynamic collections, membership. - To ship something the community can actually use or learn from.
- imswarnil.com already runs on Ghost; I want to understand the platform at that level.
How to read this log
Each part below is one work session: the task, what I did, what broke, how I fixed it, and notes for anyone repeating it. Read them in order — they build on each other.
The stack
- Ghost (local install) + the official Starter theme as a base
- Handlebars templating
- Tailwind CSS + daisyUI
- Claude Code in the workflow
Build in the open. Document the boring parts too — that's where people actually get stuck.
Advertisement
How I built it
Build log
- Part 1 — Initial Ghost setup — installing Ghost locally
- Part 2 — Navigating the Ghost admin panel
- Part 3 — Cloning the Starter theme as the base
- Part 4 — Understanding Ghost theme structure
- Part 5 — Setting up Git and open-sourcing the theme
- Part 6 — Integrating Claude into the theme workflow
- Part 7 — Handlebars basics in Ghost
- Part 8 — Working with the {{#foreach}} loop and post object
- Part 9 — Understanding contexts and the {{#is}} helper
- Part 10 — Building reusable partials
- Part 11 — Using Ghost Handlebars helpers
- Part 12 — Adding Tailwind CSS to a Ghost theme
- Part 13 — Setting up the build and dev workflow
- Part 14 — Integrating daisyUI and dark mode
- Part 15 — Defining the theme design system
- Part 16 — Building the post card component
- Part 17 — Styling Koenig editor content
- Part 18 — Understanding routes.yaml in Ghost
- Part 19 — Creating tag-driven collections
- Part 20 — Building custom templates
- Part 21 — Creating a custom project/showcase layout
- Part 22 — Building series / course-style grouping
- Part 23 — Building the homepage
- Part 24 — Building author and tag archive pages
- Part 25 — Setting up membership and the Portal
- Part 26 — Adding the newsletter and subscribe form
- Part 27 — Adding SEO and structured data (JSON-LD)
- Part 28 — Optimizing performance (Lighthouse)
- Part 29 — Validating with gscan and accessibility audit
- Part 30 — Packaging and releasing the theme
Open thread
Issues & feedback
Found a bug? Have a feature request? Open an issue below — no GitHub account required, and yes, I actually triage these.
The end. Or is it?
Liked this? There's more where that came from.
I build things like this for fun — and, occasionally, for money.
No projects were harmed in the making of this page.