- The customer application is published for Android and iOS; Cooking Manager is published for Android and designed around store operations.
- My contribution spans sustained product work across the customer application, the manager application, and supporting API behaviour.
Production mobile product
Cooking — Local Homemade Food Marketplace
A production mobile ecosystem connecting customers with nearby local kitchens through Android and iOS applications, supported by a dedicated Android manager app for daily store operations. I contribute across the customer, store, and API layers.

Production product
A production mobile marketplace serving customers and the kitchens fulfilling their orders.
A production mobile ecosystem connecting customers with nearby local kitchens through Android and iOS applications, supported by a dedicated Android manager app for daily store operations. I contribute across the customer, store, and API layers.
Customer demand and kitchen operations meet in the same live marketplace: discovery and ordering on one side, fulfilment and availability on the other.
Product overview
Cooking connects people looking for prepared homemade meals with nearby local kitchens. The product has to make discovery, menu exploration, ordering, and follow-up feel coherent across mobile platforms.
The other side of the marketplace is operational: kitchens need a dedicated manager experience for orders, menus, product availability, and planning throughout the day.
Both applications depend on the same product state, so customer-facing choices and kitchen-side operations must remain consistent as orders and availability change.
- Cross-platform flows must account for Android- and iOS-specific behaviour without drifting into separate products.
- Operational screens must stay legible and responsive on store devices during time-sensitive daily work.
- Authentication, cart state, notifications, and releases need resilient failure handling because they sit on critical user journeys.
My contribution
Full-Stack Mobile Engineer
- Implemented and improved customer marketplace flows covering kitchen discovery, map and list behaviour, menus, favourites, cart state, authentication, sharing, and order-related UX.
- Stabilised favourites and cart interactions, including cache consistency, conflicting selections, and concurrent state updates.
- Improved map rendering, marker behaviour, location edge cases, and navigation between marketplace views on Android and iOS.
- Strengthened authentication callbacks, email-verification recovery, sign-up validation, and user feedback around failure states.
- Worked on Cooking Manager order workflows, notification sound and cancellation behaviour, order-detail legibility, product availability, and tablet-oriented layouts.
- Added and maintained Jest coverage and cross-platform Maestro journeys for core customer flows on Android and iOS.
- Supported production readiness through build-number updates, EAS configuration fixes, Android build troubleshooting, and pre-release QA follow-ups.
- Contributed supporting API fixes for marketplace ordering, catalogue operations, distance ordering, stock validation, and administrative workflows.
Application ecosystem
Cooking operates as two connected product surfaces. The React Native customer application handles discovery, menus, favourites, cart, orders, location, and sharing. Cooking Manager gives kitchens an operational Android experience for orders, menus, availability, and planning. Shared API and data services keep marketplace intent aligned with what kitchens can fulfil, while platform services handle notifications, location, updates, and release delivery.
- Android and iOS marketplace
- Kitchen discovery, search, filters, and maps
- Menus, favourites, cart, orders, and sharing
- Authentication and account flows
- Android store operations
- Order queue and order details
- Menus, products, and availability
- Planning and notification workflows
- Expo Router navigation
- TanStack Query server state
- Jotai client state
- Supabase-backed services
- Jest and React Native Testing Library
- Maestro cross-platform journeys
- EAS Build and app-store release profiles
- Crash and analytics instrumentation
Engineering challenges
- Context
- Favourites, cart selections, availability, and cached server state can change from several user actions and background refreshes.
- Choice
- Harden cache updates, conflict handling, and state transitions, then cover the risky paths with focused tests.
- Tradeoff
- More explicit state coordination adds implementation detail, but avoids stale UI and protects ordering intent.
- Context
- Maps, calendars, authentication callbacks, layout, and native packages do not always behave identically across platforms.
- Choice
- Handle platform-specific edge cases inside a shared Expo codebase and validate core journeys on both operating systems.
- Tradeoff
- Platform-aware branches require continued device testing, while preserving a coherent customer experience and shared product velocity.
- Context
- New and cancelled orders must be noticeable without creating duplicate or misleading alerts during local order actions.
- Choice
- Coordinate audible feedback, cancellation state, and suppression rules around the manager order lifecycle.
- Tradeoff
- Notification logic becomes device-state aware, but better reflects the action the kitchen actually needs to take.
- Context
- Expo upgrades, Android build tooling, native modules, and store build numbers can block otherwise ready product work.
- Choice
- Maintain explicit EAS profiles, resolve native compatibility issues, and treat release configuration as part of the product surface.
- Tradeoff
- Release maintenance is ongoing engineering work, but it reduces last-mile surprises during QA and distribution.
Production reliability and privacy
- Authentication flows include timeout, validation, callback, and verification-recovery handling rather than assuming a single happy path.
- Cart and stock checks defend against stale or conflicting selections before an order advances.
- Error and loading states are treated as part of the mobile UX across marketplace and operational flows.
- Platform configuration separates build profiles and keeps environment-specific values outside public portfolio content.
- The public case study intentionally excludes private endpoints, credentials, customer data, order details, and internal repository links.
Testing and quality
- Jest and React Native Testing Library cover state, hooks, utilities, and customer-facing component behaviour.
- Maestro journeys exercise launch, discovery, filters, store browsing, cart, orders, authentication, favourites, profile, and empty-state paths.
- Cross-platform test setup covers both Android and iOS customer journeys.
- Pre-release QA work includes targeted fixes for navigation, visual consistency, state recovery, and build readiness.
Production proof
- Cooking is publicly available as a live product website and customer marketplace on Google Play and the App Store.
- Cooking Manager is publicly listed on Google Play as the store-facing application for orders, menus, and availability.
- The work demonstrates continued delivery across customer-facing and operational mobile experiences, supported by API and release work.
- Public store listings and product pages provide verifiable production proof without relying on private source links or fabricated metrics.
Customer application
Customers discover nearby kitchens, explore menus, save favourites, build a cart, and follow their orders in the mobile marketplace.
Cooking Manager
Kitchens receive the operational context to manage orders, menus, product availability, and planning in Cooking Manager.
Reflection
What this work demonstrates: Maintaining a coherent marketplace across two applications, two mobile operating systems, live operational state, and evolving native release tooling.
Reflection: Production mobile engineering is as much about state recovery, device behaviour, operational clarity, and release readiness as it is about implementing the visible feature.
- Continue expanding regression coverage around the highest-risk customer and store workflows.
- Keep simplifying operational interactions as real kitchen workflows evolve.
- Maintain platform and release compatibility as Expo, Android, and iOS requirements change.