This app is for demonstration purposes to show good coding practices in android development. SpaceX connects to the SpaceX API at https://github.com/r-spacex/SpaceX-API
- Data is retrieved from two end points: "Company Info" and "All Launches"
- The data is displayed in a multi view type LazyVerticalGrid using a Kotlin Sealed Class.
- Data in the grid can be filtered by "ASC/DESC", "Launch Year" or the "Launch Status".
- The data is also paginated from Room, loading 30 items at a time.
- A modal bottom sheet is used to present launch media links if available. These are external links to other websites.
- The app will survive process death and restore the state and list position.
- Modularised using api/implementation pattern : We only expose the contract module to other modules so we can avoid recompiles if the implementation changes
- Clean Architecture
- MVI
- KSP
- Compose
- Coroutines
- Datastore Preferences
- Datastore Proto
- State Flow
- Splash Screen API
- Material 3 Dark & Light Mode
- Navigation Component
- Hilt Dependency Injection
- Retrofit2
- Room Persistence
- Pagination
- Crashlytics
- Timber
- Glide Compose
- TOML Dependency Catalog
- Unit Tests
- UI Tests
- Integration Tests