I built a mobile app with Claude Code in 4 days
And I had so much fun doing it
Note: this post contains affiliate links. but the post was 98% written by a human.
I repurposed a useless phone into a dedicated music player that can play songs based on the vibes of my fitness tracker data, with the capability to display the old school Winamp-style visualizations. It’s called Orbn and here’s the repo: https://github.com/earlyspark/orbn
Background
Recently, I received the iKKO MindOne from a Kickstarter I supported last year – I hate large phones and wanted to replace my Jelly Star (which I loved but has an older OS). It had an option for a “no AI OS” configuration that would still be GMS-certified, and that’s what I opted for but iKKO later admitted they couldn’t actually deliver that without breaking Google services, shipped it anyway, and denied my refund. So I ended up with a phone that has no Play Store, no Gmail, no Maps, and no way to update it — essentially useless to me. So, I’ve been wondering what to do with it besides use it as a paperweight.
At the same time, I’ve been seeing the hype around “cyberdecks” (Altoids Cyberdeck, mermaid cyberdeck), and was trying to understand what it is and judge if it’s just ephemeral hype or actually useful. At the very least, some of them look really cool. Is there a way I could somehow use my useless piece of hardware as a component in a cyberdeck? Sure, why not, even though I still don’t quite understand the full extent of what cyberdecks really are. I don’t have a 3D printer or any other cool-looking shell that I can use to wrap the phone in, but I could start with the software.
How I started
I didn’t start by brainstorming ideas, I started with an open-ended conversation with Claude. I picked up the thread where we last left off (around the iKKO phone and how I could get a refund), and asked “maybe i can turn it into a cyberdeck or dedicated music player. look up how other people did this, any cool ideas out there?” The only real requirement I had was that I wanted the music player to play from my trove of mp3s, not from a music streaming service. As I got deeper into the conversation, I realized I could also have some sort of on-device AI to analyze the music, and thought it would be really cool to have a music player that could auto-play songs based on my mood. Since I don’t have an apparatus that can read my mind (yet), I figured my fitness tracker would be the next best thing for getting data about myself in an automated way. I wanted something as frictionless as possible, as I don’t have time to finagle with data entry or tuning.
I explored the feasibility of this and asked Claude to to see if there were apps that already do this, not to copy them, but to get some more ideas on capabilities and features I would want for my personal use case. Is it possible to get the data from Oura and sync it to my app? Could it be realtime or what’s the lag? Could I have an on-device LLM figure out the “mood” of my mp3s and match it with how I’m feeling? There must be some research papers already covering this, so I asked it to look for science papers on how a matching system could work, and to cite the sources. Eventually, I came to a point where I felt confident that Claude knew what I was trying to do, so I asked it to provide a kickoff prompt that I could put into Claude Code to start building. (I did this because I started the conversation in Chat, and then needed to switch to Claude Code to start building.)
Risks & mitigations
I didn’t want to assume the capabilities of Oura, the MindOne, and whether external code libraries existed, so I baked in a discovery & validation phase before building anything. I’ve been in situations where Claude started building and then realized “oops, this thing I suggested doesn’t actually exist” so I wanted to mitigate for that. Could it also sync to Winamp visualizations while the music was playing? Is that even a thing? I asked Claude to help me look into that. (Thank you Ryan Geiss, who created the visualizations that I so loved; and to projectM for making them available: https://github.com/projectM-visualizer/projectm)
When I came up with the idea to build this, it was the night before a long weekend where my child’s school would be closed. This meant that without childcare, I knew I would have an exhausting, time-constrained 4 days ahead of me where I wouldn’t have dedicated focus time to vibe code. Fortunately, Anthropic had released /remote-control earlier this year, that would allow me to connect my phone to my main computer’s local Claude Code session, so I can take a few minutes to prompt here and there during moments of short downtime while trying to wrangle a toddler. (OpenAI’s Codex also has a similar feature that was released recently.) This is what gave me the most leverage while building the app and it’s something I wouldn’t have been able to do before – being able to build software through my phone (essentially) with a few quick prompts in natural language, and being able to review/approve/edit the direction this way is a game-changer. And I’m saying that as someone who’s been in the tech industry, a former front end developer, from back when mobile app development was new.
The other constraint I came across is that I only had a Claude Pro subscription (the lowest paid sub). I kept hitting the usage limit, so I upgraded to Max by the third day 😅 I’ll keep it at least for this month but will likely go back to Pro because I need to conserve my financial budget since I just began my Career Break.
Challenges & lessons learned
I wanted to keep a running TODO list (a roadmap, if you will) where I could continually update based on new discoveries and be able to check things off when complete. I created an /update-specs Skill to periodically ensure that specs & docs & readme were updated as I was completing each milestone. I also used the built-in /security-review Skill to review the code for security vulnerabilities as I was making my commits.
While building, I realized this app doesn’t have to be iKKO-specific. It could just be a mobile app for any Android device and the only thing I may need to adjust is for the screen size. I updated my CLAUDE.md file to ensure that what I was building wasn’t only specific for iKKO, but if it had to be, to flag it for my review.
When I had questions about what it was building or wasn’t sure what direction to go in, I would ask Claude for options, impact, and tradeoffs. But the thing I went back-and-forth on the most didn’t involve code – it was the things that required taste:
app name
tagline
logo
With the naming and tagline, it just produced AI slop. The names it suggested were too generic or already well-known or had sexual connotations (“Throb”, for example). For the tagline, I ended up crafting it myself – this is the description in the repo: “A mobile app that plays music based on the vibes of your fitness data. It runs on Android and uses data from your Oura Ring, and plays nostalgic Winamp visualizers.”
As I was putting the finishing touches on the app, I was contemplating whether I should switch out the default “orb” that Claude had come up with on its own
It was neutral, but also kind of boring. It was something that would be a fine, generic visual for people who wanted to use this app. But I am primarily developing this for myself, for pure personal enjoyment, and because building is fun. I loved being able to bring my idea to life. Ultimately, this is not meant to be popular; I’m building this for a user of 1. So I decided to replace the orb with a cute tamagotchi-inspired mascot. I tried building this with Claude and it didn’t do very well.
i want to create a logo or cute character for this app that will live on the homepage and do simple animations. can you create some candidates for me so i can choose one?
They were all slightly animated and the third one was clearly a sperm. It took 20 iterations 💸 but after providing some images of what I wanted, it came up with Orbn:
So the lesson is that visual taste doesn’t translate well through text – it doesn’t know what “cute” means, or at least, my subjective idea of cuteness.
What I would’ve done differently
In hindsight, I think I should’ve upgraded to Max from day 1. But I didn’t realize my idea would take off and I would get so excited about developing it. The other thing I should’ve done was set it to “Auto” earlier on. I had it set to “Accept edits” because I didn’t trust Claude enough to do things on its own, but it did well without me micro-managing every step and gating permissions.
I also should’ve followed my own advice to “provide an example of good” for anything taste-driven. The mascot conversation could’ve been 3 rounds instead of 20 if reference images had come first. The same applied to the tagline and naming.
Where it goes from here
The ironic part of this journey for me is that I developed and shipped a fully-functioning mobile app not during a typical 9-5 where I have stretches of focus time, but I was able to do it during the harder days, when my energy was low and I only had a few minutes here and there to myself. It was an idea I had on a whim, a desire to turn something useless into something useful, and something that brings me joy whenever I use it now.
I’d love to hook this up to a speaker or build out a shell with speaker components to fully make the cyberdeck dream come true. Let me know if you have any suggestions but otherwise, I will most likely make something out of cardboard (to stay budget-conscious, ofc).
Feel free to take a look and fork it or modify it and use it yourself: https://github.com/earlyspark/orbn. I’m not a mobile developer though, so keep that in mind 😅 or am I, now?








