Mobile apps
CartUser ships with 3 native Flutter mobile apps: User (customer shopping), Seller (vendor management), and Delivery Boy (order delivery). Source code included. All apps share the same backend API.
The 3 apps
| App | Purpose | Users |
|---|---|---|
| User App | Customer shopping experience | End shoppers |
| Seller App | Manage products, orders, earnings | Marketplace vendors |
| Delivery Boy App | Pick up orders, deliver, mark complete | Delivery personnel |
User App features
- Browse products by category, brand, search
- View product details with image gallery, reviews, variants
- Add to cart, wishlist, compare
- Multi-step checkout with address, payment, order notes
- Order tracking with real-time status updates
- Push notifications (new offers, order updates)
- Wallet + reward points
- Live chat with sellers
- Multi-language + multi-currency
- Social login (Google, Facebook)
- Biometric login (fingerprint, face)
Seller App features
- Dashboard with earnings, orders, top products
- Add/edit products with camera photo upload
- Manage inventory + stock
- Receive instant order notifications
- Update order status (Placed โ Delivered)
- Chat with customers
- Withdraw earnings
- View reviews + reply
Delivery Boy App features
- See assigned deliveries with pickup + drop locations
- In-app navigation to addresses
- Mark order as Picked Up โ On the way โ Delivered
- Collect signature / photo at delivery
- View earnings (per delivery commission)
- Chat with customer mid-delivery
Apps + backend
All 3 apps connect to your CartUser backend via REST API. Same URL, different login type.
API base URL
Apps need to know your backend URL. Set in app's
core/strings/endpoints.dart
baseUrl=https://yourdomain.com/api
Required backend setup
- Backend installed + accessible via HTTPS (apps require SSL)
- Admin โ Settings โ AI Configuration โ not required for apps
- Admin โ Settings โ SMS Gateway โ optional, needed for OTP login
- Admin โ Settings โ Push Notification โ set Firebase server key for FCM
- Admin โ Settings โ App Settings โ upload onboarding screens (intro slides)
Firebase push notifications
- Create Firebase project at console.firebase.google.com.
- Add Android + iOS app to your Firebase project.
-
Download
google-services.json(Android) andGoogleService-Info.plist(iOS). -
Replace files in app source:
android/app/andios/Runner/. - Get Firebase Server Key from Firebase Console โ Project Settings โ Cloud Messaging.
- Paste into CartUser admin โ Settings โ Push Notification โ FCM Server Key.
- Test notification: Send test notification from Firebase console to the app.
Building APK / IPA
Requirements
- Flutter SDK 3.32.8
- Dart SDK 3.8.1
- Android Studio (for Android builds)
- Xcode 14+ (for iOS builds โ Mac only)
Quick build commands
# Android APK
cd cartuser-user-app
flutter clean && flutter pub get
flutter build apk --release
# Android App Bundle (for Play Store)
flutter build appbundle --release
# iOS (Mac only)
flutter build ios --release
cd ios && pod install && xcodebuild -workspace Runner.xcworkspace -scheme Runner archive
Output locations
-
APK:
build/app/outputs/flutter-apk/app-release.apk -
App Bundle:
build/app/outputs/bundle/release/app-release.aab -
iOS: Open
ios/Runner.xcworkspacein Xcode โ Archive
Branding / customisation
App name + logo
-
From the project directory run the following command:
rename setAppName -t android -v "YOUR_APP_NAME"โ -
iOS: From the project directory run the following command:
rename setAppName -t ios -v "YOUR_APP_NAME"โ -
Replace launcher icons:
- Use flutter_launcher_icons package
- Navigate to
assets/icons -
Replace
assets/icon/app_logo.pngwith your 512ร512 logo - IMPORTANT : Do not change the name of the files.
- Run
flutter pub run flutter_launcher_icons
-
Replace splash screen:
android/app/src/main/res/drawable/andios/Runner/Assets.xcassets/LaunchImage.imageset/
Colors + theme
Edit lib/themes/color_scheme.dart in app source โ change
primary, accent, background colors. App auto-rebuilds.
Onboarding screens
Set from CartUser admin (not in code). Admin โ Settings โ App Settings
โ add 3-5 onboarding pages with heading, description, image. App
fetches these via /api/config.
App Signing
Follow the official Flutter documentation: Create an upload keystore and reference it in your app
NOTE: In the key.properties file, change
the value of storeFile to the path of your keystore file.
To make it easier, you can put the
upload-keystore.jks file in android/app/.
Then change the value of storeFile to
app/upload-keystore.jks.
Publishing to stores
Google Play Store
- Create developer account ($25 one-time)
- Create new app listing
- Upload
app-release.aab - Fill required metadata: screenshots, description, privacy policy URL
- Submit for review (1-7 days)
Apple App Store
- Apple Developer Program ($99/year)
- Create app in App Store Connect
- Upload IPA via Xcode โ Archive โ Distribute
- Fill metadata: screenshots, description, privacy nutrition labels
- Submit for review (1-7 days)
Source code structure
cartuser-user-app/
โโโ lib/
โ โโโ main.dart # Entry point
โ โโโ core/strings/endpoints.dart # API client + endpoints
โ โโโ models/ # Data models
โ โโโ features/ # All UI screens
โ โโโ _widgets/ # Reusable widgets
โ โโโ themes/ #Colors + typography
โ โโโ route/ # All Route
โ โโโ utils/ # Helpers
โโโ assets/ # Images, fonts
โโโ android/ # Android-specific config
โโโ ios/ # iOS-specific config
โโโ pubspec.yaml # Dependencies
Troubleshooting
App can't connect to backend
- Verify backend URL is HTTPS (not HTTP โ iOS blocks HTTP by default)
-
Test API endpoint manually:
curl https://yourdomain.com/api/config -
Check Android
network_security_config.xmlif using HTTP for testing
OTP login not working
- Verify SMS gateway is configured in CartUser admin
- Check credits balance on SMS provider
- Test OTP sending from admin first
Push notifications not arriving
- Re-check Firebase setup (correct google-services.json file)
- Verify FCM Server Key in CartUser admin matches Firebase project
- Send test notification from Firebase console first
- Check device notification permissions for the app