Two apps, two different problems
One is a tight, permissioned two-role system for a physical space. The other is an open marketplace with chat, live tracking, and money — deliberately different shapes, picked to cover different iOS problems.
Parking Share
Lets apartment residents share their parking spot when they're not using it — an admin manages the building, residents manage their own spot and schedule.
Dog Schedule
A community of dog owners who list their dogs, walk each other's, track walks live on a map, chat, and get paid — every account can be both sides.
Why these two projects
Both apps were built solo, top to bottom — product decisions, UI, data modeling, backend rules, and the unglamorous parts (security rules that actually hold up under a hostile client, push notification plumbing, localization, accessibility toggles like Face ID app-lock). Each one has its own from-scratch visual design system rather than reusing a template, because the interaction model is different enough to need it: Parking Share is a permissioned, physical-space system; Dog Schedule is an open, two-sided marketplace with real-time chat and live location tracking.
Open the case studies for the actual flows, the data model, and a few of the harder problems solved along the way — a Firestore rules bug that only failed in combination, RTL/Hebrew localization, and reconciling two independent proposal types (time vs. rate) on the same booking without one clobbering the other.