I stopped renting my readers
Last spring I clicked the most important button on my own website and hit a locked door.
The button said "Read Free Stories." I'd put it front and center, the thing I most wanted a new reader to press. I pressed it myself, pretending to be a stranger. It dropped me on a membership login. My free story wanted a password.
Fine. Bug. I'll fix it.
Except I couldn't, not in one place. The button lived in WordPress. The story lived behind a membership plugin that gated it by default. The email capture that was supposed to fire lived in MailerLite. And the link a reader clicked to get there in the first place came from a Linktree I updated by hand. Four logins to unbreak one promise. I sat there with four browser tabs open and realized I didn't actually own the path a reader walked from "curious" to "hooked." I rented it, in pieces, from companies that had never read my books.
That was the morning I decided to build my own.
The stack I was renting
Here's what ran Charlie Forêt a year ago. WordPress for the blog and book pages. MailerLite for the email list and the welcome automations. Viraly for scheduling social posts. Linktree for the one link in every bio. A membership plugin bolted onto WordPress to gate patron content. Amazon for the actual selling. And a growing pile of notes about eventually putting the serial on Royal Road and Substack too.
Amazon is the one that stings. It's where the books actually move, and it's the tool that owns the reader most completely. Someone buys my novel, loves it, wants more, and Amazon knows exactly who they are. I don't. I get a sales number and a payout. No name, no email, no way to reach them when the next book lands. My Author Central page can't even link out to my own site or newsletter. It's a storefront where the landlord keeps the customer list and won't let you post your address in the window. I built the audience, and Amazon keeps the names.
Every one of those tools is fine. Some are genuinely good. But stack them up and you get a machine nobody designed. The blurb for my trilogy lived on one page. The buy links lived on a different page. Those two pages didn't link to each other, so the reader I'd just convinced to want the book had nowhere to go. My best sales copy and my actual store were strangers.
And none of it could do the thing I most wanted, which was to make the story itself do something. A book page that just sits there is a poster. I write systems, characters trapped inside them, worlds with rules you can poke at. I wanted a reader to poke. WordPress can fake that with enough plugins, if you enjoy babysitting plugins. I did not.
So the real problem wasn't any single tool. It was that I owned words and rented everything that carried them to a reader. Own the words, rent the readers. That's backwards for a working author, and it gets more backwards every year.
Why an author sat down and learned Elixir
I'm a developer by background, so "build it" was on the table in a way it isn't for everyone. Still, building your own CMS is the kind of decision you're supposed to talk yourself out of. I talked myself into it instead, in April, with a first commit that said Initial project scaffold with devcontainer and design spec and absolutely no idea it would still be going strong at 814 commits.


I picked Elixir and the Phoenix framework. A few reasons, and none of them are "it's trendy," because it isn't.
Phoenix has a thing called LiveView. It lets me build live, interactive pages, a quiz that reacts, a character sheet that fills itself in, a stat screen that updates, without standing up a separate JavaScript app to do it. For one person maintaining everything, cutting an entire front-end codebase out of the plan was the whole ballgame. One language, top to bottom.
Elixir also runs a lot of things at once without falling over. An author platform is boring most of the day and then sends a thousand emails in a minute when a chapter drops. That shape suits the tool.
And I wanted to own the boring, load-bearing parts too. The database is Postgres, sitting on a machine I control. Background jobs run on Oban. Payments go straight through Stripe to my account. Email sends through my own domain. The files download from my own storage. The whole thing deploys to a single host in Virginia for less than what the old subscriptions cost me stacked together. When something breaks now, I open one editor, not four dashboards.
That's the pitch I made to myself. It mostly held up. The parts where it didn't are going to be their own posts, because the failures are more useful than the wins.
What it is now
One codebase runs two live websites. integrationera.com, the terminal-blue home of my Integration Era LitRPG world, and this site, charlieforet.com, the warmer front door to everything else I write, across every genre. Same engine, two completely different faces, and each one keeps its own readers behind its own locked door. A year ago those were a WordPress install and a pile of intentions.
The reader who lands there now gets a real path. A free story that's actually free. A book page with the buy button on the same page as the blurb, imagine that. A newsletter that greets you in the voice of whatever pulled you in. A world you can click into instead of just read about. And under the hood, analytics that tell me which of those actually worked, so I stop guessing.
None of that is finished. A platform is never finished, which I've made peace with. But the spine is in, and the spine is the point of this whole series: own the stack, own the reader.
What I'm going to write about
This is the first of eight posts pulling the machine apart in public. The problems, the shape of the fix, the code where code is interesting, and the parts that broke on the way. The failures get equal airtime.
Running two brands off one codebase without leaking one into the other. Getting off MailerLite without losing a single subscriber. Selling books direct instead of handing every reader and every margin to a retailer. Turning a static book page into a world you can play inside. Giving readers a reason to come back between releases. And escaping WordPress without torching five years of Google rankings, which is the thing that keeps most people trapped.
If you write, or you build, or you just like watching someone take apart the machine they depend on, that's the tour.
If you're here for the fiction, start with the free story. It's free now. I checked.
Follow the build: new Workshop posts land every week, and the newsletter is the only place I promise not to make you dig for the link. Prefer to just read? The first story's waiting, no password.