Venture · FootyMate
One club, and the two jobs other football apps ignore.
A club-first football app built around two jobs a scores feed treats as an afterthought — a reminder before kickoff, and fixtures in the calendar you already use.
- Status
- Live on the App Store and Google Play
- For
- Supporters who follow one club across twelve leagues and plan their week around the match
- Market
- International
- Current release
- Version 2.0.0 on iOS
The product
FootyMate follows one club. You choose a league and a club once, and from then on the app is only about that club: its fixtures across every competition the data provider publishes for it, its league position and recent form, the match centre while a game is on, and the two things a supporter with a busy diary actually needs — a reminder before kickoff, and the season in a calendar other people can see.
There is no global scores feed, no multi-team following, no news, no video, and no advertising. That restraint is the product, not a gap in it.
Why I built it
Most football apps are built for breadth — every league, every match, a firehose of notifications. The question I kept failing to answer for myself was narrower and more practical: when does my team play next, and will I be free? That is a scheduling problem, not an information problem, and nothing I used treated it as one.
So the two features FootyMate invests most in are the ones a scores aggregator treats as an afterthought: reminders and calendar integration.
Product decisions
- One club, by design. Team selection is a commitment, not a filter. It sets the app’s entire context, and changing it is a deliberate reset rather than a toggle.
- A curated league list, not the provider’s whole catalogue. Twelve competitions are exposed for team selection and the league table. Shipping every league the API returns would have meant shipping every league’s coverage gaps with it.
- Reminders reconcile themselves. The alert schedule is rebuilt from current fixture data, so a moved kickoff moves its reminder, a postponed match loses one, and a device restart changes nothing. One alert per match, never a duplicate.
- The calendar feature can only touch its own events. Every event the app creates is recorded in its own register, and every update and cleanup path reads from that register. An event FootyMate did not create is unreachable by design — which is what makes writing to someone’s real calendar defensible.
- Free users get real alerts, not a nag. The free tier sends occasional match alerts with a minimum spacing rule, and keeps sending them if a subscription lapses.
- The interface states how old its data is. A single status line says when fixtures were last updated, or that saved fixtures are showing, and disappears when data is fresh. A failed refresh never blanks a saved season.
What was interesting to build
The data layer is cache-first around one rule: better data is never replaced by worse. The local database is what the screen renders, the network only adds to it, and every dataset carries the timestamp of its last successful validated refresh. Getting the honest version of “is this current?” into a single line of copy took more design than the fixtures list itself.
The second problem was parity. Both apps are fully native — Swift and SwiftUI on iOS, Kotlin and Jetpack Compose on Android — with no shared codebase. Matching behavior rather than code meant writing the reminder, calendar, and refresh policies down as specifications first, then implementing each one twice against the same set of edge cases.
Availability
Version 2.0.0 is on the App Store for iPhone and iPad running iOS 17 or later, and FootyMate is on Google Play for Android 7.0 and later. Both are free, with an optional FootyMate Premium subscription sold through the relevant store. The consumer product site is at footymate.kanyantamubanga.com.
Interface evidence
One club's season, from the lineup sheet to the table.
Availability
Shipping on both stores, from one specification.
FootyMate is free on the App Store and Google Play. The full product story — supported leagues, what Premium adds, and how reminders and calendar sync behave — is on the dedicated FootyMate site.