Skip to content

Compose Multiplatform + Kotlin Multiplatform Mobile + Clean Architecture + MVI + JetPack Compose + Swift UI + Koin + Ktor

Notifications You must be signed in to change notification settings

magneto3572/AniVerse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

729f0dd Β· Dec 14, 2024

History

9 Commits
Dec 14, 2024
Dec 14, 2024
Dec 14, 2024
Dec 14, 2024
Dec 3, 2024
Dec 14, 2024
Dec 3, 2024
Dec 14, 2024
Dec 3, 2024
Dec 3, 2024
Dec 3, 2024
Dec 3, 2024
Dec 14, 2024

Repository files navigation

AniVerse

AniVerse is a Compose Multiplatform Mobile (CMP) application designed for both Android and iOS platforms. It utilizes modern development practices with Clean Architecture and Model-View-Intent (MVI). AniVerse supports platform-specific native UI components while sharing the business logic.

πŸ“Έ Screenshots

Android UI iOS UI

🌟 Features

  • Cross-Platform Compatibility: Unified shared business logic for Android and iOS.
  • Shared UI : Built using jetpack compose
  • Architecture: Implements MVI for predictable and reactive state management.
  • Networking: Powered by Ktor for efficient and flexible API communication.
  • Dependency Injection: Modular and testable code with Koin.

πŸ“– How AniVerse Leverages KMP

AniVerse maximizes the potential of Kotlin Multiplatform Mobile by sharing core business logic while maintaining platform-specific UI experiences.

Shared Code (Business Logic)

The shared module contains all reusable code:

  • Data Layer: Manages data fetching via Ktor, mapping, and DTOs.
  • Domain Layer: Includes use cases, repository abstractions, and business logic.
  • Presentation Layer: Includes intent, viewmodels, and UiState.

Shared UI

  • Android & iOS: Both platforms use Jetpack Compose to implement the UI, ensuring a consistent look and feel across devices while adhering to platform-specific guidelines.

πŸ› οΈ Prerequisites

Before setting up the project, ensure you have the following:

  1. Kotlin 1.9+ with the KMM plugin installed.
  2. Android Studio Giraffe or later for Android development.
  3. Xcode 14.0+ for iOS development.
  4. Gradle 8.0+ for project builds.

πŸ“‚ Project Structure

AniVerse/
β”œβ”€β”€ androidApp/                            # Android application module
β”‚   └── ...
β”œβ”€β”€ iosApp/                                # iOS application module
β”‚   └── ...
β”œβ”€β”€ shared/                                # Shared KMM module
β”‚   β”œβ”€β”€ commonMain/                        # Shared business logic for both platforms
β”‚   β”‚   └── kotlin/
β”‚   β”‚       └── com/
β”‚   β”‚           └── generativeai/aniverse/
β”‚   β”‚               β”œβ”€β”€ data/              # Data layer
β”‚   β”‚               β”‚   β”œβ”€β”€ di/            # Dependency injection for data layer
β”‚   β”‚               β”‚   β”œβ”€β”€ dto/           # Data Transfer Objects
β”‚   β”‚               β”‚   β”œβ”€β”€ mappers/       # Data mapping between layers
β”‚   β”‚               β”‚   β”œβ”€β”€ remote/        # API communication
β”‚   β”‚               β”‚   └── repositoryImpl/# Repository implementations
β”‚   β”‚               β”œβ”€β”€ domain/            # Domain layer
β”‚   β”‚               β”‚   β”œβ”€β”€ constants/     # Constant values
β”‚   β”‚               β”‚   β”œβ”€β”€ di/            # Dependency injection for domain layer
β”‚   β”‚               β”‚   β”œβ”€β”€ model/         # Domain models
β”‚   β”‚               β”‚   β”œβ”€β”€ repository/    # Repository interfaces
β”‚   β”‚               β”‚   β”œβ”€β”€ usecases/      # Business use cases
β”‚   β”‚               β”‚   └── utils/         # Utility functions
β”‚   β”‚               └── presentation/      # Presentation layer
β”‚   β”‚                   β”œβ”€β”€ di/            # Dependency injection for presentation
β”‚   β”‚                   β”œβ”€β”€ intent/        # User intents
β”‚   β”‚                   β”œβ”€β”€ stateHandler/  # State handlers for MVI
β”‚   β”‚                   β”œβ”€β”€ uiState/       # UI State models
β”‚   β”‚                   └── viewModel/     # ViewModels for state management
β”‚   └── ...

πŸš€ Getting Started

Clone the Repository

To get started, clone the AniVerse repository:

git clone https://github.com/magneto3572/AniVerse.git

Running on Android

  1. Open the project in Android Studio.
  2. Build the project using the Build menu or with Gradle.
  3. Run the app on an emulator or a physical Android device.

Running on iOS

  1. Open the iosApp folder in Xcode.
  2. Configure the target scheme and select a simulator or a physical iOS device.
  3. Build and run the app.

Screen_recording_20241203_213134.mp4
Simulator.Screen.Recording.-.iPhone.15.-.2024-12-03.at.21.31.14.1.1.mp4

πŸ“§ Contact

For queries, suggestions, or feedback, feel free to reach out at: