Mobile App — Overview
The Association App mobile client gives members access to their profile, events, documents, news, and notifications on both iOS and Android from a single shared codebase.
Tech Stack
| Layer | Technology |
|---|---|
| Framework | Kotlin Multiplatform (KMP) 2.3 |
| UI | Compose Multiplatform 1.10 |
| Kotlin | 2.3.10 |
| Navigation | Jetpack Navigation Compose (type-safe routes) |
| Dependency Injection | Koin 4.1 (KSP annotation-based) |
| Networking | Ktor 3.3 |
| Local Storage | KVault (Keychain on iOS / EncryptedSharedPreferences on Android) |
| Push Notifications | KMPNotifier 1.6 (FCM + APNs) |
| Image Loading | Coil 3.3 (with SVG support) |
| Crash Reporting | Firebase Crashlytics + Kotzilla |
| Analytics | Firebase Analytics + Kotzilla SDK |
Platform Targets
| Platform | Min Version | App ID |
|---|---|---|
| Android | API 24 (Android 7) | com.app2dcassociationapp |
| iOS | iOS 18.2 | com.app2dc.associationapp |
Shared vs Platform-Specific Code
The project uses a single composeApp module with three source sets:
| Source set | What lives here |
|---|---|
commonMain | All UI screens, ViewModels, domain models, repositories, Ktor API clients |
androidMain | Android Application class, MainActivity, FCM config, icon switching |
iosMain | iOS-specific DI initialisation, icon switching bridge |
Essentially all product logic and UI is shared. Platform source sets contain only the bootstrapping glue required by each OS.
Screen Inventory
33 screens across 9 feature areas:
| Feature area | Screens |
|---|---|
| Authentication | Splash, Onboarding, Login, Forgot Password, Sign-Up Request, Register, Set Password, Invitation |
| Home & Org selection | Home (main container), Organisation Selection |
| Events | Events list (calendar), Event detail + RSVP |
| News | News list, News detail |
| Notifications | Notifications list |
| Documents | Documents browser, Governance, Guidance, PDF Viewer |
| Members | Members directory |
| Profile & settings | Profile, Edit Profile, Account Settings, Change Password, Update Email, About, Legal pages, Contact Us |
Navigation
- Getting Started — Xcode, Android Studio, local build
- Architecture & Navigation — layers, DI, routing, state
- Features — profile, events, payments, notifications in depth
- Build & Release — App Store, Google Play, signing