[object Object]

← back to Beverlyhillsvideos App

initial scaffold

3521bf446965f7203b622036f421efa4e0ee358a · 2026-08-06 08:22:15 -0700 · Steve

Files touched

Diff

commit 3521bf446965f7203b622036f421efa4e0ee358a
Author: Steve <steve@designerwallcoverings.com>
Date:   Thu Aug 6 08:22:15 2026 -0700

    initial scaffold
---
 README.md | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 app.json  |   6 ---
 2 files changed, 132 insertions(+), 6 deletions(-)

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..c8b6c00
--- /dev/null
+++ b/README.md
@@ -0,0 +1,132 @@
+# Beverly Hills Videos — iOS App
+
+An elegant guide to Beverly Hills dining, shopping, hotels, and culture built with Expo (managed workflow) + TypeScript + expo-router.
+
+## Stack
+
+- Expo SDK 57 (managed workflow)
+- React Native 0.86.2
+- expo-router 57 (file-based routing, native bottom tabs)
+- react-native-webview — Home, Videos, Guides tabs
+- react-native-maps — native Map tab with 44 Beverly Hills locations
+- @react-native-async-storage/async-storage — Favorites persistence
+- @react-native-community/netinfo — offline detection
+
+## Development
+
+```sh
+# Install dependencies
+npm install
+
+# Start Expo dev server (scan with Expo Go or a dev client)
+npm start
+
+# iOS simulator
+npm run ios
+
+# Android emulator
+npm run android
+
+# TypeScript check
+npm run typecheck
+```
+
+## EAS Build
+
+First, install the EAS CLI and log in:
+
+```sh
+npm install -g eas-cli
+eas login
+```
+
+### Development build (simulator)
+```sh
+eas build --platform ios --profile development
+```
+
+### Preview build (device, internal distribution)
+```sh
+eas build --platform ios --profile preview
+```
+
+### Production build
+```sh
+eas build --platform ios --profile production
+```
+
+## EAS Submit (App Store)
+
+Before submitting, fill in the TODOs in `eas.json`:
+
+| Field | Location | How to find it |
+|---|---|---|
+| `appleId` | `eas.json` → `submit.production.ios` | Your Apple ID email address |
+| `ascAppId` | `eas.json` → `submit.production.ios` | App Store Connect → App → App Information → Apple ID (numeric) |
+
+`appleTeamId` is already set to `3VAV3KMNZK`.
+
+Also replace `TODO_REPLACE_WITH_EAS_PROJECT_ID` in `app.json` with the project ID from your Expo dashboard after running `eas build` for the first time (it will prompt you).
+
+### Submit to App Store
+```sh
+eas submit --platform ios --profile production
+```
+
+Or build and submit in one step:
+```sh
+eas build --platform ios --profile production --auto-submit
+```
+
+## Project Structure
+
+```
+app/
+  _layout.tsx          Root layout (SplashScreen, StatusBar)
+  (tabs)/
+    _layout.tsx        Bottom tab navigator (Home, Videos, Map, Guides)
+    index.tsx          Home tab — beverlyhillsvideos.com/
+    videos.tsx         Videos tab — /videos.html
+    map.tsx            Map tab — native react-native-maps screen
+    guides.tsx         Guides tab — /restaurants.html
+components/
+  BHVWebView.tsx       Shared WebView: pull-to-refresh, offline state, external link routing
+  FilmModal.tsx        In-app WebView modal for restaurant film pages
+  FavoritesModal.tsx   Favorites list sheet
+constants/
+  Colors.ts            Brand palette (cream, ink, green, gold) + map marker colors
+hooks/
+  useFavorites.ts      AsyncStorage-persisted heart toggle
+  useNetworkStatus.ts  NetInfo online/offline state
+types/
+  index.ts             MapLocation, Film, LocationType types
+assets/
+  icon.png             1024x1024 app icon
+  splash.png           Splash screen
+  map-locations.json   44 Beverly Hills locations
+  films.json           44 restaurant film entries
+```
+
+## App Store Guideline 4.2 (Not a bare WebView)
+
+The app satisfies Guideline 4.2 through the native Map tab, which provides unique, app-only functionality:
+
+- Native `react-native-maps` map with 44 curated Beverly Hills markers
+- Markers colored by category (restaurant, store, doctor, lawyer)
+- Tappable callouts with Call, Menu, and Watch Film actions
+- Filter chips by location type
+- Favorites system persisted via AsyncStorage
+- Native Share integration
+- Offline detection with graceful retry
+
+## Apple SDK Requirement
+
+Apple requires the iOS 18 SDK (Xcode 16) or later for all App Store submissions.  
+EAS Build's `production` profile uses a managed image that ships the current Xcode — no additional configuration needed.
+
+## Configuration Notes
+
+- `ios.bundleIdentifier`: `com.abrams.beverlyhillsvideos`
+- `appleTeamId`: `3VAV3KMNZK`
+- Location permission: NSLocationWhenInUseUsageDescription set in `ios.infoPlist`
+- NSAllowsArbitraryLoads enabled for beverlyhillsvideos.com HTTP compatibility
diff --git a/app.json b/app.json
index 763aabf..de4ce6a 100644
--- a/app.json
+++ b/app.json
@@ -6,12 +6,6 @@
     "orientation": "portrait",
     "icon": "./assets/icon.png",
     "userInterfaceStyle": "light",
-    "newArchEnabled": true,
-    "splash": {
-      "image": "./assets/splash.png",
-      "resizeMode": "contain",
-      "backgroundColor": "#151310"
-    },
     "assetBundlePatterns": [
       "**/*"
     ],

← 79d7e54 auto-save: 2026-08-06T08:19:59 (6 files) — app.json app/_lay  ·  back to Beverlyhillsvideos App  ·  app: suppress in-app AdSense in WebView (clean no-tracking 4 ea85595 →