| Dark Theme | Light Theme |
|---|---|
| Dark Theme | Light Theme |
|---|---|
| Dark Theme | Light Theme |
|---|---|
| Dark Theme | Light Theme | Landscape |
|---|---|---|
| Localization | Network Connectivity Listener |
|---|---|
-
Kotlin based, Compose for UI Toolkit, Coroutines + Flow for asynchronous jobs.
-
Jetpack
- Compose: Android’s recommended modern toolkit for building native UI.
- Android Architecture Components: Collection of libraries that help you design robust, testable, and maintainable apps.
- Coroutines: Concurrency design pattern that you can use on Android to simplify code that executes asynchronously.
- Hilt Dependency Injection: Hilt is a dependency injection library for Android that reduces the boilerplate of doing manual dependency injection in your project.
- Stateflow: StateFlow is a state-holder observable flow that emits the current and new state updates to its collectors.
- Flow: A flow is an asynchronous version of a Sequence, a type of collection whose values are lazily produced.
- Navigation with Compose: Navigation component for Compose.
- DataStore: Jetpack DataStore is a data storage solution that allows you to store key-value pairs or typed objects with protocol buffers. DataStore uses Kotlin coroutines and Flow to store data asynchronously, consistently, and transactionally.
- Splash Screen API: Smooth app launch experience
- Media3 - ExoPlayer: Media playback library that supports adaptive streaming, DRM-protected content and custom controls.
- Material 3 Adaptive Layout: Responsive UI components for different screen sizes and orientations including tablet support.
- Pagin g3: Library that helps load and display pages of data from a larger dataset from local storage or over network.
-
Firebase
- Analytics: for tracking events.
- Crashlytics: for tracking crashes.
- Performance: for tracking performance.
- Remote Config: for remote configuration.
-
Architecture
- Multi-Module Architecture with lots of customized convention plugins (build_logic - app - core - feature)
- MVVM Architecture
- Clean Architecture approach (Data - Domain - Presentation(UI))
-
3rd Part Libraries
- ksp: Kotlin Symbol Processing API.
- Retrofit2 & OkHttp3: Construct the REST APIs and paging network data.
- Coil for async image loading library
- Detekt for static code analysis with compose specific rules
- GitHub Actions for simple ci pipeline
- GitHooks for running static analysis and code formatters before commit and push actions
- LeakCanary for leak detection on runtime
- Chucker for network inspector on debug builds
- Maestro: Mobile UI testing framework.
- JankStats: The JankStats library helps you track and analyze performance problems in your applications.
- Lottie: Library for rendering Adobe After Effects animations natively on Android.
-
Unit Test
# Project specific variables
moviecatalog.api.url="https://api.themoviedb.org/3/"
moviecatalog.api.key="ec4c51244bdef75d9f6f4dcf9dde1ae6"
moviecatalog.image.url="https://image.tmdb.org/t/p/w500"%%{
init: {
'theme': 'base',
'themeVariables': {
"primaryTextColor":"#ffffff",
"primaryColor":"#5a4f7c",
"primaryBorderColor":"#ffffff",
"tertiaryBorderColor":"#40375c",
"lineColor":"#f5a623",
"tertiaryColor":"#40375c",
"fontSize":"14px"
}
}
}%%
graph TD
subgraph Application Modules
app
end
subgraph Core Modules
common
data
datastore
domain
navigation
network
ui
end
subgraph Feature Modules
adaptive
detail
home
player
splash
end
app-->ui
app-->common
app-->navigation
ui-->common
ui-->domain
navigation-->ui
navigation-->splash
navigation-->home
navigation-->detail
navigation-->player
navigation-->adaptive
splash-->common
splash-->domain
splash-->ui
home-->common
home-->domain
home-->ui
detail-->ui
detail-->domain
detail-->common
detail-->network
player-->common
player-->domain
player-->ui
adaptive-->common
adaptive-->domain
adaptive-->ui
adaptive-->home
adaptive-->detail
domain-->data
domain-->network
domain-->common
datastore-->domain
network-->data
network-->common
%% Auto generated by ModuleDependencyGraphPlugin.kt
- WIP - Datastore Impl for Cache Mechanism
- UI Tests using Maestro
- Benchmark Module and Baseline Profiles
- Transition animation for HomeScreen to DetailScreen
- JaCoCo for Code Coverage