A social travel app for hotel guests to connect, share experiences, and discover local activities together.
Marriott Connect is a React Native mobile application built with Expo that enables hotel guests to:
- Connect with fellow travelers based on shared interests
- Discover local experiences and activities
- Join or create group events
- Earn Marriott Bonvoy points through app engagement
- Framework: React Native with Expo SDK 54+
- Language: TypeScript
- Navigation: React Navigation v7
- Backend: Firebase (Authentication, Firestore, Storage)
- Maps: React Native Maps
- State Management: React Hooks + Context API
- Styling: StyleSheet API with theme constants
marriott-connect/
├── src/
│ ├── screens/ # App screens/pages
│ ├── components/ # Reusable UI components
│ ├── navigation/ # React Navigation setup
│ ├── lib/ # Core logic and utilities
│ │ ├── types/ # TypeScript type definitions
│ │ ├── services/ # API and service integrations
│ │ └── utils/ # Helper functions
│ ├── constants/ # Theme, colors, config
│ └── hooks/ # Custom React hooks
├── assets/ # Images, fonts, icons
├── app.json # Expo configuration
└── App.tsx # Root component
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher)
- npm or yarn
- Expo CLI:
npm install -g expo-cli - Expo Go app on your iOS/Android device (for testing)
- iOS Simulator (Mac only, via Xcode)
- Android Studio (for Android Emulator)
git clone https://github.com/your-org/marriott-connect.git
cd marriott-connectnpm installor
yarn installCopy the example environment file and fill in your Firebase credentials:
cp .env.example .envEdit .env and add your Firebase configuration:
FIREBASE_API_KEY=your_api_key
FIREBASE_AUTH_DOMAIN=your_auth_domain
FIREBASE_PROJECT_ID=your_project_id
FIREBASE_STORAGE_BUCKET=your_storage_bucket
FIREBASE_MESSAGING_SENDER_ID=your_sender_id
FIREBASE_APP_ID=your_app_idTo get Firebase credentials:
- Go to Firebase Console
- Create a new project or select existing
- Go to Project Settings → Your apps → Add app → Web
- Copy the configuration values
Create a Firebase project with the following services enabled:
- Authentication (Email/Password, Google, etc.)
- Cloud Firestore (for database)
- Storage (for image uploads)
- Cloud Messaging (optional, for push notifications)
Start the Expo development server:
npm startor
expo startThis will open the Expo Dev Tools in your browser.
Requirements: macOS with Xcode installed
npm run iosor press i in the Expo Dev Tools terminal.
First-time setup:
- Install Xcode from the Mac App Store
- Install Xcode Command Line Tools:
xcode-select --install - Open Xcode and install iOS Simulator
Requirements: Android Studio with Android SDK installed
npm run androidor press a in the Expo Dev Tools terminal.
First-time setup:
- Download and install Android Studio
- Open Android Studio → Settings → Android SDK
- Install latest Android SDK (API 33+)
- Create a virtual device (AVD) via Tools → AVD Manager
- Set up
ANDROID_HOMEenvironment variable:export ANDROID_HOME=$HOME/Library/Android/sdk export PATH=$PATH:$ANDROID_HOME/emulator export PATH=$PATH:$ANDROID_HOME/platform-tools
-
Install Expo Go app from:
-
Start the development server:
npm start
-
iOS: Scan the QR code with your Camera app Android: Scan the QR code with the Expo Go app
Troubleshooting:
- Make sure your phone and computer are on the same WiFi network
- If QR code doesn't work, try entering the URL manually in Expo Go
- Use tunnel mode if on different networks:
npm start --tunnel
npm start- Start the Expo development servernpm run android- Start on Android emulatornpm run ios- Start on iOS simulatornpm run web- Start web version (experimental)
- User authentication with Firebase
- Profile creation with interests/vibes
- Location-based user discovery
- Real-time chat with other guests
- Event creation and RSVP system
- QR code check-ins
- Marriott Bonvoy points integration
- Push notifications
- Maps integration for local discovery
| Variable | Description | Required |
|---|---|---|
FIREBASE_API_KEY |
Firebase API key | Yes |
FIREBASE_AUTH_DOMAIN |
Firebase auth domain | Yes |
FIREBASE_PROJECT_ID |
Firebase project ID | Yes |
FIREBASE_STORAGE_BUCKET |
Firebase storage bucket | Yes |
FIREBASE_MESSAGING_SENDER_ID |
Firebase messaging sender ID | Yes |
FIREBASE_APP_ID |
Firebase app ID | Yes |
FIREBASE_MEASUREMENT_ID |
Firebase analytics ID | No |
The app requests the following permissions:
iOS:
- Location (when in use and always) - To show nearby events
- Camera - For profile photos and QR codes
- Photo Library - To select profile pictures
Android:
ACCESS_FINE_LOCATION- Precise locationACCESS_COARSE_LOCATION- Approximate locationCAMERA- Camera accessREAD_EXTERNAL_STORAGE- Read photosWRITE_EXTERNAL_STORAGE- Save photos
Access at http://localhost:19002 when running npm start
- Install React Native Debugger
- Start the app and shake device (or Cmd+D on iOS, Cmd+M on Android)
- Select "Debug"
- Expo: Logs appear in terminal where you ran
npm start - iOS: Use Xcode → Window → Devices and Simulators
- Android: Use
adb logcator Android Studio Logcat
expo logineas build --platform ioseas build --platform androidFor detailed build instructions, see Expo EAS Build Documentation.
Metro bundler issues:
expo start --cleariOS build fails:
cd ios && pod install && cd ..Android build fails:
cd android && ./gradlew clean && cd ..Dependencies issues:
rm -rf node_modules
npm install- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Expo Documentation
- React Native Documentation
- React Navigation
- Firebase Documentation
- TypeScript Handbook
Proprietary - Marriott Connect
For issues or questions:
- Create an issue in the repository
- Contact the development team
- Check the Expo Forums
Built with ❤️ by the Marriott Connect Team