The Unexpected Lessons Behind My First App Launch
And the challenges no one had warned me about.
Have you ever received promotions for quirky apps and wondered how they came to life?
Or maybe you’ve been curious about the inner workings of their customer service?
With the rise of AI, you might think creating and launching an app has become a breeze. That’s exactly what I thought before diving headfirst into my first product — a simple image finding app.
The ideas started from this very article carrying out AI learning processes; and with zero experience, I decided to take the plunge.
Here’s my story of how a quick project turned into a full-fledged learning experience, complete with unexpected challenges, sleepless nights, and a newfound respect for app developers.
From Concept to MVP: The Smooth Beginning
Creating the app’s core feature was fast, fun, and immensely rewarding. My goal was simple: build a tool to help me quickly search for images in my folders. I worked on a couple of articles to set up the baseline and, before I knew it, I had a working MVP (minimum viable product).
Soon after sharing it, people started asking, “Is it available for me to try it out?” That’s when it hit me — why not make this app available for everyone? Excited by the prospect, I decided to launch it.
Little did I know, the real work was just beginning.
Beyond Building: The Realities of Launch Prep
Once I committed to launching, I realized there was more to consider than I had imagined:
User Registration: Should I allow Google sign-ins or stick to email? I initially offered both but eventually simplified it to email registration.
Monetization: How do I manage subscriptions? I wanted to provide a limited-time free trial and tiered plans — monthly, yearly, and lifetime.
User Communication: Keeping an open line for feedback and improvement was non-negotiable.
I explored tools like Shipfast and boilerplate templates to speed things up. That was a couple of days of investigation, comparison, and hands-on trial. However, I ultimately decided to build my setup from scratch for three key reasons:
Hands-On Learning: Pre-built templates felt like shortcuts. I wanted to understand the fundamentals.
Dependency Conflicts: Many templates had unresolved issues, creating more work than starting from scratch.
Framework Mismatch: The templates didn’t align with my app’s framework, making customization a nightmare.
Every feature turned into a crash course in user experience: handling forgotten passwords, enabling subscriptions, managing logouts, and even adding gifting options. With each addition, the scope of work expanded, driving home the reality that launching an app means addressing user needs from every angle.
Adding these extras to my MVP was both challenging and incredibly fun.
Concepts like email rerouting and hosting, which might seem routine to seasoned techies, felt like new adventures to me. I marveled at Stripe’s thoughtful testing mode and tackled password hashing and Google login for the first time. Each task opened a new door, satisfying my curiosity and fueling my excitement.
I was so confident my MVP would be ready before 2025 — until I ran headfirst into the unexpected time sinks.
The Unexpected Time Sinks
If you break the product process into three steps — building the MVP, adding the extras, and hosting it online — you might assume, as I initially did, that the MVP would take the most time.
The rest? Simple, right? Just toss in a few templates for user registration, handle some basic features, and click a couple of buttons to host.
Soon I realized, my assumptions were not even close. In reality, the time distribution is almost the exact opposite.
Hosting Woes
Initially, I thought cheap hosting services like Namecheap or GoDaddy would suffice. Boy, was I wrong!!!
After multiple crashes and hours of debugging, I discovered these services couldn’t handle the app’s heavy dependencies, like Torch and Transformer. Even after reaching out to support and experimenting with Oracle Cloud, I hit roadblock after roadblock.
I went through a maddening cycle: activating domains, transferring domains, updating hosting specs, setting up email services, and configuring environments — across platforms like Namecheap, GoDaddy, Oracle Cloud, GCP, and AWS. None of them worked, but I gained a wealth of knowledge along the way.
This journey taught me one thing: hosting isn’t as simple as clicking a few buttons. Much respect to infrastructure engineers!
Eventually, I decided to split the app into two parts:
A webpage for user registration, subscriptions, and downloads.
A desktop application for the actual image search.
This separation seemed like a brilliant solution — until I spent countless nights bundling the desktop app into a .dmg file.
Re-package: The Never-Ending Fixes
Firstly, I needed to separate the functionalities between the website and the desktop app, ensuring that each worked seamlessly on its own while maintaining smooth communication with one another.
At first, this process felt manageable — almost easy.
Then came the real challenge: bundling the desktop app.
That’s when the monster truly emerged, revealing one issue after another:
Path Inconsistencies: What worked in development didn’t translate to the standalone app.
App-Website Communication: Session is killing me, maintaining a local database carrying user information proved easier than relying on APIs.
Bundling Challenges: Port conflicts, system permission errors, Apple developer certificates and code signing processes became my nightly battles.
Very often, I get errors that are completely clueless:
Even AI, my helpful assistant, occasionally threw curveballs with hallucinated solutions that led me astray. Imagine a mischievous 3-year-old with 100 years of wisdom guiding your every move.
This process brought a rollercoaster of emotions: surprise, frustration, joy, despair, and everything in between.
The Final Product
Despite the hurdles, I finally have a functional app that runs smoothly on my macOS computer.
Here’s the link if you’d like to check it out:
https://findinfolder.online/
Thank you so much for joining me on this journey and reading all the way through! 🎉 If you'd like to try out the app, I’m excited to offer you a 100% discount with the coupon code SECRETWAIVE. Your thoughts and feedback would mean the world to me—feel free to share your ideas, and together, we can make the experience even better! 😊
Closing Thoughts
Building an app is only 10% of the work; the other 90% involves considerations and implementations outside of coding.
We often focus on writing code to create a seamless user experience, but that’s only the starting point. When it comes to launching an application, you quickly realize the need to address user needs from every angle.
My app-building journey was a rollercoaster of frustration, learning, and growth. The harsh reality? Coding is merely the beginning. Bringing a product to life requires tackling the intricacies of user experience, ensuring system reliability, and committing to ongoing improvements.
If you’re thinking about launching your own app, be prepared for challenges — but know that the rewards are worth it.
Have you faced similar struggles in your projects? Let’s share and learn together!
I stumbled on your Substack randomly, and I'm glad I did. I have been going through a similar ordeal -- using AI to create a case summarization system -- and I completely relate. You're much farther along (my tool is still 3 Python scripts), but now, you've inspired me to put this together on a webpage somehow.
Thanks for sharing what you've learned, especially the challenges of dependency hell.
Congrats on the launch! I will check it out shortly