DineSplit is a mobile application built with React Native and Expo that makes it hassle-free to split bills and share meal expenses with friends. Easily create sessions, add restaurants, assign items to friends, and seamlessly calculate split results!
- Session Management: Start a dining session and add friends to track everyone's orders.
- Restaurant Search & Maps: Integrated with
react-native-mapsandexpo-locationto easily find and add restaurants. - Receipt Capture: Upload and share receipts using Cloudinary and
expo-image-picker. - Bill Calculation: Automatically calculate split totals, including taxes and tips.
- User Profiles & Avatars: Manage your profile and customize avatars inline.
- Modern UI: Smooth interactions and rapid file-based routing.
- Framework: React Native & Expo
- Routing: Expo Router
- State Management: Zustand
- Media Storage: Cloudinary
- Mapping: react-native-maps
- Local Storage: AsyncStorage
-
Install dependencies
npm install
-
Set up environment variables
Copy the
.env.examplefile to.env:cp .env.example .env
The
.envfile should contain at least:EXPO_PUBLIC_API_URL=https://dinesplitbackend-production.up.railway.app/ -
Start the app
npx expo start
In the output, you'll find options to open the app in an Android emulator, iOS simulator, or Expo Go.
app/- File-based routes (Onboarding, Sessions, Splitting, etc.)components/- Reusable UI componentsconstants/- Theme definitions and design system constantsstore/- Zustand global state definitionsutils/- Utility functions (Cloudinary upload, storage configuration)