Skip to content

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

AppWho uses itWhat they do in it
Parent appParents and studentsAttendance, marks, fees, homework, notices, paying fees
Staff appTeachersAttendance, marks, homework, their own leave
Driver appBus driversStart 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.

ParentStaffDriver
Works offline-ish once openedYesYesYes
Push notificationsYesNo — by designNo — by design
Needs Firebase set upYesNoNo
Live location trackingYes

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 everyoneA separate app per client
Who publishesYou, onceEach client, on their own store account
Store accounts neededYours onlyOne per client
BrandingComes from your server per school — logo, name, coloursBaked into their own app
App store listingYour nameTheir name
Effort per new clientNoneA full build, review and release
Store review waitsOnceEvery client, every time
Sells asIncludedA 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 PlayApple App Store
Cost$25 once$99 every year
A Mac requiredNoYes, to build and upload
Review timeHours to about a dayUsually a day or two
DifficultyStraightforwardStricter, 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 http address

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

  1. Decide one-app-for-everyone or per-client — above
  2. Set up push notifications (parent app only)
  3. Build the apps
  4. Publish to Google Play, and the App Store if you have a Mac
  5. Plan how you will ship updates