DEV Community

Manuel Escrig
Manuel Escrig

Posted on Edited on Originally published at manuelescrig.hashnode.dev

Six apps, one developer: how I run an indie iOS portfolio

Hey everyone 👋 I'm Manuel, an indie iOS developer from Spain. I build and maintain six apps on the App Store, each with its own website and a small backend. There's no team, it's just me. In this blog I want to share the engineering side: how the apps are built and what broke along the way (spoiler: a lot 😅).

The six apps: Email Me, Digital Photo Frame, Photo Booth, Race Results, Geo Adventures and Our Family Album

One structure for every app

All six apps use programmatic UIKit with Auto Layout in code. No storyboards, apart from the launch screens. When I start a new app, I copy the structure of an existing one: Geo Adventures started from Email Me's layout, and Our Family Album from Digital Photo Frame's. So whenever I open any repo, I know exactly where everything is: App/, Configuration/, Controllers/, Models/, Persistence/, Views/.

Being the only developer, this saves me a lot of time.

Shared building blocks

  • RevenueCat for subscriptions and purchases, and Bugsnag for crash reports.
  • A ThemeManager pattern for app themes, reused from app to app.
  • Analytics with one convention in four of the apps: Title Case events, [Screen] Name for screens, and the same base properties on every event. The privacy rule is strict: ids, counts and settings only. Never names, emails, typed text or photos.

Every app has a website and a backend

Each app has a small PHP site behind it, with the landing pages, blog, changelog, feature requests and the app's API. Some of them use SQLite, which is more than enough at this scale. The backends do the work that doesn't belong on a phone: audio transcription for Email Me, the MotoGP archive for Race Results, accounts and scores for Geo Adventures, and share links for Our Family Album.

Localized from day one

Most of the apps ship in 8 or more languages. Translating early is much cheaper than translating a finished app, trust me.

Ship small, ship often

Email Me is on version 7.15 after ten years, and Digital Photo Frame has shipped more than 160 releases. Every changelog thanks the users who reported a bug by name. As a solo developer, that's the best feedback loop I've found. People keep writing to you when they see you listen.

The deep dives

The apps: Email Me · Digital Photo Frame · Photo Booth · Race Results · Geo Adventures · Our Family Album

Thanks for reading! If you have any questions, drop them in the comments, I'm happy to help 🙂

The personal stories behind each app, why I built them and for whom, go out every week on my newsletter: manuelescrig.substack.com.

Manuel

Top comments (0)