A comprehensive full-stack food delivery mobile application built with React Native CLI, featuring modern UI/UX, real-time tracking, secure payments, and seamless user experience.
- Google OAuth integration
- Email/Password authentication
- Fingerprint authentication
- Multi-step onboarding flow
- Profile management with photo uploads
- Browse restaurants and menus
- Advanced search and filtering
- Real-time order tracking with Mapbox
- Multiple payment options via Stripe
- Order history and favorites
- Push notifications for order updates
- QR code scanner for restaurant promos
- Photo uploads for reviews and profiles
- Offline mode support
- Dark/Light theme toggle
- Stripe payment integration
- Secure card storage
- Multiple payment methods
- Order receipt generation
- Real-time GPS tracking
- Delivery route optimization
- Restaurant location mapping
- Address management
- React Native CLI - Native mobile development
- TypeScript - Type safety and better development experience
- React Navigation v6 - Navigation and routing
- Redux Toolkit - State management
- React Hook Form - Form handling
- Reanimated 3 - Smooth animations
- Supabase - Backend as a Service
- PostgreSQL Database
- Real-time subscriptions
- Authentication
- File storage
- Database migrations
- Stripe - Payment processing
- Mapbox - Maps and location services
- Firebase Cloud Messaging - Push notifications
src/
โโโ components/ # Reusable UI components
โ โโโ common/ # Generic components (Button, Input, etc.)
โ โโโ forms/ # Form-specific components
โ โโโ ui/ # UI-specific components
โโโ screens/ # Screen components
โ โโโ auth/ # Authentication screens
โ โโโ onboarding/ # Onboarding flow
โ โโโ home/ # Home and main screens
โ โโโ restaurant/ # Restaurant related screens
โ โโโ order/ # Order management screens
โ โโโ profile/ # User profile screens
โโโ navigation/ # Navigation configuration
โ โโโ AuthNavigator.tsx
โ โโโ AppNavigator.tsx
โ โโโ TabNavigator.tsx
โโโ services/ # API and external services
โ โโโ api/ # API calls and endpoints
โ โโโ auth/ # Authentication services
โ โโโ storage/ # Local storage utilities
โ โโโ notifications/ # Push notification setup
โโโ store/ # Redux store configuration
โ โโโ slices/ # Redux slices
โ โโโ index.ts # Store setup
โโโ utils/ # Utility functions
โ โโโ constants/ # App constants
โ โโโ helpers/ # Helper functions
โ โโโ validation/ # Form validation schemas
โโโ hooks/ # Custom React hooks
โโโ context/ # React Context providers
โโโ types/ # TypeScript type definitions
โโโ assets/ # Images, fonts, and static files
โ โโโ images/
โ โโโ icons/
โ โโโ fonts/
โโโ supabase/ # Database migrations and configuration
โโโ migrations/ # Database migration files
โโโ config.toml # Supabase configuration
โโโ seed.sql # Database seed data
- Node.js (v18 or higher)
- React Native CLI
- Android Studio / Xcode
- Supabase CLI (for database management)
- Docker Desktop (for local database development)
- Supabase account
- Stripe account
- Mapbox account
-
Clone the repository
git clone https://github.com/salmanazamdev/nanbites-food-delivery-app.git cd nanbites-food-delivery-app -
Install dependencies
npm install # or yarn install -
Install Supabase CLI
# Windows (using Scoop) scoop bucket add supabase https://github.com/supabase/scoop-bucket.git scoop install supabase # macOS brew install supabase/tap/supabase # Alternative: Use npx for each command npx supabase --version
-
iOS Setup (if developing for iOS)
cd ios && pod install && cd ..
-
Database Setup
# Login to Supabase supabase login # Link to the project (replace with your project ref) supabase link --project-ref your-project-ref # Pull latest database schema supabase db pull
-
Environment Configuration
cp .env.example .env
en.example are just to understand the logic
Fill in your environment variables:
# Supabase SUPABASE_URL=your_supabase_url SUPABASE_ANON_KEY=your_supabase_anon_key # Stripe STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_key # Mapbox MAPBOX_ACCESS_TOKEN=your_mapbox_token # Google OAuth GOOGLE_CLIENT_ID=your_google_client_id
-
Run the application
# Start Metro bundler npx react-native start # Run on Android npx react-native run-android # Run on iOS npx react-native run-ios
# Create a new migration
supabase migration new migration_name
# Apply migrations to remote database
supabase db push
# Check migration status
supabase migration list
# Reset local database (development only)
supabase db resetIf you encounter "migration history mismatch" errors:
# Repair migration history
supabase migration repair --status applied MIGRATION_ID
# Then pull the schema
supabase db pullNote: The global npm install method (npm install -g supabase) is deprecated as of 2025. Use platform-specific installation methods above.
users- User profiles and authenticationrestaurants- Restaurant information and detailsmenu_items- Food items and pricingorders- Order management and trackingorder_items- Individual items in ordersreviews- User reviews and ratingsaddresses- User delivery addressespayments- Payment transaction records
All schema changes are version-controlled through migration files in supabase/migrations/.
- Primary: Orange (#FF6B35)
- Secondary: Dark Blue (#2D3748)
- Success: Green (#48BB78)
- Warning: Yellow (#ED8936)
- Error: Red (#E53E3E)
- Background: Light Gray (#F7FAFC)
- Primary Font: Inter
- Headings: Bold weights (600-800)
- Body Text: Regular (400) and Medium (500)
// Google OAuth + Supabase Auth
// Email/Password with email verification
// Secure token management// Stripe payment processing
// Card tokenization
// Secure payment flow// Supabase real-time subscriptions
// Live order tracking
// Push notifications- Splash Screen - App loading with branding
- Onboarding - 3-step feature introduction
- Login/Signup - Multiple authentication options
- Email Verification - Account confirmation
- Home - Restaurant discovery and featured items
- Search - Advanced filtering and search
- Restaurant Detail - Menu browsing and customization
- Cart - Order review and modification
- Checkout - Payment and delivery details
- Order Tracking - Real-time delivery tracking
- Profile - User settings and order history
# Run tests
npm test
# Run tests with coverage
npm run test:coverage
# Run E2E tests
npm run test:e2e# Android
npx react-native run-android --variant=debug
# iOS
npx react-native run-ios --configuration Debug# Android
cd android && ./gradlew assembleRelease
# iOS
# Use Xcode for production builds- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - If making database changes, create migrations:
supabase migration new feature_amazing_feature
- Test your changes locally:
supabase db reset # Reset local DB with migrations - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Never edit existing migration files - create new ones
- Test migrations locally before pushing
- Include both schema and data changes in migration files
- Add rollback instructions in migration comments when possible
Salman Azam
- GitHub: @salmanazamdev
- Built during internship program
- Inspired by modern food delivery applications
- Special thanks to mentors and the development team
- Authentication system
- Basic food ordering
- Payment integration
- Map integration
- Database migrations setup
- Real-time chat with delivery partners
- Advanced analytics dashboard
- Loyalty program integration
- Multi-language support
- AI-powered food recommendations
- Voice ordering capabilities
- Augmented reality menu previews
- Social features and food sharing
Made with โค๏ธ using React Native & Supabase