Android application: Difference between revisions
Jump to navigation
Jump to search
(Created page with "The app is available in the [https://play.google.com/store/apps/details?id=com.laimburggasse.aquariumcontroller Play store]. == Requirements == == Architecture == === Module structure === === Layer structure === == Test strategy == === Unit tests === === Compose preview screenshot tests === === Instrumented tests === == Release procedure ==") |
No edit summary |
||
| Line 2: | Line 2: | ||
== Requirements == | == Requirements == | ||
== Architecture == | == Architecture == | ||
The app uses Jetpack Compose, Dagger/Hilt and aims to implement a clean architecture. | |||
=== Module structure === | === Module structure === | ||
Besides the main app module, the app consists of the following library modules: | |||
* balling | |||
* common | |||
* controller | |||
* feed | |||
* heating | |||
* info | |||
* overview | |||
* refill | |||
* schedule | |||
* timedata | |||
* ventilation | |||
The main {{app}} module contains the AndroidManifest and the main activity (As of November 2025, the app only uses one activity). | |||
The activity contains the navigation {{NavHost}} in {{onCreate}}. | |||
None of the other modules has a dependency to the main {{app}} module. | |||
The {{common}} module provides low-level functionalities and layout elements used in various places. | |||
The following functionalities are located in {{common}} module: | |||
* {{DataFetchResult}}: A wrapper class indicating the status of data fetching operation ({{Success}}, {{Error}}, {{Loading}}, {{Empty}}). | |||
* {{WebApiParams}}, {{WebApiPostRequest}}, {{WebApiPostRequestExecution}}, {{WebApiUrls}}: Classes and objects used for communication from the app to the server. | |||
* {{ControllerProfileDao}}, {{ControllerProfileDatabase}}: Classes which provide Room database functionality. | |||
* Various classes used for dependency injection (Hilt) | |||
* {{SetValsSanityCheckResult}}: Class used for to communicate status of set values for {{heating}} and {{ventilation}} module. | |||
* {{ControllerProfile}}: Class containing the profile data of the server (address, port, credentials, ...) | |||
* {{GlobalConstants}}: Mainly UI-related strings (non-context-related) and some minor functional constants | |||
* Composable functions for the main drop down menu | |||
* Composable functions for the theme | |||
* Composable functions for hyperlinks, text edit fields, headline | |||
* {{ViewNavigationRoutes}}: Object containing the routing information processed in main {{app}} module | |||
* {{ScreenshotTestHelper}}: Helper class for executing the instrumented snapshot testing using the emulator. | |||
=== Layer structure === | === Layer structure === | ||
== Test strategy == | == Test strategy == | ||
Revision as of 15:57, 19 November 2025
The app is available in the Play store.
Requirements
Architecture
The app uses Jetpack Compose, Dagger/Hilt and aims to implement a clean architecture.
Module structure
Besides the main app module, the app consists of the following library modules:
- balling
- common
- controller
- feed
- heating
- info
- overview
- refill
- schedule
- timedata
- ventilation
The main Template:App module contains the AndroidManifest and the main activity (As of November 2025, the app only uses one activity). The activity contains the navigation Template:NavHost in Template:OnCreate.
None of the other modules has a dependency to the main Template:App module.
The Template:Common module provides low-level functionalities and layout elements used in various places. The following functionalities are located in Template:Common module:
- Template:DataFetchResult: A wrapper class indicating the status of data fetching operation (Template:Success, Template:Error, Template:Loading, Template:Empty).
- Template:WebApiParams, Template:WebApiPostRequest, Template:WebApiPostRequestExecution, Template:WebApiUrls: Classes and objects used for communication from the app to the server.
- Template:ControllerProfileDao, Template:ControllerProfileDatabase: Classes which provide Room database functionality.
- Various classes used for dependency injection (Hilt)
- Template:SetValsSanityCheckResult: Class used for to communicate status of set values for Template:Heating and Template:Ventilation module.
- Template:ControllerProfile: Class containing the profile data of the server (address, port, credentials, ...)
- Template:GlobalConstants: Mainly UI-related strings (non-context-related) and some minor functional constants
- Composable functions for the main drop down menu
- Composable functions for the theme
- Composable functions for hyperlinks, text edit fields, headline
- Template:ViewNavigationRoutes: Object containing the routing information processed in main Template:App module
- Template:ScreenshotTestHelper: Helper class for executing the instrumented snapshot testing using the emulator.