A sample Android application that consumes the Space Flight API, built with modern Android development tools and clean architecture principles.
- List screen with
- Detail Screen
- Fav Screen
- Pagination with Offline support
- Searching in list
- Shimmer for loading screen
The application is structured using a multi-module, clean architecture approach with three main layers:
Contains shared and reusable modules:
- data
- domain
- network
- database
- common
- design-system
Each feature is isolated into its own module and contains
- ViewModels
- Composable screens
This layer depends only the core layer(desing_system, domain,model,common)
Responsible for:
- Bringing all feature modules together
- Handling navigation between screens
- Hosting the main application entry point
The architecture follows a reactive programming model based on
Unidirectional Data Flow (UDF):
https://developer.android.com/jetpack/guide/ui-layer#udf
- Higher layers react to changes in lower layers
- Events flow down, data flows up
- Asynchronous data streams are handled using
Kotlin Flow:
https://developer.android.com/kotlin/flow
- Retrofit – API requests
- Room – Local database & pagination
- Sandwich – Safe API response handling
- Hilt – Dependency Injection
- Jetpack Compose – UI
- Compose Navigation (Type-Safe) – Navigation
The project includes multiple test types to ensure reliability:
- Compose UI Tests – Verify UI behavior
- Navigation Tests – Ensure correct navigation flow
- ViewModel Unit Tests – Validate state updates
- API Response Tests – Ensure correct JSON parsing
- MockK – For mocking dependencies
- Turbine – For testing Kotlin Flows
- OkHttp MockWebServer – For mocking API calls
The project follows a loosely-coupled architecture and applies the
Dependency Inversion Principle, making testing easier and more reliable.
- Clean Architecture
- SOLID principle
- Multi-module structure
- Unidirectional Data Flow (UDF)
- Reactive programming with Flow
- Testable and scalable design
- Android Studio Hedgehog or newer
- Android SDK 26 or higher



