Dogiz
Dogiz copied to clipboard
Explore modern Android with Kotlin, Jetpack Compose, Flow, and Clean Architecture.
๐พ๐ถโจ Dogiz
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!
Screenshots
๐งฑ Clean Architecture in Android with Kotlin
Clean Architecture in Android prioritizes:
- ๐ฏ 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.
The Three Layers
- UI Layer: Interactive & visually captivating.
- Domain Layer: The business logic hub.
- Data Layer: Manages all data sources.
๐จ The UI Layer
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
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
The data layer stands as a pivotal component:
- ๐๏ธ Repository Pattern: For clean data access.
- ๐ Ktor: Handling API calls.
- ๐ฆ Room: Local data storage.
๐ Functional Programming with Kotlin Flow
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: Elevating Dependency Management
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.
๐๏ธ๐จ UX/UI Considerations
- ๐ 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.
๐ ๏ธ Libraries & Tools
"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.
๐ค Feedback and Contributions
"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!