Skip to content

RubyLichtenstein/Dogiz

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!


Releases

No releases published

Packages

No packages published

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy