Inspiration

Often while driving I find myself improvising new lyrics to the songs I love. This was originally meant to pass the time on long solo drives but, more recently, this activity has become an absolute necessity if I want to keep my infant daughter entertained. At the same time, I was thinking about development projects I could start that would use the strengths of the LLM models in new and entertaining ways...

What it does

Paradaoke means "Parody Karaoke". The app uses AI to dynamically generate lyrics to an existing song on the fly. Simply pick any song, choose a mini game (to guide the underlying prompt), and try your best to perform Karaoke with this new creation.

How we built it

This is a SwiftUI iOS app, with a Ruby on Rails backend, built with Cursor as the chosen "vibe provider". I'm an iOS Developer by trade but wanted to see what I could accomplish while leaning into a Prompt Engineering role. I also had a deadline to hit.

My approach was to first write out my goals, plans, and ideas for the project into a markdown directory at the project root. This consisted of a notes.md for ever-flowing ramblings of ideas and much tidier outline.md for the focused core priorities of the project.

For the most part I followed the teachings of Peter Steinberger and Thomas Ricouard, either via borrowing ideas to use in AGENTS.md, cursor setup, or by downloading Apple developer docs in markdown format.

In the early stages, I was building both a backend in Rails and an iOS app in the same repo, in parallel. I realized quickly that I should copy the repo into two instances. I named these directories alpha and bravo. This way I had two distinct local copies of my codebase. I started my work loop:

Create implementation plan, step through side by side throughout the course of the evening. My main work became plan/code review and feature testing. This parallel compute eventually subsided once the alpha settled and I needed to focus on more specific app features, but it was great for getting the project structure put together.

Once I was ready, I started distributing the app to friends and family on TestFlight. I also started working through the App Store distribution process as I knew that would take some time.

Challenges we ran into

The biggest challenge was to stay focused on the evenings goals. I'm a new father, most of the limited time I'm using to write this app is eating into my sleep - I need to make sure I accomplish what I set out to do on any given evening. Make it work, then make it better is the "Core Principle" at the top of my outline.md that is fed into each prompt I write. It is a prompt for the agents as well as myself. I need to stay focused if I'm going to make this deadline.

Another major challenge is licensing music for Karaoke playback. I reached out to existing Karaoke providers and inquired about using their library, but I was denied. So how could I create a Karaoke experience without the Karaoke music? I needed to look elsewhere. Luckily, Apple Music has an under the radar feature, Apple Music Sing, that removes the vocal track from a large subset of songs. I realized the app doesn't need to license music if the user already does via an Apple Music subscription! This was the aha moment I needed to finalize the prototype. This challenge will continue as I know it will be a large hurdle to acquire customers if an Apple Music subscription is strongly recommended for the best app experience. On the flip side, it does offer another monetization opportunity via the Apple Services Performance Partner Program.

Accomplishments that we're proud of

I'm excited and proud that I'm here writing out this submission with my app sitting in the App Store. I started this project in late July, only have two or three hours each night to work on it, and think while still a bit skeletal, the app has great bones to grow with.

It has always been so easy to get distracted on unnecessary details or something new entirely. I'm very proud that I am able to put something into the App Store that people can use and enjoy.

What we learned

I really appreciate the opportunity to work on a meaningful project using this new frontier of agentic coding. I've been able to get hands on experience with a lot of these new tools and models. It's been really great to try out different workflows to see what works best for me. I can't remember the last chunk of time where I've been able to do this type of exploration. It is really an exciting time to be an app developer!

What's next for Paradaoke: Create and Sing

Growth! I just released v1.0.0 to the App Store September 28th. While I have plans to polish the prompt workflow portion of the app under the "Play Now" tab, I need feedback from real users to validate that priority. I intend to kick off launch and re-launch promos for the app to get it out into real users hands.

I also expect to add a more robust reward and feedback system into the app. When a performance is completed, the user should be rewarded with their efforts. They should also be given quick survey to qualify their experience - "Were those lyrics fun? Were they timed well with the original music? etc."

My goal for the next few months will be to make sure customers are excited about Paradaoke and that it is an experience they look forward to sharing with their friends.

Built With

  • chatgpt
  • cursor
  • fly.io
  • grok
  • lrclib.net
  • revenuecat
  • ruby-on-rails
  • sosumi.ai
  • swift
  • swiftui
  • xcodebuildmcp
Share this project:

Updates