A Contemporary Showcase of Android Clean Architecture Development Using Kotlin, Jetpack Compose, Flow, Hilt, Ktor, Material 3, Room, Turbine, and Molecule.
Welcome to "Dogiz," your go-to example for modern Android development. Inspired by Now in Android, we've simplified complex practices for easy understanding and practical learning.
๐ฏ Key Aspects:
- ๐๏ธ Clean Architecture: A structured development approach.
- ๐ Modern Libraries: Kotlin Coroutines, Flow, Jetpack Compose, and more.
- ๐งช Testing: Ensuring robustness at every stage.
- ๐ CI/CD: Efficient integration and deployment.
๐ก Aligns with Guide to App Architecture.
๐จโ๐ป Who Should Use This? Anyone keen to dive into modern Android developmentโDogiz is your guide!
- ๐ฏ Distinct Roles: Unique purpose for each layer.
- ๐ Layer Autonomy: Pure Kotlin/Java in core layers.
- ๐งช Testability: Fostering reliability.
- ๐ Adaptive Design: Ready for tech shifts and requirements.
- UI Layer: Interactive & visually captivating.
- Domain Layer: The business logic hub.
- Data Layer: Manages all data sources.
Here's a look at the tools and practices shaping the UI:
- ๐จ Jetpack Compose: For a modern, declarative UI.
- ๐๏ธ ViewModels: Acting as state holders.
- ๐ Kotlin Flow & StateFlow: For data streams and state management.
The domain layer is the backbone:
- ๐ Pure Kotlin: For a platform-agnostic core.
- โ๏ธ Use Cases: Distinct operations encapsulating business rules.
- ๐งช Unit Testing: For validating each use case.
- ๐ Decoupling: Ensuring stability and consistency.
The data layer stands as a pivotal component:
- ๐๏ธ Repository Pattern: For clean data access.
- ๐ Ktor: Handling API calls.
- ๐ฆ Room: Local data storage.
We bring functional programming into play:
- ๐งฎ Pure Functions: For predictable, testable behavior.
- ๐ Immutable Data: Minimizing potential bugs.
- ๐ Kotlin Flow Integration: For handling asynchronous data streams.
Hilt takes dependency management to the next level:
- ๐ฏ Simplified Injection: Automated dependency management.
- ๐ฆ Modularity: For easy scaling.
- ๐ Scoped Components: Aligned with Android's architecture components.
- ๐ Offline Handling: Friendly alerts and cached data ensure smooth usage, even without a connection.
- ๐พ Data Persistence: From user preferences to dog breed details, we save the essentials for offline access.
โ ๏ธ Clear Error Feedback: We've got you covered with clear error messages and alerts.
"Dogiz" incorporates the latest libraries and tools:
- Kotlin Coroutines: For efficient asynchronous programming.
- Kotlin Flow: Managing async data streams.
- Hilt: For injecting dependencies.
- Ktor Client: Handling APIs.
- Jetpack Compose UI & Compose-Navigation: Crafting UI & navigation.
- Material 3: Modern UI aesthetics.
- Kotlin Serialization: Parsing data.
- Coil-Compose: Loading images.
- Room: Local database management.
- DataStore Core: Storing preferences locally.
- Turbine: A small testing library for Flow.
- JUnit5: Widely used testing framework for the JVM.
- Molecule: Build a StateFlow or Flow stream using Jetpack Compose.
"Dogiz" is more than just an appโit's a showcase for the community! As we continue to refine and expand, your insights, expertise, and contributions can play a crucial role.
๐ง Work in Progress: We're tirelessly enhancing features and functionalities. Your patience and suggestions are greatly appreciated!
๐ Contribute: Spotted an area for improvement? Have a feature idea? Open an issue to discuss or, even better, submit a pull request to make "Dogiz" even more robust.
๐ We deeply value the power of community collaboration. Let's shape "Dogiz" together!