This project is a modern Kotlin Multiplatform (KMP) mobile application based on a clean, modular architecture. It implements best practices in architecture, dependency injection, networking, local storage, and design system management using Jetpack Compose Multiplatform.
UX/UI Reference: Inspired by Nuntium News App Figma Design
A cross-platform mobile app built with Kotlin Multiplatform and Jetpack Compose.
| Screen 1 | Screen 2 | Screen 3 |
|---|---|---|
| Screen 4 | Screen 5 |
|---|---|
| Screen 1 | Screen 2 | Screen 3 |
|---|---|---|
| Screen 4 |
|---|
- Contains the app entry point for Android and iOS.
- Hosts navigation and screen composition logic.
- Depends on
domain,data,di, anddesignsystem.
- Handles Dependency Injection using Koin.
- Centralized location for defining and providing all modules (data sources, repositories, use cases, view models).
- Pure Kotlin module containing:
- Business logic
- Use cases
- Data models (shared across the app)
- No third-party dependencies for maximum portability and testability.
- Handles all data operations:
- Responsible for:
- Mapping DTOs to domain models
- Repository implementations
- Encapsulates reusable UI components using Jetpack Compose Multiplatform.
- Ensures consistent styling and branding across all screens.
- Examples: Buttons, Typography, Theme, Card layouts, etc.
| Purpose | Tool / Library |
|---|---|
| UI Toolkit | Jetpack Compose (Multiplatform) |
| Networking | Ktor Client |
| Local Storage | Room |
| Dependency Injection | Koin |
| Architecture Pattern | Clean Architecture |
| Design Reference | Nuntium Figma Design |
- Clone this repository
- Open it in Android Studio with KMP plugin support.
- Run on Android or configure iOS target (MacOS only).
- Update your API keys, if needed.
composeApp- depends on:
di,domain,data,designsystem
- depends on:
di- depends on:
domain,data
- depends on:
data- depends on:
domain
- depends on:
designsystem- standalone (used only by
composeApp)
- standalone (used only by
domain- standalone (no dependencies)
Contributions are welcome and appreciated!
If you'd like to contribute:
- Fork the repository
- Create a new branch (
git checkout -b feature/your-feature-name) - Commit your changes (
git commit -m 'Add your message') - Push to the branch (
git push origin feature/your-feature-name) - Open a Pull Request