A React Native Expo app built for rural Indian users, competing with Swiggy/Zomato. Built with modern architecture using Expo Router, TypeScript, and React Native Paper.
- Authentication System: Login, signup, and password recovery
- Restaurant Discovery: Browse restaurants by cuisine, rating, and location
- Food Ordering: Add items to cart, customize orders, and checkout
- Order Tracking: Real-time order status and delivery tracking
- User Profile: Manage personal information, addresses, and preferences
- Location Services: GPS-based delivery location and restaurant discovery
- Multi-language Support: Support for Indian languages (planned)
oneQlick/
βββ app/ # Expo Router file-based routing
β βββ (auth)/ # Authentication screens
β β βββ _layout.tsx # Auth navigation layout
β β βββ login.tsx # Login screen
β β βββ signup.tsx # Signup screen
β β βββ forgot-password.tsx # Password recovery
β βββ (tabs)/ # Main app tab navigation
β β βββ _layout.tsx # Tab navigation layout
β β βββ home.tsx # Home screen with featured content
β β βββ search.tsx # Restaurant search and filters
β β βββ orders.tsx # Order history and tracking
β β βββ profile.tsx # User profile and settings
β βββ (modals)/ # Modal screens
β β βββ _layout.tsx # Modal navigation layout
β β βββ cart.tsx # Shopping cart (to be implemented)
β β βββ filter.tsx # Advanced search filters (to be implemented)
β β βββ location-picker.tsx # Location selection (to be implemented)
β βββ _layout.tsx # Root navigation layout
β βββ index.tsx # App entry point
βββ components/ # Reusable UI components
β βββ ui/ # Basic UI components
β βββ common/ # Common app components
β βββ forms/ # Form components
βββ hooks/ # Custom React hooks
β βββ useAuth.ts # Authentication state management
β βββ useCart.ts # Shopping cart management
βββ services/ # API and external services
βββ utils/ # Utility functions
β βββ helpers.ts # Common helper functions
βββ constants/ # App constants
β βββ colors.ts # Color scheme definitions
βββ types/ # TypeScript type definitions
β βββ index.ts # Main type definitions
βββ assets/ # Static assets
β βββ images/ # App images
β βββ icons/ # App icons
β βββ fonts/ # Custom fonts
βββ package.json # Dependencies and scripts
- Framework: React Native with Expo
- Navigation: Expo Router (file-based routing)
- Language: TypeScript
- UI Library: React Native Paper (Material Design)
- State Management: React Hooks + Context
- Storage: AsyncStorage for local data persistence
- Icons: Expo Vector Icons
- Maps: React Native Maps
- Location: React Native Geolocation
- Image Picker: React Native Image Picker
- Animations: React Native Reanimated
- Login: Email/password authentication with validation
- Signup: User registration with profile information
- Forgot Password: Password recovery via email
- Home: Featured restaurants, food categories, quick actions
- Search: Restaurant search with filters and sorting
- Orders: Current and past orders with status tracking
- Profile: User information, settings, and preferences
- Cart: Shopping cart management and checkout
- Filters: Advanced search and filter options
- Location Picker: GPS and manual location selection
- Node.js (v18 or higher)
- npm or yarn
- Expo CLI
- Android Studio / Xcode (for device testing)
-
Clone the repository
git clone <repository-url> cd oneQlick
-
Install dependencies
npm install
-
Start the development server
npm start
-
Run on device/simulator
# Android npm run android # iOS npm run ios # Web npm run web
Create a .env file in the root directory:
EXPO_PUBLIC_API_URL=your_api_url_here
EXPO_PUBLIC_GOOGLE_MAPS_API_KEY=your_google_maps_api_keyUpdate app.json with your app details:
{
"expo": {
"name": "oneQlick",
"slug": "oneqlick",
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"splash": {
"image": "./assets/splash.png",
"resizeMode": "contain",
"backgroundColor": "#FF6B35"
}
}
}- Primary: #FF6B35 (Orange)
- Secondary: #FFD93D (Yellow)
- Accent: #6BCF7F (Green)
- Success: #4CAF50
- Warning: #FF9800
- Error: #F44336
- Headings: Bold, 18-32px
- Body: Regular, 14-16px
- Captions: Regular, 12px
- Small: 8px
- Medium: 16px
- Large: 24px
- Extra Large: 32px
- Secure authentication with JWT tokens
- Input validation and sanitization
- Secure storage of sensitive data
- API rate limiting (planned)
- SSL/TLS encryption (planned)
- Lazy loading of screens and components
- Image optimization and caching
- Efficient state management
- Minimal re-renders with React.memo
- Optimized bundle size
npm testnpm run test:e2eexpo build:androidexpo build:iosexpo build:web- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue in the repository
- Contact the development team
- Check the documentation
- β Basic authentication
- β Restaurant browsing
- β Order management
- β User profile
- π Advanced search and filters
- π Shopping cart and checkout
- π Payment integration
- π Order tracking
- π Multi-language support
- π Push notifications
- π Social features
- π Analytics dashboard
Built with β€οΈ for rural Indian communities # oneQlick-User-App