Catman - time management application for Android.
Main app features:
- assistance in planning the day, managing time, activities and concentration
- tracking progress towards achieving goals
- keeping records of time spent at work/study
- fighting procrastination, tracking deadlines
The Clean Architecture and UDF were used to create the application. So there are three layers: data, domain, ui.
- Domain layer contains the application data model and the repository interfaces for accessing the data.
- Data layer contains objects that come from the server, as well as implementations of the domain layer repositories.
- UI layer contains the user interface as well as components for communicating with the domain layer. UI components are associated with the ViewModel, which are associated with repositories to receive data. ViewModel classes have state (eg Init, Loaded, Error) and data (eg current weather). The UI collects data and state via StateFlow and renders as needed. If some event is received from the user, for example, updating data, then this event is sent to the ViewModel instance, after which the state and data are updated, if necessary.
The app uses Room for local database storage. In addition, WorkManager is used to perform background work, so that data change requests are fulfilled, even when the application exits. All of these components are connected by the Hilt dependency injection framework. At the moment, most screens are created using the View system, including custom views. In addition, data/view binding, services, lifecycle, livedata, navigation, recycler view, kotlin coroutines, kotlin flows were also used.