ZENITH is a cross-platform Flutter app for environmental risk monitoring and personal safety. The app integrates Microsoft Entra (CIAM) authentication and communicates with the ZENITH Python backend for personalized alerts and data.
- Features: Home dashboard, SOS, Alerts, Leaderboard, Profile, and AI onboarding.
- Backend: Python FastAPI service in
ZENITH-Backend/(run locally or use hosted endpoint).
- Flutter (stable) installed — check with
flutter --version(recommended: latest stable release). - Android/iOS tooling configured for your target platforms (Android Studio / Xcode).
- Node or other dev tools only if you add custom dev scripts.
-
Get dependencies:
flutter pub get
-
Create a
.envfile in the project root containing keys used by the app and backend. Example keys:
TENANT_ID=your-tenant-id
CLIENT_ID=your-client-id
REDIRECT_URI=com.example.zenith://auth
DISCOVERY_URL=https://<tenant>.ciamlogin.com/<tenant-id>/v2.0/.well-known/openid-configuration
BACKEND_BASE=http://127.0.0.1:8000/
BACKEND_CLIENT_ID=your-backend-client-idTip: When developing locally, set BACKEND_BASE to the running backend (e.g. http://127.0.0.1:8000/).
- Run on a connected device or emulator:
flutter run- Run on a specific device (Android/iOS):
flutter run -d <device_id>
- Android (release):
flutter build apk --releaseor build app bundleflutter build appbundle - iOS (release):
flutter build ios --release(requires Xcode and proper signing)
- Android: place
google-services.jsonintoandroid/app/. - iOS: add
GoogleService-Info.plisttoios/Runner/and configure signing.
- Run widget/unit tests:
flutter test- Strings and translations follow
l10n/andl10n.yaml. Use Flutter's built-in localization tooling for updates.
- Use
flutter analyzeanddart formatto keep code style consistent. - For authentication flows, ensure
REDIRECT_URImatches your Entra app registration. - When testing Entra flows together with the backend locally, ensure the backend is running and
BACKEND_BASEpoints to it.
- The backend Postman collections live in
ZENITH-Backend/.postman/collections/andZENITH-Backend/postman/collections/— use these to explore endpoints.
- Create a feature branch, add tests, and open a PR against
main. CI workflows are in.github/workflows/.
- App entry:
lib/main.dart - Screens:
lib/screens/ - Services & utils:
lib/services/,lib/utils/ - Assets:
assets/andfonts/
If you'd like, I can also add a short developer HOWTO that shows how to start the backend and the app together for an integrated local flow.