Skip to content

Explore modern Android with Kotlin, Jetpack Compose, Flow, and Clean Architecture.

License

Notifications You must be signed in to change notification settings

RubyLichtenstein/Dogiz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

41cbecb ยท Oct 12, 2023

History

90 Commits
Sep 24, 2023
Sep 24, 2023
Sep 23, 2023
Oct 12, 2023
Oct 3, 2023
Sep 17, 2023
Oct 12, 2023
Sep 17, 2023
Sep 21, 2023
Oct 3, 2023
Sep 21, 2023
Oct 1, 2023
Sep 27, 2023
Sep 17, 2023
Sep 17, 2023
Sep 26, 2023
Sep 19, 2023

Repository files navigation

๐Ÿพ๐Ÿถโœจ Dogiz

License API Build Status codecov

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

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!