The story
Shipped in 2014. Rebuilt in 2026.
I shipped the first version of CardMate in 2014. Objective C, local SQLite, no backend, no account. The idea was simple: I was tired of my wallet bursting with plastic from CVS, Target, Starbucks, and a dozen more. So I built the thing I wanted to use myself.
For the next three years it ticked along at roughly 150 downloads a day. In the summer of 2017 something happened and downloads spiked briefly to a peak of 2,000 that month. I still have no idea what caused it. Then the baseline came back. By the end of that run the app had collected about 6,760 total downloads from users in the US, UK, and Spain.
In 2018 I walked away. Not because the app was broken. I got pulled into Agile coaching, building processes, training teams, consulting. The app sat untouched. For nearly 8 years it was dead code on the App Store, earning nothing, aging quietly as iOS evolved around it.
I came back in 2026 because I missed building useful things for actual people. The old Objective C code is still in the archive folder, kept as a reference. The architecture choices from 2014 held up surprisingly well (offline first, no backend, no account). The implementation needed a full rewrite to meet 2026 expectations.
Current stack: Expo SDK 57 + React Native, local SQLite, optional iCloud backup, Face ID lock, Adapty for the paywall, StoreKit 2, home screen widget, alternate app icons, dark mode. UI localized in six languages.