October 15, 2025

The App That Nearly Broke Me

indie-devlessonsandroidios

A mutual friend came to me with an idea. He wasn’t in tech and wanted advice on building a football-based social media app. I told him to scale it back. Forget the social media part, focus on the one feature that was actually interesting.

The idea: fans submit their preferred lineup for an upcoming match. Chelsea vs Arsenal, whatever. Pick your formation, drag in your players, submit it. Before the match, we aggregate all the submissions and build “The Fan’s Lineup” - the formation and players that the fans collectively think should start. We’d use real match data, real player info, track injuries, the works. Users pick one club and one country so that submissions come from actual fans, not trolls.

I thought it was a pretty good idea. So I said yes.

The delays

I had 9 years of Android experience and about 6 months of iOS at this point. I knew I could smash out the Android app. iOS would be harder but doable.

What actually happened was I was deep into a refactor of my PSArchives app and I didn’t want to stop mid-way. That took a few months to finish before I even started on FansLineup.

Then Compose happened. Jetpack Compose for Android was gaining traction and I needed to get on that train. FansLineup was my first Compose project. Coming from the imperative world of data binding and XML layouts, it was really hard to wrap my head around. Everything I knew about building Android UIs was suddenly the old way.

The football APIs were also a pain to get going. But eventually I got the Android app built and into testing. My co-founder loved it. We got it live on the Play Store as a preview.

iOS

Then I started on iOS. First app I’d ever built from scratch. SwiftUI was the obvious choice since it’s the declarative equivalent of Compose, but it was still newish and some things felt half-baked. Navigation in particular seemed like Apple hadn’t finished thinking it through.

It was rough. But I got it up to TestFlight.

Apple said no

Then came the Apple review.

I want to be clear, I think Apple’s review process is a good thing. It keeps the App Store clean and safe. The iOS App Store is miles ahead of the Play Store in terms of quality control.

But they rejected us. The reason: we were using real data. Real team names and logos, real player names and faces, real stats, real upcoming matches. You can’t just use “Arsenal” and their logo.

As far as we could tell, if the app was a news or media feed for football, all of that is fair use. But because we were essentially building something Apple classified as a game (even though it wasn’t really a game), they blocked it to protect themselves and by extension us.

I was furious. This thing I’d been building for two years, most nights and weekends, pushing back on life to get it going, all came crashing to a halt over licensing.

We reached out to the clubs to see if we could use their branding. Everyone said no.

The options

I could have pivoted to a generic lineup builder where users add teams, players, and logos manually. But so many of those apps already existed. I even met a guy who’d built one. He was making some income from it, but not enough to quit his day job. And definitely not enough to split two ways with a co-founder.

I dropped it. Cut my losses and walked away. I considered open sourcing the code but didn’t bother in case the trademark stuff came back to bite me later.

The co-founder problem

Here’s where it gets bitter and I know venting in a blog post probably isn’t wise, but it’s honest.

My co-founder brought the original idea. That was his contribution. When it came time to do the work, I spent over a thousand hours coding, learning Compose and SwiftUI from scratch, integrating football APIs, building two native apps and a backend. This was before the AI era too. Every line was written by hand.

His part was supposed to be marketing. When it was finally time for him to step up, his strategy was paid ads.

A coder who can code paired with a marketer who can’t market. It’s a one-sided operation and it leaves a foul taste in your mouth.

What I learned

Getting in bed with other people for an idea is hard. If there’s no big paid opportunity at the end, you’re splitting minimal income two ways. Did the idea ever have legs? Probably not. Should I have accepted the request to build it? No. Would it ever have made enough money to quit my day job? No.

It took me a long time to recover from this one. It genuinely put a damper on collaborating with others for projects. My plan going forward is to stay solo and indie. Build my own things, own them completely, and if they fail at least I only have myself to answer to.

That’s what API Alerts is. My thing, my decisions, my pace. It’s a much healthier way to build.