Owner-operator 2021–present

Worlds End Books

Brand, build, and run an online comic book store from scratch — including a full platform rebuild when WooCommerce hit its ceiling.

Role

Founder

Client

Worlds End Books

Stack

WooCommerce → Medusa.js · React · Python

Sandman: Preludes and Nocturnes — Worlds End Books sells story arcs as bundles. Issues one through eight of the 1989 Sandman series, two hundred forty dollars for the arc. Issue seven, The Sound of Her Wings, is highlighted as the first appearance of Death.

Context

In early 2021 I started Worlds End Books, an online comic book store built around a simple premise: comics are better when you follow story arcs, not single issues. Most stores organize by publisher and title. I wanted to organize by story.

I’d been doing web work for clients for over a decade. This was the first time I was the client, the developer, the shipping department, and the customer service rep all at once.

The Problem

The early version ran on WooCommerce. It worked. Then it didn’t: not at the scale I needed, not with the inventory complexity I was dealing with, not with the custom arc-bundling product format that was central to how the store sold comics.

WooCommerce wanted me to think about products the way WooCommerce thinks about products. I needed to think about products the way a comic reader thinks about story arcs. Those two things are not compatible at depth.

World's End Booksellers full-stack blueprint. Three primary tiers drawn as an east elevation: I — Catalog (Flask · iPhone), II — Backend (Medusa · Postgres), III — Stage (Next.js · Coolify). Gold connector pipes carry push and read labels between tiers. Title block at left shows the brand mark, wordmark, and a live status indicator reading "live · in trade · 2026".

At the same time I was learning what it actually means to run a small business: cash flow, supplier relationships, shipping software, returns, customer communication. Every conversation I now have with a client about conversion rates or site reliability lands differently because I’ve been on the wrong end of a shipping error at 11pm on a Friday.

Approach

I rebuilt on Medusa.js, an open-source headless commerce platform, with a custom React frontend and a Python inventory management tool I wrote to handle the arc-bundling logic. No off-the-shelf plugin was going to solve the problem I had, so I stopped looking for one.

The Tooling Pipeline: six stops from phone to curated web shelf. I — Capture: photograph the issue with iPhone, file lands at /static/photos/we_8b3a1f.jpg. II — Seed: two-field Flask entry form, title "sandman 1989" and issue number 8. III — Enrich: Grand Comics Database match returns The Sandman (1989) #8 with creators Gaiman, Dringenberg, McKean. IV — Price: eBay Browse API live snapshot, low $48, avg $74, high $112. V — Publish: POST /admin/products returns 200, product linked with story_arc sandman. VI — Surface: /shop/c/sandman collection, 75 issues, issue #8 highlighted. Closing chop: shelved twice — once by issue, once by arc.

The brand had been designed by a hired designer who I gave a deliberate brief: nothing superhero, nothing primary colors, nothing that looks like it belongs in a mall. The result was moody, a little old-world, with a nod to Neil Gaiman’s Sandman. It felt right for a store that takes the medium seriously.

Outcome

Worlds End Books is still running. The rebuild is stable. The arc-bundling format has become the thing customers mention most. It’s the reason people come back.

Building something of your own changes how you do client work. You stop thinking about websites as deliverables and start thinking about them as businesses.

Next project

The Plot 413

View project →