| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
A modern Android application built with Kotlin and Jetpack Compose that allows users to explore and manage user data.
This project demonstrates:
| Users List | User Details | Error State |
|---|---|---|
![]() |
![]() |
![]() |
| List of users | Detailed user information | Error handling with retry option |
The project follows Clean Architecture principles combined with MVI pattern and is organized into the following modules:
Use cases omitted intentionally for scope — the ViewModel calls the repository directly.
app/
├── core/
│ ├── data/ # Data layer implementation
│ │ ├── remote/ # Remote data sources
│ │ ├── repository/ # Repository implementations
│ │ └── model/ # Data models (DTOs)
│ └── domain/ # Domain layer
│ ├── model/ # Domain models
│ ├── repository/ # Repository interfaces
│ └── usecase/ # Use cases
├── feature/
│ └── users/ # Users feature module
│ ├── di/ # Feature-specific dependency injection
│ └── presentation/ # UI layer
│ ├── list/ # User list screen
│ └── detail/ # User detail screen
└── app/ # Application module
├── di/ # Dependency injection
├── navigation/ # Navigation setup
└── theme/ # UI theme
┌─────────────────────────────────────────────────────────────────────────┐
│ Presentation Layer (MVI) │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌───────────────────────────┐ │
│ │ UI │ │ ViewModel │ │ Navigation │ │
│ │ (Compose) │◄───┤ (StateFlow) │◄───┤ (Navigation Compose) │ │
│ └─────────────┘ └─────────────┘ └───────────────────────────┘ │
└───────────────────────────┬─────────────────────────────────────────────┘
│
┌───────────────────────────▼─────────────────────────────────────────────┐
│ Domain Layer │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌───────────────────────────┐ │
│ │ UseCase │ │ Domain │ │ Repository Interface │ │
│ │ (Flow) │◄───┤ Model │◄───┤ (Contract) │ │
│ └─────────────┘ └─────────────┘ └───────────────────────────┘ │
└───────────────────────────┬─────────────────────────────────────────────┘
│
┌───────────────────────────▼─────────────────────────────────────────────┐
│ Data Layer │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌───────────────────────────┐ │
│ │Repository │ │ Remote │ │ DTO │ │
│ │ Impl │◄───┤ DataSource │◄───┤ (Data Object) │ │
│ └─────────────┘ └─────────────┘ └───────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
Data Flow:
1. UI triggers Intent in ViewModel
2. ViewModel processes Intent and updates State
3. ViewModel executes UseCase
4. UseCase uses Repository
5. Repository fetches data from DataSource
6. Data flows back up through the layers
7. UI updates via StateFlow
Unit Tests
UI Tests (Compose)
Run all unit tests:
./gradlew testRun Compose UI tests on a connected device or emulator:
./gradlew :feature:users:connectedDebugAndroidTestTests follow the Arrange / Act / Assert pattern for clarity and consistency.
Clean Architecture
MVI Pattern
Error Handling
Feature Enhancements
Architecture
| Back | FazBrowse Home | New Git URL |