Appearance
Before you build the apps
Read this before touching a build command. Two decisions here change everything that follows, and both are painful to reverse once an app is published.
The three apps
| App | Who uses it | What they do in it |
|---|---|---|
| Parent app | Parents and students | Attendance, marks, fees, homework, notices, paying fees |
| Staff app | Teachers | Attendance, marks, homework, their own leave |
| Driver app | Bus drivers | Start and end trips, share live location |
All three talk to the same server you already installed. They are not separate systems.
What each app can and cannot do
Only the parent app receives notifications
This is deliberate, not a fault.
Push notifications are implemented in the parent app only. The staff and driver apps do not receive them — a teacher is not alerted on their phone, and a driver is not pinged about a trip. Information is there when they open the app.
Say this plainly when selling. A school told "everyone gets instant notifications" will report it as a bug within a week.
| Parent | Staff | Driver | |
|---|---|---|---|
| Works offline-ish once opened | Yes | Yes | Yes |
| Push notifications | Yes | No — by design | No — by design |
| Needs Firebase set up | Yes | No | No |
| Live location tracking | — | — | Yes |
Because staff and driver apps use no Firebase, they are simpler to publish — no Firebase project, no server key, fewer store questions about data collection.
Decision 1: one app, or one app per client?
This is the big one.
| One app for everyone | A separate app per client | |
|---|---|---|
| Who publishes | You, once | Each client, on their own store account |
| Store accounts needed | Yours only | One per client |
| Branding | Comes from your server per school — logo, name, colours | Baked into their own app |
| App store listing | Your name | Their name |
| Effort per new client | None | A full build, review and release |
| Store review waits | Once | Every client, every time |
| Sells as | Included | A paid white-label add-on |
An app ID can only ever be used once, worldwide
The apps currently ship as com.projectworlds.school_erp_parent_app and similar. Google Play and the App Store allow exactly one app per ID, across the entire store.
So the moment a second client wants their own app under their own account, they need their own ID — and changing the ID also means a new Firebase file, a new signing key and a new listing. It cannot be changed after publishing; a new ID is a brand new app, with no existing users.
Decide this before your first release.
Most platform owners start with one app for everyone. Your server already sends each school's own logo, name and colours to the app, so a parent at St Mary's sees St Mary's branding inside your app. That covers most customers, and you can offer a dedicated app as a paid extra for the ones who insist.
Decision 2: which stores?
| Google Play | Apple App Store | |
|---|---|---|
| Cost | $25 once | $99 every year |
| A Mac required | No | Yes, to build and upload |
| Review time | Hours to about a day | Usually a day or two |
| Difficulty | Straightforward | Stricter, rejects more often |
(Prices as of July 2026 — check current rates.)
If you have no Mac, Android-only is a legitimate start. In most school markets the overwhelming majority of parents are on Android.
What you will need
- Flutter installed on the machine that builds the apps
- A signing key for Android — lose it and you can never update that app again
- A Google Play developer account, and an Apple Developer account for iOS
- Your server already installed and reachable over https — the apps will not talk to a plain
httpaddress
The good news about configuration
You do not edit code to point an app at a server or to change its name. Both are passed in at build time:
bash
flutter build apk \
--dart-define=API_ORIGIN=https://erp.stmarys.edu.in \
--dart-define=APP_NAME="St Mary's School"The same source builds any client's app. Details are in the building guide.
Keep your signing key safe, forever
Android apps are signed with a key file. Update an app and the store checks the signature matches. Lose the key and you can never update that app — you would have to publish a new one and ask every user to reinstall.
Back it up somewhere you will still have in five years, along with its passwords.
What order to do this in
- Decide one-app-for-everyone or per-client — above
- Set up push notifications (parent app only)
- Build the apps
- Publish to Google Play, and the App Store if you have a Mac
- Plan how you will ship updates