Android application: Difference between revisions

From Aquarium-Control
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:

Layer structure

Test strategy

Unit tests

Compose preview screenshot tests

Instrumented tests

Release procedure