strata
All Posts Building Things Reflections CS + AI About
← Back to all posts

The Poolside Refactor

On babymoons, mango margaritas, and letting an AI do the typing.

In November, we went to Cancun. Beaches, restaurants, and a calendar with suspiciously little on it. I intended to unplug, and mostly did.

My ideas on LifeRunner followed me in the low-stakes way a hobby does. I’d been wanting to move it off Streamlit for a while. The Python UI had served its purpose, but it looked like a prototype because it was a prototype. Clunky on mobile, cramped layouts, and every “small tweak” turned into a drawn out session, as I pushed the limits on what Streamlit was meant to do. However, the workflow had improved with Claude Code in a major way. I felt like I was ready to graduate to something more modern.

I wanted something that felt like a ‘real app’. But a full rewrite is a big decision when you’ve never done one, and harder still when you can barely describe what you’d be rewriting.

Around the same time, Claude shipped coding support on mobile. The app supported voice dictation. You could talk through changes and have them applied in the repo. From anywhere. It also launched with around $50 in API credits. A fun excuse to experiment.

So, one afternoon by the pool, I opened Claude on my phone and pointed it at the project.

Working poolside in Cancun
The office for the week.

I told it to explore. Read the files, map the structure, and summarize what it thought the app actually was. Then I asked a simple question: if I rebuild this as a modern web app, what would you pick and why?

It came back with a plan: React and Next.js. A clean component structure, modern routing, keep the underlying data model, rebuild the UI properly. Its next question: do you want to start?

I said yes.

What followed was a full rewrite, directed entirely by voice in between poolside margaritas. I’d describe the page we were migrating and Claude would build it. I’d refresh the preview on my phone, point out what felt off, and it would adjust. Page by page, feature by feature, the app moved from “scrappy Python UI” to something that looked and felt like a native mobile app.

The LifeRunner habit tracker rewritten from the pool
The first page rewritten from the pool. The habit tracker, and the core of LifeRunner.

It wasn’t magic. Sometimes it misunderstood me. Sometimes it built exactly what I said, which is a great way to learn you didn’t communicate effectively. The feedback loop was fast. Correct, clarify, ship, repeat.

I didn’t get better at coding that week. I got better at communicating:

  • How to effectively describe layouts
  • Precisely define desired behaviour
  • And overall, learning which details mattered, and which ones were erroneous and the model could reliably assume correctly

It turns out a lot of the hype you see about prompt engineering is not entirely just hype. If the original app took me 50 hours, the rewrite took me 20, and I bet now I could do it in a day or two half paying attention. A reminder from my last post: How else are you supposed to learn other than by using these tools?

In a few short months, my Google spreadsheet had become a custom Python Streamlit app. In a few hours of dictation between margaritas in Cancun, that Python app became a full React web app with a modern UI.

The distance between those two things used to be a career. Now it’s a conversation. I wasn’t the only one realizing this. All around me, I could see non-technical people building software for themselves, closing small gaps in their own lives. In Part 4, the final of this series, we’ll dig into that, and a brief tour of what LifeRunner looks like today.