> For the complete documentation index, see [llms.txt](https://docs.appkickstarter.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.appkickstarter.com/tech-things/multi-modules-architecture.md).

# Multi modules Architecture

AppKickstarter has a multi-module Gradle structure, embracing Clean Architecture and Separation of Concerns. This structure is aimed at enhancing maintainability and promoting a robust development framework. The codebase is divided into distinct modules, each serving a specific function, adhering to SOLID principles, and ensuring a clear separation of concerns:

<div align="center"><figure><img src="/files/j5Vt6ytliDccWo8SSXYj" alt="AppKickstarter modules architecture" width="188"><figcaption><p>AppKickstarter modules architecture</p></figcaption></figure></div>

* **Umbrella Shared Module:** Acts as the central entry point for the app.
* **Shared Module:** Provides common utilities and foundational components.
* **Domain Module:** Contains the business logic and use cases, crucial to the Clean Architecture model.
* **ComposeUI Module:** Focuses on UI development with Compose UI, housing all UI components.
* **Firebase Module:** Centralizes Firebase services, managing database operations and more.
* **Auth Module:** Oversees user authentication, ensuring secure access control.
* **Settings Module:** Offers a comprehensive interface for settings and preferences management.
* **Resources Module:** Stores all app resources, ensuring centralized management of strings, themes, and fonts.
* **Onboarding Module:** Aids new users in familiarizing themselves with the app's functionalities.
* **Maps Module:** Manages all map-related features, including permissions and location services.
* **Monetization Module:** Integrates Revenue Cat for subscriptions and in-app purchases, along with pre-built paywalls.
* **Dates Module:** Specializes in date and time operations, promoting consistency in managing temporal data.
* **WhatsNew Module:** Handles the presentation and management of updates and new features.
