Skip to content

I made an app!

So, I did a thing. I made an app. Not just any app, but a proper mobile app that's currently on its way into TestFlight beta testing. And let me tell you, the journey from "I should learn mobile development" to "holy shit, I have an app that's almost ready for the App Store" has been... well, let's just say it's been a ride.

What the hell is Cloudodoro?

Cloudodoro is an ADHD-friendly focus timer app. Think Pomodoro technique, but designed specifically for people whose brains work like mine – easily distracted, prone to time blindness, and in desperate need of gentle nudges rather than aggressive alarms.

The name is a play on "Pomodoro" (the time management technique) and "cloud" because the entire app is designed around a calming cloud theme. The interface uses soft purples and lavenders with cloud-like background patterns, creating a serene environment that's perfect for focus work. When you're trying to concentrate, the last thing you need is a harsh, bright interface screaming at you (or is that just me?) – hence the gentle cloud aesthetic.

Cloudodoro App Interface Cloudodoro App Features

The Tech Stack (or, How I learned to stop worrying and embrace React Native)

When I started this journey, I had exactly zero experience with mobile development, but I had dabbled a bit with Expo and React Native. My background is web development, so naturally, I continued with React Native. One framework to rule them all, right?

The stack:

  • React Native with Expo (because I have severe ADHD and wanted the easy path)
  • React Navigation for routing
  • AsyncStorage for local data persistence
  • Expo Audio for gentle notification sounds
  • React Context for state management

I chose Expo because it promised to handle all the annoying native development stuff for me. And for the most part, it delivered. The development experience is smooth, the hot reloading works great, and the build process is relatively painless.

The Development Journey: A Comedy of Errors

Phase 1: "This is easy!"

I started with grand ambitions. "I'll build this in a week!" I told myself. Yeah, famous last words and all that.

The initial setup was actually pretty straightforward. Expo CLI made project creation a breeze, and the basic timer functionality came together quickly. I had a working timer within a few hours, and I was feeling pretty smug about it.

Phase 2: "Why is everything breaking?"

Then reality hit. Audio wasn't working! I spent more time debugging than coding.

The biggest headache was the audio system. I initially tried using expo-av, which is deprecated, and spent hours fighting with it before realizing I should be using expo-audio instead. Classic developer moment – the solution was right there in the documentation, but I was too stubborn to read it properly. I also had to disable iOS notification banners entirely because Expo was being particularly uncooperative with them, though the app still plays custom sounds for timer events.

Phase 3: "Actually, this is starting to work"

After the initial chaos, things started falling into place. The timer worked reliably, the UI looked decent, and the basic features were functional. I added settings, a theme switcher, and basic statistics tracking.

Phase 4: "Let's make it premium"

This is where it got interesting. I decided to implement a freemium model with a $2.99/month subscription. This meant adding:

  • Advanced statistics and analytics
  • Custom notification sounds
  • Timer presets
  • Data export functionality

The premium features were actually fun to build. I enjoyed creating the statistics dashboard and the preset management system. It felt like I was building something genuinely useful.

The Good, The Bad, and The Ugly

The Good

  • Expo is fantastic for rapid development
  • React Native feels familiar if you know React
  • The community is incredibly helpful
  • Hot reloading makes development a joy
  • The app actually works and looks professional

The Bad

  • iOS-only for now (Android is coming, I promise)
  • Audio handling is more complex than it should be

The Ugly

  • The initial UI looked like it was designed by a colorblind toddler, took some time to get it right!
  • I spent way too much time on features nobody will use and ended up scrapping or putting in the "future updates (maybe)" pile.

Lessons Learned (So You Don't Make My Mistakes)

1. Start Simple

Don't try to build everything at once. Get the core functionality working before adding fancy features. My initial scope was way too ambitious, and it showed.

2. Test Early, Test Often

I learned this the hard way. What works on the simulator doesn't always work on a real device. Test on actual hardware as soon as possible.

3. Read the Documentation

I know, I know. But seriously, read the docs. I wasted hours on problems that were solved in the first paragraph of the documentation. RTFM for life yo!

4. Plan Your State Management

React Context is great, but it can get messy quickly. Plan your state structure before you start building.

5. The App Store

Yeah, that is where I am right now, so I cannot really say much about it at this point but boy oh boy am I worried. I have heard stories of great men.. nah, it will not be like that.

The Business Side (Because Apparently Apps Need to Make Money)

I went with a freemium model because:

  1. It's familiar to users
  2. It allows people to try before they buy
  3. It creates a clear value proposition

The free version includes:

  • Basic Pomodoro timer
  • Simple statistics
  • Theme switching
  • Basic notifications

The premium version ($2.99/month) adds:

  • Advanced analytics
  • Custom sounds
  • Timer presets
  • Data export
  • Tons of other features coming soon as well

What's Next?

The app is currently on its way into TestFlight beta testing, and I'm actively looking for testers to help me iron out the kinks before the App Store launch. If you're interested in trying it out and have an iPhone, you can sign up at https://testflight.cloudodoro.app/. Testers get a free lifetime premium subscription when the app launches – not a bad deal, right? Note that I might have to draw from a hat if I get too many testers who offer their time, since Apple only allows a developer a set ammount of promocodes per 6 months.

Once the beta testing is complete and I've squashed the inevitable bugs, I'm planning:

  • App Store launch (the big moment!)
  • Android version (because I'm not a monster)
  • More premium features (because why not?)
  • Better analytics (because data is beautiful)

The Verdict

Would I do it again? Absolutely. The satisfaction of seeing your app in the App Store is incredible. The learning curve was steep, but the payoff was worth it.

The app isn't perfect – no app ever is – but it's functional, useful, and mine. And that's pretty damn cool.

If you're thinking about building an app, just do it. Start small, learn as you go, and don't be afraid to make mistakes. The mobile development community is incredibly supportive, and the tools are better than ever.

Because let's be honest – we all need a little help staying focused sometimes. Even if that help comes in the form of a calming cloud-themed timer app that I built in my spare time.


Cloudodoro is currently on its way into TestFlight beta testing for iOS. App Store launch coming soon, Android version after that (probably).