Sonato
Swift, SwiftUI, Core Data, PassKit, APNs, WebSockets, EventKit, Xcode Cloud, Claude Code
For four years I was the sole iOS developer for Sonato, a hospitality platform for private member clubs, owning product, design, and engineering for the app members use to book, order, and get into their clubs.
I rebuilt the app fully native, from scratch in SwiftUI: four years of daily work, from an empty Xcode project to the app a global membership relies on while traveling. It reached a 5-star App Store rating across 250+ ratings, with 99.95% crash-free sessions across its entire release history. I drove feature development and releases day to day and used AI agents as part of my workflow.
Members use Sonato for the whole visit: plan a trip to their club or a partner club, book dining and hotel stays, RSVP to events and buy tickets, message the club in real time, and check in at the door.
The Sonato iOS app in action: discovery, dining, stays, events, and the Wallet pass.
How it’s built
Offline-first
Members are in transit: on flights, in airports, in hotels with throttled Wi-Fi. Reservations, tickets, message history, and member context all live in a local Core Data store and refresh from the server when the network returns, so the app keeps working in airplane mode.
One abstraction, two backends
When the platform's backend was rebuilt on a new system mid-project, I routed every REST call through one abstraction with two backing implementations. Features migrated one at a time while the old backend still served production, and the final cutover was a two-line change that members never noticed.
Around those two choices, the app grew to cover most of what iOS offers:
Real-time messaging
Members chat with their club over a WebSocket connection, and message history reads offline like everything else.
Push notifications
A Notification Service Extension renders chat as communication notifications with the sender's name and photo, and every push deep links to the right screen.
Calendar and contacts
Dining reservations, hotel stays, visits, and event tickets add to the member's calendar, and guest invites start from the system contacts picker.
Camera and photos
Photo capture and library picking feed chat attachments and member profiles, with uploads to a CDN.
All of it runs over REST with token auth, in Dynamic Type and dark mode throughout.
The biggest single project within this work was Sonato Pass, an Apple Wallet membership pass with NFC.
What clubs say
Once you're a Jacquelyn member, the Sonato app gives you everything you need to explore partner clubs, check availability, and plan your visit before you arrive. No complicated process. No additional fees. Just show up.
Coverage
- Exclusive: Sonato Alliance launches app to help you find the best restaurants you’ve never heard of · Forbes, 2022
- As downtown struggles, exclusive SF club Warriors partied at thrives · The San Francisco Standard, 2022
- Launch of Sonato Alliance transforms reciprocity for private member’s clubs · PR Newswire, 2022
Run a club? I build apps for private members clubs.
Related services: iOS apps · Fractional work
Tell me what you're working on
I've got room for a few new projects. Write to me and I'll reply with how I'd approach it. I read every message myself.
hello@nerdtower.com