A beautiful, modern dating app built with React Native and Expo. Swipe through profiles, match with people, and start meaningful conversations.
Features โข Installation โข Usage โข Project Structure โข Troubleshooting
- ๐ฏ Swipe Interface - Intuitive card-based swiping with smooth animations
- ๐ฌ Real-time Chat - Chat with your matches instantly
- ๐ค User Profiles - Beautiful profile cards with photos and information
- ๐จ Modern UI/UX - Glassmorphism design with gradient backgrounds
- ๐ฑ Cross-platform - Works on iOS, Android, and Web
- ๐ Match Notifications - Get notified when you have a mutual match
- ๐ Location-based - Discover people nearby
- ๐ญ Onboarding Flow - Smooth user onboarding experience
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher) - Download here
- npm (comes with Node.js) or yarn
- Expo CLI - Will be installed globally
- Expo Go app on your mobile device (for testing on physical devices)
git clone https://github.com/YOUR_USERNAME/swipe-app.git
cd swipe-app/SwipeAppnpm installThis will install all required packages including:
- React Native and Expo SDK
- Navigation libraries
- Gesture handlers
- Image picker and location services
- And more...
npm install -g @expo/cliStart the Expo development server:
npm startThis will:
- Start the Metro bundler
- Display a QR code in your terminal
- Open Expo DevTools in your browser
npm run webThe app will automatically open in your default browser at http://localhost:19006
npm run iosNote: Requires Xcode and iOS Simulator to be installed.
npm run androidNote: Requires Android Studio and an Android emulator to be set up.
- Start the development server:
npm start - Install Expo Go on your device:
- Scan the QR code:
- iOS: Use the Camera app
- Android: Use the Expo Go app to scan
- Make sure your device and computer are on the same Wi-Fi network
If you're having trouble connecting, try tunnel mode:
npx expo start --tunnelSwipeApp/
โโโ src/
โ โโโ components/ # Reusable UI components
โ โ โโโ UserCard.tsx # Profile card component
โ โ โโโ MatchModal.tsx # Match notification modal
โ โ โโโ Button.tsx # Custom button component
โ โ โโโ ...
โ โโโ screens/ # App screens
โ โ โโโ AuthScreen.tsx # Login/Registration
โ โ โโโ SwipeScreen.tsx # Main swiping interface
โ โ โโโ ChatScreen.tsx # Chat interface
โ โ โโโ ProfileScreen.tsx # User profile
โ โ โโโ ...
โ โโโ navigation/ # Navigation configuration
โ โ โโโ AppNavigator.tsx
โ โโโ context/ # React Context for state management
โ โ โโโ AppContext.tsx
โ โโโ utils/ # Utility functions
โ โ โโโ colors.ts # Color scheme
โ โ โโโ responsive.ts # Responsive design helpers
โ โ โโโ storage.ts # AsyncStorage helpers
โ โโโ data/ # Mock data
โ โโโ mockData.ts
โโโ assets/ # Images, icons, fonts
โโโ App.tsx # Root component
โโโ app.json # Expo configuration
โโโ package.json # Dependencies
โโโ tsconfig.json # TypeScript configuration
- Swipe Right (Like): Tap the heart icon or swipe right on a card
- Swipe Left (Pass): Tap the X icon or swipe left on a card
- View Profile: Tap on the card to see more details
- Smooth Animations: Cards animate smoothly with rotation and opacity effects
- When you swipe right on someone who also swiped right on you, you get a match!
- Match notifications appear as a beautiful modal with celebration effects
- Matched users appear in your chat list
- Real-time messaging interface
- Chat list shows all your matches
- Clean, modern chat UI
The app is configured with:
- App Name: SWIPE
- Slug: swipe-app
- Orientation: Portrait only
- Permissions: Camera, Photo Library, Location
Currently, the app uses mock data. To connect to a backend:
- Create a
.envfile in theSwipeAppdirectory - Add your API endpoints:
API_URL=your_api_url_hereSolution:
- Install Node.js from nodejs.org
- Restart your terminal/command prompt
- Verify installation:
node --versionandnpm --version
Solution:
npm install -g @expo/cliSolutions:
- Ensure your phone and computer are on the same Wi-Fi network
- Try tunnel mode:
npx expo start --tunnel - Manually enter the connection URL in Expo Go app
Solutions:
- Close and reopen Expo Go app
- Restart the development server:
npm start - Clear Expo cache:
npx expo start -c - Check your internet connection
Solution:
# Clear cache and reinstall
rm -rf node_modules
npm install
npx expo start -cSolution:
# Reinstall TypeScript dependencies
npm install --save-dev typescript @types/react @types/react-native- Ensure Xcode Command Line Tools are installed:
xcode-select --install - For physical devices, ensure your Apple Developer account is configured
- Ensure Android SDK is properly installed
- Set up Android emulator in Android Studio
- Check that
ANDROID_HOMEenvironment variable is set
npx expo build:iosnpx expo build:androidFor more details, see Expo's build documentation.
| Command | Description |
|---|---|
npm start |
Start Expo development server |
npm run web |
Run app in web browser |
npm run ios |
Run app in iOS simulator |
npm run android |
Run app in Android emulator |
- React Native - Mobile framework
- Expo - Development platform and toolchain
- TypeScript - Type-safe JavaScript
- React Navigation - Navigation library
- React Native Gesture Handler - Gesture recognition
- React Native Reanimated - Smooth animations
- Expo Image Picker - Image selection
- Expo Location - Location services
- AsyncStorage - Local data persistence
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License.
Your Name
- GitHub: @eveiljuice
- Expo team for the amazing development platform
- React Native community
- All contributors and users
Made with โค๏ธ using React Native and Expo
โญ Star this repo if you find it helpful!