Modules¶
Starter templates follow multimodule architecture. each feature has its own module. this helps in keeping the codebase organized and makes it easier to maintain.
Structure¶
whenever you feel lost just come and look at this beautiful table
| Module | Description | Path |
|---|---|---|
androidApp |
contains android app code | androidApp/ |
composeApp |
contains compose multiplatform shared code, glue all other modules | composeApp/ |
analytics |
contains data, domain & presentation submodules related to analytics |
features/analytics/* |
core |
contains data, domain & presentation submodules, put code that you want to share between all features |
features/core/* |
database |
room database setup, migrations & entities etc |
features/database |
navigation |
contains navigation3 related code such as navigator, backstack, screens etc |
features/navigation |
notifications |
contains core, local & push submodules - setup for notifiations using alarmee library |
features/notifications/* |
purchases |
contains data, domain & presentation submodules related to in app purchases |
features/purchases/* |
remoteconfig |
contains data, domain & presentation submodules related to remote config |
features/remoteconfig/* |
resources |
contains all the resources such as , strings, images etc, include other code related to resources such as localization, string res etc |
features/resources/* |
your-feature |
start writing your code here | features/your-feature/* |
utils |
contains utility code that can be used throughout the app | starter/utils/ |
core |
implements utils, contains core logic related to starter template |
starter/core/ |
bindings |
contains ios bindings, you can add ios specific bindings here | starter/native/bindings// |
utils |
implements starter/core, contains utilities related to ui (CMP) |
starter/ui/utils/ |
components |
implements ui utils, contains reusable ui components |
starter/ui/components/ |
layouts |
implements components, contains reusable ui layouts |
starter/ui/layouts/ |
Starter Modules¶
Starter Modules are the backbone of the template, they are the modules that all features implement. if you want to include any module into your module you can use project accessors like:
all other modules that a starter module depends on will also be automatically addedFeature Modules¶
You can add or remove feature module based on your requirements. Later in each feature module documentation you will find how to add or remove it properly, Because each module has it's own koin module that needs to be removed from initKoin function inside composeApp module.
Support My Project ☕️¶
If you find this project useful, consider supporting it by buying me a coffee. Your support will help me to continue working on this project and add more features.