vibe coding · platform design

My first WordPress plugin

A vibe coding experiment that shipped, and got noticed.

Solo builder across product, engineering, and design, using Lovable, GitHub Copilot, Visual Studio, and WordPress. Summer 2025.

Problem

Every off-the-shelf WordPress text-to-speech plugin I found required a paid subscription.

Move

Prototyped in Lovable, checked the code with Copilot, then cut scope to one job, reliable playback.

Outcome

A free, self-contained narrator on every page of this site, also published on GitHub.

0-to-1Vibe coded from scratch 0Subscriptions required SitewideAvailable WordPress plugin

The context

The narrator play button

I spend a lot of time listening to music, audiobooks, and podcasts. So it made sense to want the same experience on my own website. I also wanted it to be free, self-contained, and not tied to a monthly subscription. What I didn’t expect was that building it might become the most useful thing I did all summer.

This is how a non-developer used AI tools to build and ship a custom WordPress text-to-speech plugin, and what happened next.

Act 1:How I got to Lovable

By mid-2025, vibe coding was all anyone was talking about. I started pelting my soccer buddies with questions about training LLMs and which IDE was worth using. By day they worked as database developers, engineers, and data scientists. They pointed me to tutorials, and I went deeper with Python exercises and Kaggle. I started reading code instead of just copying it.

My first real experiment was in Lovable.dev, trying to build a simple, bot-resistant contact form for this site. I was frustrated with the exercise and losing confidence in its value fast.

My starting prompt

It didn’t go anywhere I wanted. So I pivoted.

Act 2:The idea: a plugin that reads my pages aloud

I’d looked at off-the-shelf WordPress text-to-speech plugins but they all required paid subscriptions. I wanted something free, self-contained, and mine. With those two constraints as a rough product spec, I started prompting in Lovable.

Lovable’s enthusiasm was immediate, and immediately suspicious.

Lovable.dev

By now most of us know that feeling. Either you’re suddenly very talented, or you’re being managed. I pressed on.

An AI-generated calculation of what I did in Lovable and how long it took me.

Act 3:The dream, and then the constraints

At first, the sky seemed like the limit. I was experimenting with multilingual versions, accent choices, and displays that tracked your position in the text. I’d only signed up for a month of Lovable, so I had a built-in deadline.

The early versions required a Supabase connection and third-party integrations that were sometimes working, mostly not. Playback would stall. I kept asking why, and the debugging loop became its own project. I spent every evening describing what I needed in step-by-step detail. Slowly it became clear that the complexity was the problem.

I went back to basics. Just make it play reliably. No frills. No language choices.

I started pulling code artifacts from Lovable and running them through Visual Studio Copilot. It was a useful gut-check on what could break and what might be unsafe. I also leaned on my product background. I’d been through enough user acceptance testing to know when to cut scope, and this widget just needed to ship.

Act 4:What I ended up with

No setup, simple two-state controls, variable playback speeds, dismissible, read time and current position.

It’s the play button in the bottom-right corner of every page on this site. It’s simple, self-contained, and needs no subscription. You can also grab it on GitHub if you want to try it on your own WordPress site.

Building it taught me to read and reason about code I didn’t write. I learned to test in small loops, cut scope without losing the point, and ship something that works. I’d used those skills for clients for years, but never on my own tools.

PostScript

The plugin may have played a role in landing a contract with ServiceNow. That work led to many deep dives into a hyper-accelerated, AI-first approach to shared language and content governance. It also meant orchestrating across business units as teams raced to deliver a simpler experience for commercial admins.

My developer friends scoffed at the idea of shipping production code from a vibe coding app. They remain supportive, and keep encouraging my experiments with MCP servers and integrations with Figma and other tools.

Curious what I would build for you?

The plugin is free on GitHub. The thinking behind it travels.