Skip to content

Astronomy Picture of the Day Nasa(APOD) media listing and show picture details. Built to learn and use of Latest Android development libs using Coroutines, Flow, Dagger-Hilt, Architecture Components, MVVM, Room, Retrofit, Material Guideline) https://api.nasa.gov/

License

Notifications You must be signed in to change notification settings

pranaypatel512/APODNasa

Repository files navigation

APODNasa app

About

App related to show Astronomy Picture of the Day(APOD) for last seven days. An app to show media listing using APOD api having image/gif/video.

  • Always loading Media from local database (room). Remote data (from API) and Local data is always synchronized.
  • App can load media listing, details offline.
  • Clean and Simple Material UI.
  • Supporting dart-light theme.
  • Daily pictures sync up in the morning

Run a project

Package Structure

  • Root package: com.pranay.apodnasa
    • data : For data handling.
      • local : Classes related to manage local data using rooom database
      • remote.api : classes related to call remote api to get api data
      • repository : repository classes to manage and fetch local/remote data
    • di : provide hilt related dependency config classes
    • model : model class related response, database table etc
    • ui : UI related classes include default activity and fragment destination of navigation
    • util: Utility Classes / Kotlin extensions
    • worker: Created work manger worker to get scheduled api call to get APOD data and store in database

📷 Screenshots

Dark theme
Media listing Media listing with video item Media item details Video media item details
Light theme

Architecture

This app uses MVVM (Model View View-Model) architecture.

Built With 🛠

  • Kotlin : First class and official programming language for Android development.
  • Android Studio : The Official IDE for Android
  • Gradle : Build tool for Android Studio
  • Coroutines : For asynchronous and more..
  • Flow : A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
  • Android Architecture Components : Collection of libraries that help you design robust, testable, and maintainable apps.
    • ViewModel : Stores UI-related data that isn't destroyed on UI changes.
    • ViewBinding - Generates a binding class for each XML layout file present in that module and allows you to more easily write code that interacts with views.
    • Navigation : for Fragment navigation
    • WorkManager : Primary recommended API for background processing.
    • Room : SQLite object mapping library to store local data
  • Material Components for Android : Modular and customizable Material Design UI components for Android.
  • Dependency Injection :
    • Hilt-Dagger : Standard library to incorporate Dagger dependency injection into an Android application.
    • Hilt-ViewModel : DI for injecting ViewModel.
  • Retrofit : A type-safe HTTP client for Android and Java. Using for network api call.
  • Gson Converter : A Converter which uses Gson for serialization to and from JSON.
  • Glide - open source media management and image loading framework for Android
  • sdp and ssp : Provide common dimens sizes to support different screen wise size

Other points

  • Using navGraphViewModels extension for ViewModel that provide maintain data across given navigation graph to completed selling produce and show selling produce info on next page.
  • Using Navigation Animation for screen navigation

App color theming

  • Using color theming from Foodium app

Contribute

✉️ Get in touch!

Medium Twitter LinkedIn

Find this project useful ? ❤️

  • Support it by clicking the ⭐️ button on the upper right of this page. ✌️

License

About

Astronomy Picture of the Day Nasa(APOD) media listing and show picture details. Built to learn and use of Latest Android development libs using Coroutines, Flow, Dagger-Hilt, Architecture Components, MVVM, Room, Retrofit, Material Guideline) https://api.nasa.gov/

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages