A modern Kotlin Multiplatform (KMP) project with shared UI using Jetpack Compose and Koin for dependency injection.
newverse/
├── androidApp/ # Android-specific application module
│ └── src/main/
│ ├── kotlin/ # Android app code
│ └── res/ # Android resources
├── shared/ # Shared code module
│ └── src/
│ ├── commonMain/ # Shared Kotlin code
│ │ └── kotlin/
│ │ ├── di/ # Koin dependency injection
│ │ ├── domain/ # Business logic
│ │ └── ui/ # Compose Multiplatform UI
│ ├── androidMain/ # Android-specific implementations
│ └── iosMain/ # iOS-specific implementations
├── build.gradle.kts # Root build configuration
├── settings.gradle.kts # Project settings
└── gradle.properties # Gradle properties
- Kotlin 2.0.21 - Latest Kotlin with K2 compiler
- Compose Multiplatform 1.7.1 - Shared UI framework
- Koin 4.0.0 - Dependency injection
- Coroutines 1.9.0 - Asynchronous programming
- Lifecycle ViewModel 2.8.0 - MVVM architecture
- Navigation Compose - Multi-platform navigation
- Android Gradle Plugin 8.10.1
- Compile SDK 35
- Min SDK 23
- Target SDK 35
- iOS targets: iosX64, iosArm64, iosSimulatorArm64
./gradlew :androidApp:assembleDebugThe iOS framework is built in the shared module and can be consumed by an iOS app.
The project follows Clean Architecture principles with MVVM pattern:
-
Domain Layer (
shared/src/commonMain/kotlin/domain/)- Contains business logic and repositories
- Platform-agnostic
-
UI Layer (
shared/src/commonMain/kotlin/ui/)- Compose Multiplatform screens and components
- ViewModels with StateFlow
- Shared across all platforms
-
DI Layer (
shared/src/commonMain/kotlin/di/)- Koin modules for dependency injection
- Organized by feature
-
Platform-Specific (
androidMain/,iosMain/)- Platform-specific implementations
- Expect/actual pattern for platform APIs
- Cross-Platform: Single codebase for Android and iOS using Kotlin Multiplatform.
- Shared UI: Jetpack Compose for building the UI for both platforms.
- Modern Architecture: Follows Clean Architecture and MVVM principles.
- Dependency Injection: Koin for managing dependencies.
- Product Flavors: Supports
buyandsellflavors for different user-facing apps. - Authentication: Robust authentication system supporting Google, Apple, Email, and anonymous sign-in.
- Rich Feature Set: Includes product management, order processing, customer management, and more.
For a detailed breakdown of feature implementation status, see doc/TODO.md.
The project is under active development. Key areas for future work include:
- Push Notifications
- Standardization of error handling
For more details, please refer to the feature status document.
The project uses a comprehensive Material3 theme system migrated from the Universe project:
- Primary: Teal/Green (#008577) - Main brand color
- Secondary: Dark Green (#0A6308) - Secondary actions
- Tertiary: Orange (#FA9C4D) - Accent color
- ✅ Light and dark theme support
- ✅ Material3 design system
- ✅ Complete typography scale
- ✅ Consistent rounded corners (4dp to 28dp)
- ✅ Semantic color roles for accessibility
For detailed theme documentation, see doc/theme.md
The app features a complete navigation system with a modal drawer:
- Common: Home, About, Login
- Customer Features: Browse Products, Shopping Basket, Customer Profile
- Seller Features: Product Overview, Manage Orders, Create Product, Seller Profile, Pick Delivery Day
- ✅ Type-safe navigation routes
- ✅ Categorized navigation drawer
- ✅ Active route highlighting
- ✅ State preservation
- ✅ Dynamic screen titles
For detailed navigation documentation, see doc/navigation.md
The project supports two product flavors:
- Buy Flavor:
com.together.newverse.buy- Customer-facing app - Sell Flavor:
com.together.newverse.sell- Vendor-facing app
Build commands:
./gradlew :androidApp:assembleBuyDebug
./gradlew :androidApp:assembleSellDebugiOS flavor setup requires macOS with Xcode. See doc/iOS-Setup-Guide.md for complete instructions.
All documentation is in the doc/ directory:
- architecture.md - MVVM, state hoisting, ViewModel patterns
- navigation.md - Navigation architecture and screen structure
- theme.md - Material3 theme system
- iOS-Setup-Guide.md - iOS app setup with Buy/Sell flavors
- BuildKonfig_Setup.md - Build flavor configuration
- Localization_Guide.md - String localization
- testing.md - Testing setup and buyer stories
- ordering-business-rules.md - Order business logic
- The project uses Java 17
- Gradle daemon is configured with Java module exports for Kotlin compatibility
- iOS targets require macOS with Xcode for building
- Theme follows Material3 guidelines for cross-platform consistency
- Both Buy and Sell flavors can be installed side-by-side on the same device
- Open the project in Android Studio
- Select
androidAppconfiguration - Run on emulator or device
- Build the shared framework:
./gradlew :shared:linkDebugFrameworkIosX64 - Open iOS project in Xcode
- Run on simulator or device
[Your license here]