Moves the mobile app from a connectivity scaffold to a real Phase 1 app: - Migrate off Expo Go onto a local custom dev client (expo-dev-client, built via expo prebuild + expo run:android against the local Android SDK — no EAS account needed). Needed because react-native-mmkv requires native code Expo Go doesn't ship. - Persisted, MMKV-backed TanStack Query cache (PersistQueryClientProvider) plus expo-image, so a relaunch renders the last-known feed/pets/ notifications instantly instead of a blank screen while refetching. - ActivePetContext: every pet-scoped procedure requires an explicit petId server-side (no server-side "current pet"), ported from web's ActivePetContext, MMKV-backed instead of localStorage. - Bottom Tabs (Feed/Explore/Notifications/Pets) mirroring the web app's actual mobile nav, with Messages as a header button rather than a tab (matches web). Feed, PostCard, PawButton reactions, pet discovery grid, notifications list, and a conversations list are all wired to the real backend and verified against the live database. - Design tokens/components extended with PostCard/PawButton/PetAvatar/ PetIdentityBadges, all styled from the existing src/theme/tokens.ts. - Fixed a react/react-dom version mismatch surfaced along the way, and handle Clerk's needs_client_trust (Device Trust) sign-in status with an email-code step. Verified end-to-end in the Android emulator against pawfeed.org: feed scrolls and paginates with real posts/images, paw reactions toggle optimistically and persist, pet switching updates every screen, and notifications/explore show live data.
38 lines
936 B
JSON
38 lines
936 B
JSON
{
|
|
"expo": {
|
|
"name": "PawFeed",
|
|
"slug": "pawfeed-mobile",
|
|
"scheme": "pawfeed",
|
|
"version": "1.0.0",
|
|
"orientation": "portrait",
|
|
"icon": "./assets/icon.png",
|
|
"userInterfaceStyle": "light",
|
|
"newArchEnabled": true,
|
|
"ios": {
|
|
"supportsTablet": true,
|
|
"bundleIdentifier": "org.pawfeed.app"
|
|
},
|
|
"android": {
|
|
"package": "org.pawfeed.app",
|
|
"adaptiveIcon": {
|
|
"backgroundColor": "#E6F4FE",
|
|
"foregroundImage": "./assets/android-icon-foreground.png",
|
|
"backgroundImage": "./assets/android-icon-background.png",
|
|
"monochromeImage": "./assets/android-icon-monochrome.png"
|
|
},
|
|
"predictiveBackGestureEnabled": false
|
|
},
|
|
"web": {
|
|
"favicon": "./assets/favicon.png"
|
|
},
|
|
"plugins": [
|
|
"expo-router",
|
|
"expo-secure-store",
|
|
"expo-font",
|
|
"expo-dev-client",
|
|
"expo-image",
|
|
"expo-system-ui"
|
|
]
|
|
}
|
|
}
|