The Jeminai Project provides a modern Android architecture scaffold, making it easier to kickstart projects with Kotlin, Jetpack, Hilt, and reusable core modules. This repository includes essential components such as data management, user preferences using AndroidX DataStore, theme management, and unit testing, all structured using a modular approach.
- Introduction
- Features
- Getting Started
- Modules
- HiltCoroutines Integration
- Running Tests
- Contributing
- License
The Jeminai project is inspired by the Now in Android architecture but aims to serve as a scaffold for developing Android projects. It provides a modular setup with reusable components, making it suitable for large-scale projects that require separation of concerns, testability, and ease of maintenance.
- Jetpack Compose for UI development.
- Hilt for dependency injection.
- AndroidX DataStore with Protocol Buffers for user preferences.
- Theme Management supporting light and dark themes.
- Coroutine support using Kotlin Coroutines.
- Reusable Core Modules for data, testing, and model management.
- Preconfigured unit and instrumentation tests.
- Modular Architecture for scalability and separation of concerns.
To start using this project for your own development:
-
Fork the Repository
- Visit the Jeminai GitHub page.
- Click "Fork" to create a copy under your GitHub account.
-
Clone the Forked Repository
git clone https://github.com/yourusername/jeminai-modern-android-scaffold.git cd jeminai
-
Start Building
- Modify or extend the existing modules to fit your app's needs.
- Add new features or reuse core modules to speed up development.
-
Build the Project
./gradlew clean build
-
Run the App
./gradlew installDebug
This module is the main entry point of the application. It includes:
MainActivity.kt
: Handles the app’s lifecycle and sets up the user interface.- Theme management with Jetpack Compose for light/dark theme support.
- A settings dialog to manage user preferences (e.g., theme settings).
Handles data-related operations and acts as the repository layer, managing user data preferences.
Persistent storage using AndroidX DataStore with Protocol Buffers.
Defines data models like UserData
used across the app.
Contains reusable test utilities and mock repositories for easier testing.
UI components for managing app settings, including theme configuration.
The Jeminai project integrates HiltCoroutines, a library created by the author to simplify coroutine management with Hilt dependency injection. It reduces boilerplate by injecting common coroutine dispatchers and pre-configured scopes.
- Inject Dispatchers like
IO
,Main
, andDefault
. - Pre-configured Scopes for background tasks, UI updates, and strict execution flows.
Add it to your project:
dependencies {
implementation("com.sean8.core:hilt-coroutines:1.0.0")
}
For more, visit HiltCoroutines.
To run tests, execute:
./gradlew testDebugUnitTest
For instrumented tests:
./gradlew connectedDebugAndroidTest
Contributions are welcome! To contribute:
- Fork the repository.
- Create a new branch.
- Implement your changes and run tests.
- Submit a pull request.
This project is licensed under the MIT License. See the LICENSE file for more details.