A Flutter-based mobile app for local grocery and essentials delivery. Customers browse products, place orders, and receive push notifications.
- Phone authentication — Sign in via OTP
- Location-based delivery — Set address with Google Maps and Places autocomplete
- Product catalog — Browse categories and products
- Cart & checkout — Add items and place orders
- Order tracking — View order status
- Push notifications — Alerts for new orders (requires backend)
| Layer | Technology |
|---|---|
| Framework | Flutter |
| Backend | Firebase (Auth, Firestore, Realtime DB, Cloud Messaging) |
| Maps & Location | Google Maps, Google Places API, Geolocator |
- Flutter SDK
- Android Studio
- Firebase project
- Google Cloud project (Maps & Places APIs enabled)
git clone <repository-url>
cd modern_mart
flutter pub getDo not commit local.properties, google-services.json, or GoogleService-Info.plist.
- Copy
android/local.properties.example→android/local.properties - Add your key:
GOOGLE_MAPS_API_KEY=your_google_maps_api_key - Enable Maps SDK for Android and Places API in Google Cloud Console.
Add SPLASH_LOGO_TOKEN=your_firebase_storage_token to local.properties for the splash screen logo.
- Create a project at Firebase Console
- Add Android and iOS apps
- Download
google-services.json→android/app/google-services.json - Download
GoogleService-Info.plist→ios/Runner/GoogleService-Info.plist
If google-services.json was previously committed:
git rm --cached android/app/google-services.jsonWindows (PowerShell):
.\run.ps1Manual:
flutter run --dart-define=GOOGLE_MAPS_API_KEY=your_keyThe FCM server key must never be in client code. Use a backend (e.g. Firebase Cloud Functions triggered by Firestore writes) to send notifications. Rotate the key immediately if it was ever committed.
- API keys and secrets live in gitignored files
- Rotate any keys that were ever committed
- See SECURING_REPO_KEYS_GUIDE.md in the workspace for a full checklist
Proprietary. All rights reserved.