I shipped an app! It started with a familiar kind of friction: shared listening that didn’t feel shared. My kids each wanted control of the music. I wanted some version of fairness. And somewhere along the way, my Apple Music Replay stopped reflecting my own taste.

That last part stuck with me more than I expected. Replay is supposed to be a kind of memory—a record of what you actually listen to. But in a shared space, it becomes something else entirely. A blended artifact. A compromise.

So I started asking a simple question: What would it look like if shared listening respected individuals?

That question became NextUp Music.

👉 App Store: https://apps.apple.com/us/app/nextup-music-player/id6757323472

👉 Stoked Logic: https://stokedlogic.com/#apps

The Idea (Before the Code)The core idea came quickly:

  • One song at a time
  • One person at a time
  • A clear, fair rotation

No queue battles. No invisible algorithms. No background automation deciding what comes next. Just turns.

But ideas like this are easy to state and surprisingly difficult to hold onto. Every step of building an app introduces pressure to add convenience, automation, or “just one more feature.” So I approached this as a series of small sprints—31 in total—not to move fast, but to stay honest.

The First Few Sprints (Setting the Rules)The early work wasn’t about polish. It was about constraints. (Quick aside for some subtext: I’m hearing a lot of “just tell ChatGPT to build you an app”. These steps below are to help folks understand that there is still A LOT of work that goes into app development. The big shift is simply that you can use agents to write now.)

Sprint 1–3:

Get MusicKit working. Prove that turn-based playback is even possible. Frame listening as a “session” (or a ride), not an endless stream. That shift—from infinite feed to bounded experience—ended up shaping everything.

Sprint 4–6:

Profiles without accounts. Identity without friction. Manual control only. No autoplay. No silent handoffs.

This was an intentional rejection of how most media apps behave. Music doesn’t advance unless someone chooses it. That sounds obvious. It’s not.


Where It Got Interesting (And Harder)Around the middle sprints, the app started to feel real—and that’s where the tension showed up.

Recent Picks (Sprint 7)

This solved a very practical problem: choosing a song shouldn’t require starting from scratch every time. But it had to stay lightweight. No permanent history. No heavy-handed recommendations.

Search + Context (Sprints 8–9)

Search needed to feel like part of the session, not a separate universe. You’re not browsing all of Apple Music—you’re choosing your next song, right now.

Visual Calm (Sprint 10)

Most media apps are dense. I wanted the opposite. Big, glanceable elements. Especially in a car.

Error Tolerance (Sprint 11)

Real life is messy. Songs get skipped. Connections drop. The app needed to absorb that without breaking the experience or blaming the user. By this point, I realized something: I wasn’t just building features. I was defending a philosophy.


Replay Shield (The Feature That Made It Click)The moment the app fully made sense was Replay Shield.

Songs played in NextUp don’t affect your Apple Music Replay.

It’s a small sentence. But it solves something surprisingly emotional. If you’re a musician practicing the same track over and over…

If your kids are deep into a very specific phase…

If shared listening is part of your daily life…

Your Replay stops feeling like you. Replay Shield gives that back. And once that was in place, the rest of the app snapped into focus. This wasn’t just about fairness. It was about ownership of listening history.


The Later Sprints (Power Without Breaking Trust)The final stretch of development was about adding capability without losing the original intent.

Session End + Recap (Sprint 14)

Give the listening experience a sense of closure. A beginning, middle, and end.

Cruise Mode (Sprint 25)

Auto-advance turns—but carefully. Not autoplay. Still bounded. Still human.

Onboarding (Sprint 28)

Shift from explaining buttons to teaching philosophy. What is this app trying to be? Remind (or teach) folks that this is not a typical music player.

Monetization (Sprints 22, 27)

This part mattered more than I expected. I had to decide what should never be behind a paywall. Turn-taking. Core functionality. Those had to remain intact.

Only after that did I layer in optional enhancements.

App Store Readiness (Sprint 31)

Clean up everything. Remove the scaffolding. Make it feel like a real product, not a project.


Building With AI (What Actually Happened)I used ChatGPT and Codex throughout this process. But not in the way people often assume. There’s a narrative right now that you can just ask for an app and it appears. That wasn’t my experience.

The tools were powerful. They accelerated things. They handled details I would have struggled with on my own.

But they didn’t:

  • Hold the product vision
  • Make design decisions
  • Understand tradeoffs in real contexts
  • Decide what not to build

At best, they were collaborators. Which meant I still had to show up with clarity.

It’s not just about writing code; it’s about owning the vision of the app. And maybe more importantly:

This whole idea that ChatGPT can write an app for you—it’s not automatic.

You can move faster now. But you still have to steer.


The Workflow (If You Want to Try This Yourself)If you’re curious about building your own app using a similar approach, here’s what actually worked for me:

  1. Start with a real problem Not an idea. A friction you’ve felt repeatedly.
  2. Define constraints early What will this not become? Hold that line.
  3. Work in small, named sprints Each sprint should have a clear intention. Not just a feature, but a reason.
  4. Build, test, reflect, repeat Don’t try to architect everything upfront. Let the product reveal itself.
  5. Use AI as a collaborator, not a shortcut Ask specific questions. Iterate. Stay involved.
  6. Protect the core experience Every new feature should earn its place without breaking what made the app work in the first place.
  7. Ship when it feels coherent—not perfect There were plenty of things I could keep refining. At some point, you have to release it into the world.

Where This LandedNextUp Music is now live!! It’s a small app. Intentionally so.

It doesn’t try to recommend music. It doesn’t try to optimize your listening. It doesn’t try to become a platform. It just creates a system where shared listening feels fair, personal, and calm.

And for me, that’s enough.

👉 App Store: https://apps.apple.com/us/app/nextup-music-player/id6757323472

👉 Stoked Logic: https://stokedlogic.com/#apps


If you try it, I’d be curious what you notice. Not just whether it works—but whether it changes how the moment feels.