Hocam — Private Lesson & Payment Tracker
"Hocam" is what a player calls their coach.
Role
A solo project. I designed it, modelled the data, wrote the lesson and payment logic with its tests, built every SwiftUI screen, and set it up on his phone.
Stack
Overview
"Hocam" is what a player calls their coach. It's an iOS app I built for a football coach who gives private lessons, so his students, the lessons he's given, and the money he's taken in all sit in one place. Payments follow how he actually sells: a payment is a package, "six lessons at this rate", not a charge tied to one session. So the app keeps two counts that don't have to match, lessons done and lessons paid for. It runs on his phone alone, in Turkish, with no account and no server; everything stays on the device.
What it does
- IA home screen with his students, a month that dots the days with lessons, and a panel for the day he taps
- IILessons that hold a date, time, pitch, and a note, each with a box to tick when it's done
- IIIPayments as prepaid packages, with an optional per-lesson pitch fee taken off so the total is what he keeps
- IVPitches it remembers, sorted by how often he uses them, instead of retyping the same places
- VAn evening reminder the night before that lists the next day's lessons
Screens







Technical notes
- IBuilt with SwiftUI and SwiftData for iOS 17. No network and no accounts; the SwiftData store on the phone is the whole backend.
- IIThe money rules live in the model as plain computed values, total collected, lessons paid for, lessons done, each covered by unit tests. Marking a lesson done and taking a payment are kept independent on purpose, because that's how prepaid coaching works.
- IIIA cancelled lesson is a soft cancel, not a delete, so it drops out of the counts and the calendar but can be brought back. Past payments keep the fee they were made at, so changing a rate never rewrites history.
What I learned
The hard part wasn't the screens, it was matching the rules to how he already works. Lessons done and lessons paid for being two separate things sounds like a bug until you watch a coach sell a ten-lesson package and work through it. I spent more time on that than on anything you can see.
