A modern React Native mobile application built with Expo that provides a smart billing and shopping cart experience with QR code scanning and payment processing.
- Product Scanning: Scan QR codes to add products to cart
- Shopping Cart: Manage items with real-time updates
- Bill Generation: View detailed bills with itemized pricing
- Payment Processing: Integrated payment system
- QR Code Generation: Generate QR codes for products
- Cashier System: Complete point-of-sale functionality
- Cross-Platform: Works on iOS, Android, and Web
- Node.js (version 18 or higher)
- npm or yarn
- Expo Go app (for mobile testing) or Expo CLI
-
Clone the repository
git clone https://divyajaviya01.github.io cd ScanPay -
Install dependencies
npm install # or yarn install
-
Start the development server
# Recommended: Uses npx (no global installation needed) npx expo start # Alternative: Using npm script (runs expo start internally) npm start # Alternative: Requires global Expo CLI installation expo start
-
Scan the QR code with Expo Go app on your iOS or Android device
Note: npx expo start is the most reliable option as it doesn't require global Expo CLI installation and always uses the compatible version.
# For iOS
npm run ios
# For Android
npm run androidnpm run webnpm start- Start the Expo development server (same asexpo start)npm run android- Run on Android device/emulatornpm run ios- Run on iOS device/simulatornpm run web- Run in web browsernpm run lint- Run ESLint for code quality checksnpm run reset-project- Reset project to clean state
This project is configured with TypeScript support. The tsconfig.json includes:
- Expo Types:
.expo/types/**/*.tsandexpo-env.d.tsfor Expo-specific type definitions - React Native JSX: Configured for React Native components
- Strict Mode: Enabled for better type safety
- Module Resolution: Set to Node.js style resolution
The TypeScript configuration ensures proper autocompletion and type checking for all Expo and React Native APIs.
- React Native - Mobile app framework
- Expo - Development platform and SDK
- React Navigation - Navigation and routing
- Expo Camera - Camera functionality for QR scanning
- React Native SVG - SVG rendering for QR codes
- TypeScript - Type safety (optional)
scanpay/
├── components/ # Reusable UI components
│ ├── CustomTabBar.js
│ └── SplashScreen.js
├── screens/ # Main app screens
│ ├── Home.js
│ ├── Scanner.js
│ ├── Bill.js
│ ├── QRCodes.js
│ ├── Payment.js
│ └── Cashier.js
├── utils/ # Utility functions
├── App.js # Main app component
├── package.json # Dependencies and scripts
└── app.json # Expo configuration
-
Install Expo CLI globally (optional but recommended)
npm install -g @expo/cli
Note: You can also use
npx expo startwithout global installation -
For iOS development, install Xcode (macOS only)
-
For Android development, install Android Studio
-
Verify TypeScript support - The project includes proper TypeScript configuration for Expo
- Components go in
/components - Screens go in
/screens - Utility functions go in
/utils
- Requires iOS 11.0 or higher
- Camera permissions required for QR scanning
- Requires Android 5.0 (API level 21) or higher
- Camera permissions required for QR scanning
- Limited camera functionality on web
- Some native features may not be available
- Metro bundler issues: Clear cache with
npm start -c - Dependencies not found: Run
npm installagain - Camera not working: Check camera permissions in device settings
To reset the project to a clean state:
npm run reset-projectThis project is licensed under the MIT License - see the LICENSE file for details.
- Fork the repository
- Create a 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
If you encounter any issues or have questions, please:
- Check the Expo documentation
- Create an issue in the GitHub repository
- Contact the development team
Built with ❤️ using Expo and React Native