Mobile-first collaborative trip and yearbook app with an Expo client, Next.js companion app, Supabase-backed shared project storage, S3-compatible photo upload support, live collaborator invites, and proof PDF export.
apps/mobile: Expo React Native client for iOS and Android.apps/web: Next.js companion app plus API routes for the live shared workspace, draft editor, preview, and invite acceptance.packages/core: shared domain types, development seed data, and book-generation helpers.
- Install dependencies:
npm install-
Copy
.env.exampleto.env.localin the repo root. -
For physical phones, set
EXPO_PUBLIC_API_BASE_URLto your laptop LAN IP, for example:
EXPO_PUBLIC_API_BASE_URL=http://192.168.1.50:3000/api- Start the shared local API and web companion:
npm run dev:web- In a second terminal, start Expo:
npm run dev:mobile- Open the Expo app on the tester phones.
- The web server is already configured to listen on
0.0.0.0, so other devices on the same network can reach it. - In local development without Supabase, the shared project state can still live in
apps/web/data/projects.json. - The phone app now depends on the shared API for mutations. If it cannot reach the backend, cached books stay visible but new changes do not save until connectivity returns.
The web API now supports a hosted mode:
Supabasestores project payloads inphoto_book_projectsS3-compatible object storagestores uploaded photos- API responses re-sign stored photo URLs before returning projects to the app
See:
docs/supabase-photo-book-schema.sqldocs/go-live-checklist.md
cd apps/mobile
npx eas-cli login
npx eas-cli project:init
npx eas-cli build --platform android --profile preview- Android package name:
com.vince.photobookmaker - iOS bundle identifier:
com.vince.photobookmaker - Expo config is now environment-aware in
apps/mobile/app.config.ts - For cloud builds, set
EXPO_PUBLIC_API_BASE_URLbefore runningeas build - If you want the build attached to an existing Expo project, also set
EXPO_PUBLIC_EAS_PROJECT_ID
- Real phone photo import from the device library
- Persistent local project cache on the phone
- Shared API state through the Next.js API
- Hosted Supabase-backed project storage when
SUPABASE_URLandSUPABASE_SERVICE_ROLE_KEYare configured - Remote photo upload flow for S3-compatible storage when
PHOTO_STORAGE_*variables are configured - Draft regeneration from imported photos and notes
- Proof PDF export from the mobile app
- Finalization checks plus proof PDF export for handoff to a real print vendor
- Direct print-vendor checkout
- Live AI enhancement, captioning, location inference, face recognition, and real print fulfillment
- Production-grade permissions and secure multi-tenant access rules
This repo is now closer to a hosted tester build, but the final step to a real private mobile test is still deployment plus environment setup.