

Client
Dishcover iOS App
Client
Dishcover iOS App
Industry
Restaurant Discovery App
Industry
Restaurant Discovery App
Dishcover iOS App
Dishcover iOS App
A restaurant discovery app for Australian food lovers. From first screen to App Store approval — built fast, built right, built to last
A restaurant discovery app for Australian food lovers. From first screen to App Store approval — built fast, built right, built to last.
Location
Australia
Location
Australia
A restaurant discovery app for Australian food lovers. From first screen to App Store approval — built fast, built right, built to last.
Dishcover iOS App
A restaurant discovery app for Australian food lovers. From first screen to App Store approval — built fast, built right, built to last.
Dishcover iOS App
Firebase Authentication
Apple Sign In
Google OAuth
Session Persistence
01
Authentication & Sign In

Firebase Authentication
Apple Sign In
Google OAuth
Session Persistence
01
Authentication & Sign In

02
User Journey
The home feed serves smart collections based on time of day: Morning Coffee on a weekday, Date Night by evening, Rooftop in summer. Tapping into any collection shows restaurants in list or map view with cuisine and price filters. A heart saves directly to a personal collection.
Home Feed
Collections
Restaurant Detail
Map
View
Saved Places
The home feed serves smart collections based on time of day: Morning Coffee on a weekday, Date Night by evening, Rooftop in summer. Tapping into any collection shows restaurants in list or map view with cuisine and price filters. A heart saves directly to a personal collection.
Home Feed
Collections
Restaurant Detail
Map
View
Saved Places
02
User Journey
Google Places API
Bayesian Ranking
Firestore
Two-layer Cache
Native Share
Google Places API
Bayesian Ranking
Firestore
Two-layer Cache
Native Share
Built on Google Places API, Firebase Firestore, and a Bayesian ranking engine. Two-layer caching cuts API cost by 90%. Geofenced to Sydney, Melbourne and Brisbane. Native iOS sharing built in.
Built on Google Places API, Firebase Firestore, and a Bayesian ranking engine. Two-layer caching cuts API cost by 90%. Geofenced to Sydney, Melbourne and Brisbane. Native iOS sharing built in.
03
Tech Aspects
03
Tech Aspects
Every collection can be viewed in list or map mode. Pins show the restaurant name and live rating. Tapping a pin surfaces a card — photo, price, distance, and open status, matching exactly what the app shows.
50+ restaurants pinned per search
03.1
Map View
03.1
Map View
Every collection can be viewed in list or map mode. Pins show the restaurant name and live rating. Tapping a pin surfaces a card — photo, price, distance, and open status, matching exactly what the app shows.
50+ restaurants pinned per search
Most apps surface paid placements first. Dishcover doesn't. A Bayesian ranking algorithm orders every result purely on merit — review volume weighted against score. A new spot with 5★ from 3 friends never outranks a trusted venue with 4.7★ from 2,000 genuine reviews. You always see what's actually best, not who paid most.
0 paid placements ever
Most apps surface paid placements first. Dishcover doesn't. A Bayesian ranking algorithm orders every result purely on merit — review volume weighted against score. A new spot with 5★ from 3 friends never outranks a trusted venue with 4.7★ from 2,000 genuine reviews. You always see what's actually best, not who paid most.
0 paid placements ever
03.2
No Ads.
Pure Algorithm.
03.2
No Ads.
Pure Algorithm.
The share button on any restaurant page triggers the iOS native share sheet, exactly as shown. Users can send a restaurant directly to friends via Messages, WhatsApp, Instagram, or any installed app. No custom share flow needed it uses the OS.
1 tap to share any restaurant
The share button on any restaurant page triggers the iOS native share sheet, exactly as shown. Users can send a restaurant directly to friends via Messages, WhatsApp, Instagram, or any installed app. No custom share flow needed it uses the OS.
1 tap to share any restaurant
03.3
Native Sharing
03.3
Native Sharing
Every restaurant card is powered by Google Places: real photos, live ratings, opening hours, price range, and phone numbers. Data is layered: Firestore syncs user profiles and saved places in real time, while AsyncStorage caches feeds for 6 hours and restaurant details for 7 days. The result: 90% fewer API calls on return visits and an app that loads instantly even on slow networks.
90%fewer API calls via two-layer cache
Every restaurant card is powered by Google Places: real photos, live ratings, opening hours, price range, and phone numbers. Data is layered: Firestore syncs user profiles and saved places in real time, while AsyncStorage caches feeds for 6 hours and restaurant details for 7 days. The result: 90% fewer API calls on return visits and an app that loads instantly even on slow networks.
90%fewer API calls via two-layer cache
03.4
Google Places API & Data Storage
03.4
Google Places API & Data Storage
Google Places API powers every restaurant card: photos, live ratings, opening hours, phone numbers, and review excerpts. EAS compiled the native binary in the cloud. Privacy policy deployed to Vercel. Approved on App Store.
Google Places API
EAS Build
TestFlight
App Store Connect
Vercel
04
Key Details
Google Places API powers every restaurant card: photos, live ratings, opening hours, phone numbers, and review excerpts. EAS compiled the native binary in the cloud. Privacy policy deployed to Vercel. Approved on App Store.
04
Key Details
Google Places API
EAS Build
TestFlight
App Store Connect
Vercel

