Skip to main content

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

LayerTechnology
FrameworkKotlin Multiplatform (KMP) 2.3
UICompose Multiplatform 1.10
Kotlin2.3.10
NavigationJetpack Navigation Compose (type-safe routes)
Dependency InjectionKoin 4.1 (KSP annotation-based)
NetworkingKtor 3.3
Local StorageKVault (Keychain on iOS / EncryptedSharedPreferences on Android)
Push NotificationsKMPNotifier 1.6 (FCM + APNs)
Image LoadingCoil 3.3 (with SVG support)
Crash ReportingFirebase Crashlytics + Kotzilla
AnalyticsFirebase Analytics + Kotzilla SDK

Platform Targets

PlatformMin VersionApp ID
AndroidAPI 24 (Android 7)com.app2dcassociationapp
iOSiOS 18.2com.app2dc.associationapp

Shared vs Platform-Specific Code

The project uses a single composeApp module with three source sets:

Source setWhat lives here
commonMainAll UI screens, ViewModels, domain models, repositories, Ktor API clients
androidMainAndroid Application class, MainActivity, FCM config, icon switching
iosMainiOS-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 areaScreens
AuthenticationSplash, Onboarding, Login, Forgot Password, Sign-Up Request, Register, Set Password, Invitation
Home & Org selectionHome (main container), Organisation Selection
EventsEvents list (calendar), Event detail + RSVP
NewsNews list, News detail
NotificationsNotifications list
DocumentsDocuments browser, Governance, Guidance, PDF Viewer
MembersMembers directory
Profile & settingsProfile, Edit Profile, Account Settings, Change Password, Update Email, About, Legal pages, Contact Us