01
Challenge
Geneva turns the whole city into something to explore. The main delivery challenge was to give users low-friction creation and interaction without losing the feeling of a live community, while keeping Discover, Filter, and Listen consistent across the complete journey. We framed the engagement around the smallest production-worthy flow first, then expanded the scope without weakening the underlying component and data model.
02
How we built it
We first separated the core product rules from external services, then defined typed boundaries for every integration. The team delivered Discover, Filter, and Listen as end-to-end flows, adding retries, idempotent operations, validation, and observable failure states before polishing the interface. This kept third-party behaviour from leaking into the product experience and made later integrations easier to add. The implementation was anchored by React Native, Expo SDK 54, Expo Router, and TypeScript, with shared TypeScript contracts across the frontend and service layer.
03
Delivery
The delivered scope brought Discover, Filter, Listen, and Navigate into one coherent cross-platform mobile release. Live updates, recovery states, and operational feedback are part of the core flow rather than late-stage patches. For Geneva, the practical result is a product that communicates its value quickly while giving the team a maintainable base for continued delivery in social & community.