A fully offline React Native (Expo) travel companion app for the Ryan Party's South Africa & Zimbabwe safari, September 15–25, 2026.
Booking Reference: Ryan x 6 — 927743
Operator: The Malcolm Ainscough Collection (TMAC)
| Tab | Screen | Description |
|---|---|---|
| Trip | Overview + Day Detail | Day-by-day itinerary with flight cards, hotel details, activities, and supplier contacts |
| Destinations | Guide + Detail | Full guides for Cape Town, Timbavati, Victoria Falls & Mana Pools — with history, practical tips, and local phrases |
| Wildlife | Field Guide + Detail | 27 species across 4 destinations — searchable, with photos, conservation status, and trip-specific spotting tips |
| Checklist | Spotter's Checklist | Per-destination animal checklist with AsyncStorage persistence and completion celebration |
| Documents | My Documents | Upload, view, and delete local documents (passport, visa, insurance, etc.) — stored only on this device |
100% offline — all content is hardcoded, all images are bundled, zero network calls at runtime.
# 1. Install dependencies
npm install
# 2. Download and compress wildlife images (run once)
npm run download-images
# 3. Start the development server
npm startScan the QR code with your device's camera (iOS) or the Expo Go app (Android).
After the app loads once in Expo Go, enable airplane mode — the app will continue to work fully offline. All content and images are bundled.
-
Install EAS CLI globally:
npm install -g eas-cli
-
Log in to your Expo account:
eas login
-
Configure EAS for this project:
eas build:configure
# Build for TestFlight / App Store
eas build --platform ios --profile productionThis produces a .ipa file that you submit via EAS or Apple Transporter.
# Build for Google Play
eas build --platform android --profile productionThis produces an .aab file for Google Play submission.
eas build --platform ios --profile preview
eas build --platform android --profile preview- Run the iOS production EAS build (above).
- In App Store Connect, create a new app with bundle ID
com.safariguide.ryanparty. - Fill in app name, description, screenshots, and privacy URL.
- Upload the
.ipavia EAS Submit or Apple Transporter. - Submit for review — Apple reviews typically take 24–48 hours.
# EAS can also handle submission automatically:
eas submit --platform ios- Run the Android production EAS build (above).
- In the Google Play Console, create a new app.
- Fill in store listing details, screenshots, and privacy policy.
- Upload the
.aabto the Internal Testing track first, then promote.
eas submit --platform androidsafari/
├── App.tsx # Root entry point
├── app.json # Expo config (bundle ID, icons, splash)
├── assets/
│ └── images/
│ ├── destinations/ # Cape Town, Timbavati, Victoria Falls, Mana Pools
│ └── wildlife/ # All 27 species photos
├── scripts/
│ └── download-images.js # One-time image download script
└── src/
├── data/
│ ├── itinerary.ts # All 11 days + flights from the PDF
│ ├── destinations.ts # 4 destination guides
│ └── wildlife.ts # 27 animal profiles
├── navigation/
│ └── TabNavigator.tsx # Bottom tab + stack navigators
├── screens/ # 8 screens
├── components/ # Reusable card components
└── theme/
└── colors.ts # Earthy safari palette
| Supplier | Phone |
|---|---|
| Commodore Hotel | +27 11 806 6888 |
| Kings Camp | +27 13 751 1621 |
| Palm River Hotel | +263 83 28 44737 |
| Wilderness Ruckomechi | +27 11 257 5000 |
| Wilderness Emergency (After Hours) | +27 82 576 9173 |
| Federal Air | +27 11 395 9000 |
| Wilderness Air Zimbabwe | +263 213 284 3371 |
MIT — for personal use by the Ryan Party, September 2026.