Skip to content

magneto3572/AniVerse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

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: