Minimalist task manager built with a modular Android stack (Java 17, Kotlin 1.9, AGP 8.x, compile/targetSdk 36, minSdk 24) and MaterialComponents.
- Clean Architecture + MVVM, DI via Koin.
- Domain rules in
domain/; shared helpers inutility/kotlin-utilandutility/android-util. - UI kit split into
ui-component/public(contracts) andui-component/impl(views/resources). - Features under
feature/<name>/{public,impl}(task-list, task-form, task-history, task-details, alarm, settings, about, splash, navigation) with data/domain/presentation layers. - Platform integrations (DB, logging, Crashlytics) in
platform/impl. Non-transitive R enforced.
./gradlew assembleDebug– build the app../gradlew test– run JVM unit tests across modules../gradlew ktlintCheck– style check;ktlintFormatto fix../gradlew checkCrossModuleRImports– guard against importing the appRoutsideapp/.
- Kotlin coroutines, Flow
- AndroidX: AppCompat/Activity/Fragment, Lifecycle 2.7, Material Components
- Koin 3.x for DI
- Testing: JUnit4, MockK, coroutine-test, Arch core test
- Theme:
Theme.MaterialComponents.DayNight.NoActionBarwith Material date/time pickers. - FABs tinted with
colorPrimaryand white icons; toolbar uses Material toolbar style.
- Follow module boundaries; import resources from the correct module R (UI alias
UiR). - Avoid
SimpleDateFormat;java.timeis enabled via coreLibraryDesugaring. - Pre-commit hooks run ktlint; ensure
assembleDebugandtestpass before PRs.