Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/haroldadmin/moonshot

A SpaceX companion app for Android
https://github.com/haroldadmin/moonshot

android android-jetpack dagger dark-theme epoxy kotlin kotlin-coroutines material-design mvi spacex spacex-api vector

Last synced: 12 days ago
JSON representation

A SpaceX companion app for Android

Awesome Lists containing this project

README

        






# MoonShot
###### A SpaceX Companion App

Get it on Google Play

MoonShot is a SpaceX companion app to help you keep up with their launches. It uses the [SpaceX API](https://github.com/r-spacex/SpaceX-API) to fetch data.

MoonShot is built using [Vector](https://github.com/haroldadmin/Vector), a Kotlin Coroutines based MVI architecture library for Android.

### Features

* View Next Launch information right on the home page
* Get reminders before every launch
* View all the rockets used by SpaceX along with the launches they have attempted
* View Launch Pad information about every launch
* Ability to search through all launches, launch pads and rockets.
* Complete offline support.
* Clean, minimal design with Dark theme support.
* And a lot, lot more.

### Project Architecture

* [Vector](https://github.com/haroldadmin/Vector), for an MVI architecture pattern and state management.
* [Kotlin Coroutines](https://github.com/Kotlin/kotlinx.coroutines) for nearly all asynchronous operations
* [Network Response Adapter](https://github.com/haroldadmin/CoroutinesNetworkResponseAdapter) to easily handle error states in network calls.
* [Epoxy](https://github.com/airbnb/Epoxy) to build most of the UI.
* [Room](https://developer.android.com/topic/libraries/architecture/room) for the local persistence layer
* [Moshi](https://github.com/square/moshi) for JSON parsing
* [Dagger](https://github.com/google/dagger) for Dependency Injection.
* [Navigation Architecture Component](https://developer.android.com/guide/navigation/navigation-getting-started) for in-app navigation
* Multi Module app following Modularization by feature, with every feature sharing the same repository layer

### Contribution

I am happy to accept contributions from the community. Please file issues before making Pull Requests.

This project uses [Firebase Crashlytics](https://firebase.google.com/docs/crashlytics) for crash reporting. To setup your project locally, you will need to create an new Firebase Project on the [Firebase Console](https://console.firebase.google.com). Once the setup process is complete, you will have the opportunity to download the `google-services.json` file. Place it in the `app/` folder and build your project.