ToNotes is an Android app for managing notes. With this app you can write your notes, edit, and delete them. Also, you can back up the notes to the cloud and sync them to your phone.
This app is a multi-module project that implements Clean Architecture which has three main layers, UI, Domain, and Data layer.
References:
- The Clean Architecture
- Clean Architecture Guide (with tested examples): Data Flow != Dependency Rule
Modularization system that this app used is hybrid or mix. It means we separate each features as a module, then we create sub modules of the layers (data, domain, and UI) for each feature modules.
- app: An entry point to connects everything in the project (all modules and libraries).
- buildSrc: Defines the dependencies version and dependencies itself for Gradle.
- core: Collection of reusable files, such as utils that can be used on every modules.
- core_ui: Same as core module, core_ui is more specific on reusable files related on UI, such as Composable, image resources, strings, etc.
- account: A module of account feature, such as login and register feature. This module has 3 sub modules related to the feature, account_data, account_domain, and account_ui.
- note: A module of note feature. Same as account module, this module also has 3 sub modules, note_data, note_domain, and note_ui.
- Kotlin
- Jetpack Compose
- Material Design 3
- Dagger Hilt
- Flow
- Coroutines
- Room
- Retrofit
- Moshi
- WorkManager
- Mockito
Download the zip from this repository or use git clone on your terminal.
https://github.com/ajailani4/tonotes.git
Then, run it on your Android emulator or physical device.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.