Project Structure
What is in the download, which folder builds which app, and the few files you will edit yourself.
The download at a glance#
Zipkart/
├── customer/ Customer app (Android, iOS) and the customer website
├── store/ Store app (Android, iOS) and the store panel website
├── driver/ Delivery boy app (Android, iOS)
├── admin/ Admin panel (web)
├── functions/ Cloud Functions: the secure server logic (Node.js 22)
├── firebase_setup/ Setup tool: rules, indexes, starter data, one-click deploy
└── documentation/ This documentation (open index.html)
One Firebase project for everything#
All apps and panels share one Firebase project: the same database, the same sign-in, the same storage. A product added in the admin panel appears in the customer app at once. An order placed in the customer app rings in the store app straight away.
Do not create a Firebase project per app
Create one project and connect all four apps to it. Separate projects would not share orders, products or users.
Inside each app folder#
Every Flutter app uses the same layout, so once you know one, you know them all.
customer/
├── lib/
│ ├── main.dart Starts Firebase and the app
│ ├── firebase_options.dart Your Firebase settings (written by FlutterFire)
│ └── app/
│ ├── modules/ One folder per screen group (home, checkout, profile…)
│ ├── services/ Shared logic: sign-in, cart, location, languages
│ ├── repositories/ Reading and writing Firestore
│ ├── models/ Data classes
│ ├── components/ Reusable widgets
│ ├── routes/ Screen addresses
│ └── utils/ Helpers
├── android/ Android project (package name, icon, signing)
├── ios/ iPhone project (bundle ID, icon, permissions)
├── web/ Website files (title, favicon, push worker)
├── assets/ Images, icons and sounds
└── pubspec.yaml Packages and app version
The only files you edit yourself#
Almost everything is a setting in the admin panel. These are the exceptions, because a phone or browser needs them when the app is built:
| What | File(s) | Guide |
|---|---|---|
| Firebase connection | lib/firebase_options.dart, android/app/google-services.json (written for you) |
Connect the Apps |
| Web push settings | web/firebase-messaging-sw.js in customer, store and admin |
Connect the Apps |
| Package name / bundle ID | android/app/build.gradle.kts, Xcode project |
Package Name |
| App name under the icon | AndroidManifest.xml, Info.plist |
App Name & Icon |
| Launcher icon | android/app/src/main/res/mipmap-*, ios/Runner/Assets.xcassets |
App Name & Icon |
| Google Maps key (optional) | android/local.properties, ios/Flutter/Secrets.xcconfig |
Google Maps Key |
| Android signing | android/key.properties + your .jks file |
Android Release |
| Website names | web/index.html, web/manifest.json |
Websites Overview |
| iPhone sign-in values (customer app) | ios/Runner/Info.plist |
Customer Sign-In |
Changed from the admin panel, no code
Shop logo and colours, fonts, display titles, currency, languages and translations, payment gateways, delivery charges, zones, taxes, invoice details, policies, home screen layout, notification and email texts, maintenance mode. See First-Time Setup.