The Flutter Android shell for CBGPU Web: mobile navigation, authentication-session persistence, notifications, home-screen widgets and the official EduSet login bridge. Current native version: 1.0.7 / build 8.
git clone https://github.com/CBGPU-Engineering/CBGPU-app.git
cd CBGPU-app
flutter pub get
flutter test test/app_navigation_test.dart test/eduset_login_policy_test.dartCI uses Flutter 3.47.8. Prepare your own Firebase configuration and private Android signing settings for a fork. Do not commit keystores or service-account keys. Backend schemas and Edge Functions have moved to CBGPU-backend; they are not maintained in this native client repository.
Download signed APKs. vX.Y.Z tags must match
pubspec.yaml; increase the Android build number for each new app update.
The android-release GitHub environment restricts signing secrets to release
tags. The workflow verifies the signing certificate and publishes an APK plus
SHA256SUMS. Local builds use flutter build apk --release with the same signing
key if they must update an existing installation.
The repository includes other platform targets, but they need their own setup and device validation. Policy tests do not certify physical phone behavior. See CONTRIBUTING.md and migration notes.
Original code is Apache-2.0; dependencies retain their own licenses.
The trusted app.cbgpu.com WebView bridge exposes the installed package version
from Android's package manager. The website checks /api/app-release at startup,
on return to the foreground, and every 30 minutes while visible. It offers an
optional update only for a newer Android build; dismissing it snoozes that build
for 24 hours. Shipped apps before 1.0.8 lack version reporting and receive the
upgrade notice once a build >=9 is published. Browser users are never prompted.
After building with the existing release signing key, publish on the host with:
python3 scripts/publish-android-release.pyThis verifies package identity, source version and the existing APK certificate,
backs up the previous APK privately, replaces the download atomically, and writes
android-release.json last. The web service reads that host manifest at runtime,
so future APK publications do not need a web rebuild. Never advertise a build
before its verified APK is available. Android still asks the user to install the
update; silent installation is not used.