Expo Application Services compiles a native iOS binary entirely in the cloud — no Xcode, no Mac build server required. The project is pushed to Expo's infrastructure, dependencies are installed, and a signed .ipa is produced ready for TestFlight distribution. Every build is reproducible from the same commit.
04.1
EAS Cloud Build
Configure
eas.jsondefines the build profile (simulator, internal, production). Bundle ID and Apple Team ID are set once.
Push
eas build --platform iosuploads the project archive to Expo's build queue.
Compile Expo installs CocoaPods, compiles Swift/ObjC, signs with the provisioning profile, and produces a
.ipa.
Download A signed build artefact is available to download or submit directly to TestFlight.
0 local Xcode builds required



04.1
EAS Cloud Build
Expo Application Services compiles a native iOS binary entirely in the cloud — no Xcode, no Mac build server required. The project is pushed to Expo's infrastructure, dependencies are installed, and a signed .ipa is produced ready for TestFlight distribution. Every build is reproducible from the same commit.
Configure
eas.jsondefines the build profile (simulator, internal, production). Bundle ID and Apple Team ID are set once.
Push
eas build --platform iosuploads the project archive to Expo's build queue.
Compile Expo installs CocoaPods, compiles Swift/ObjC, signs with the provisioning profile, and produces a
.ipa.
Download A signed build artefact is available to download or submit directly to TestFlight.
0 local Xcode builds required



Apple's review process requires a complete submission package before any build goes public. Screenshots, metadata, a privacy policy URL, entitlement declarations, and correct capability configuration all need to be in order.
04.2
App Store Submission
Privacy Policy: Deployed to Vercel (
dishcover.app/privacy). Required for any app that uses Sign In with Apple or collects location data.
Screenshots: 6.7" screenshots at 1320×2868px capturing every key screen. Required in App Store Connect before submission.
Entitlements: Sign In with Apple, location services (
NSLocationWhenInUseUsageDescription), and photo library access declared inapp.json.
Review: Submitted via App Store Connect. Apple review completed within 24 hours. Approved on the first submission — no rejections.
1st submission: approved immediately
Production release followed a staged rollout: internal TestFlight testing, then a phased App Store release. The app is live on the Australian App Store, geofenced to Sydney, Melbourne and Brisbane, with real-time Firestore sync and a CDN-cached backend that handles load without additional infrastructure.
04.3
Shipped to Production
TestFlight internal: Build distributed to internal testers. UI, auth flow, and data accuracy verified across devices.
Production EAS build:
autoIncrement: trueineas.jsonbumps the build number automatically. Signed with distribution certificate.
App Store release: Promoted from TestFlight to public release via App Store Connect. Phased rollout enabled.
Live: Available on the Australian App Store. Firestore, Google Places, and Vercel-hosted privacy policy all running in production.
Live on App Store
4
Stages from concept to App Store: Auth, Journey, Tech, Launch
90%
Reduction in Places API calls through two-layer caching
10k+
Restaurants ranked using Bayesian scoring across 3 cities
0
App Store rejections
A restaurant discovery app for Australian food lovers: smart collections, map view, and App Store-ready infrastructure, built from scratch in a single sprint. Your idea deserves the same. What started as a concept is now live on the App Store, designed, built, and shipped by Ruvo.
If you have a product you want brought
to life, let's talk.
From first screen to App Store
in one sprint.
From first screen to App Store in one sprint.
A restaurant discovery app for Australian food lovers: smart collections, map view, and App Store-ready infrastructure, built from scratch in a single sprint. Your idea deserves the same. What started as a concept is now live on the App Store, designed, built, and shipped by Ruvo. If you have a product you want brought to life, let's talk.











