Architecture
Our aim is to take advantage of multiplatform features as much as possible, specially Compose Multiplatform. Platform specific modules will be limited to the minimum required to setup and launch the apps with a compose wrapper, besides platform-specific code that we can’t avoid, such as the loading our pre-compiled engine.
Principals
Main module structure
-
enginethe Oonimkall engine abstraction in kotlin -
probeour Probe app codebackgroundshared code ran on background tasksconfigconfigurations for each platform (Android, iOS), organization (OONI, DW) and flavor (full, F-droid)didependency injectionsharedclasses and methods shared across the whole appdatadata layer code (database, preferences, network…)uiUI layer code, organized into features/screens