An elegant cryptocurrency app showcasing Clean/MVI architecture with a splash of Hilt DI, Compose navigation, and comprehensive UI testing.
Our codebase aligns with the Clean/SOLID architecture principles. This ensures:
- Decoupling for modular design
- Improved maintainability
- Enhanced testability
The code is segregated across three distinct layers:
- Data Layer: Source of truth for data
- Domain Layer: Business logic resides here
- Presentation Layer: UI/UX elements and controls
We've incorporated mappers/DO's to prevent potential overlaps between these layers.
For optimal scalability and maintainability, our modules are:
-
App:
- Houses the Android framework components.
-
Basic Features:
- Manages the logic for features.
- Contains presentation, domain, and data packages for a clear separation, aligned with Clean/SOLID principles.
-
Core:
- Offers basic elements like navigation, base view models, and networking.
- Designed for potential modular expansion in the future for best practices.
Hilt is our chosen framework for dependency injection due to:
- Its easy setup.
- Removing dependencies from their implementations.
- Reducing boilerplate compared to manual DI.
- Simplifying object relationships and lifecycle management.
We employ Kotlin Flows to channel data from our API/DAO's to the UI. Why not LiveData?
- Compose Integration:
collectAsState
ensures lifecycle-aware flows. - Backpressure: Flows gracefully handle overwhelming UI demands.
- Built-in Functionalities: Effortless error handling and transformations.
Our testing suite covers:
- ViewModel (VM)
- Use Cases
- Composable elements
We also feature UI tests for individual composables and entire screen flows.
- Source: Connects to Paprika to list cryptocurrency coins and tags.
- Navigation: Click on a coin for a detailed dialog box.
- Refresh: Update your data with a simple button press.
- Filtering: Use tags to filter the displayed cryptocurrencies.
- Coin Screen:
- Pass coin ID
- Fetch and display data
- Cache Integration
- UI Overhaul: Tag section improvements.
- Media: Introduction of videos and architecture diagrams.
Thank you for checking out Coin Fetcher! ✨