Astronomy Picture of the Day Nasa(APOD) media listing and show picture details.

Overview

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!

Find this project useful ? ❤️

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

License

You might also like...
A media player, currently only for Android, that allows you to play songs in background for free
A media player, currently only for Android, that allows you to play songs in background for free

Just Listen A music player currently only for android. It is using Audius public APIs to display and get the playlists/songs. Available on google play

The WeeBe application is a social media-type app built on Ktor framework

The WeeBe application is a social media-type app built on Ktor framework that allows users to exchange various content connected with mental health, motivation, psychology, and improving oneself. Users can share posts with texts, images, videos, and links, as well as discuss the content in the comment section

This Kotlin Multiplatform library is for accessing the TMDB API to get movie and TV show content. Using for Android, iOS, and JS projects.

Website | Forum | Documentation | TMDb 3 API Get movie and TV show content from TMDb in a fast and simple way. TMDb API This library gives access to T

myMaps displays a list of maps, each of which show user-defined markers with a title, description, and location.

My Maps Trevor Carrell myMaps displays a list of maps, each of which show user-defined markers with a title, description, and location. The user can a

A simple App which fetches data from NewYork times api and show news to the user
A simple App which fetches data from NewYork times api and show news to the user

Stay-TheNewsApp This is a simple java app, which fetches data from NewYork times api and show news to the user, News can be seen from various categori

BooksApp - Show the books list from an API with using retrofit2, picasso and JSON libraries
BooksApp - Show the books list from an API with using retrofit2, picasso and JSON libraries

BooksApp Books App Show the books list from an API with using retrofit2, picasso

An Online Meme Sharing app with swipeable vidoes, user can like, share different videos, each viewpager item has one video to show.
An Online Meme Sharing app with swipeable vidoes, user can like, share different videos, each viewpager item has one video to show.

MemesSharing An Online Meme Sharing app with swipeable vidoes, user can like, share different videos, each viewpager item has one video to show. 1. Fl

Client App to show the information of the searched Pokemon
Client App to show the information of the searched Pokemon

PokemonSearch Client App to show the information of the searched Pokemon. It uses Pokemon SDK to show all the information. How to use it. Set up Take

Demo to show ongoing notification on Huawei P50 Pocket
Demo to show ongoing notification on Huawei P50 Pocket

Bali Demo Demo code to show different ongoing notification types on the Huawei P50 Pocket external screen. Currently the external screen provides THRE

Owner
pRaNaY
Android @mutualmobile | Kotlin | Compose | Flutter
pRaNaY
A Movie listing app with unit tests and a couple of UI tests

MovieListings App This app is a Movie listing app with unit tests and a couple of UI tests. The app gets a list of movies from a public API, and the d

Abayomi Akanji 1 Dec 1, 2021
A sample code taking picture in android with app permission and simple ui

Android Taking Picture Sample Just sample code taking picture in android with ap

M. Hafizh Anbiya 2 Dec 29, 2021
An application to enable a user to manage a product listing

iProcureAndroidTest This is an application to enable a user to manage a product listing (in an e-commerce environment). ?? . Written in Kotlin and imp

Kakashi 6 Mar 7, 2022
Portfolio application for the purpose of listing events according to the return of an API

My Event Schedule Aplicativo portifólio com a finalidade de listar eventos de ac

Ricardo Souza 2 Feb 26, 2022
KirinApp - Schedule, Picture Sharing App

Kirin App 일정 및 사진 공유 앱 Android Room Android DB API. 공식가이드 참고 Navigation Componen

null 1 Mar 5, 2022
A simple store project that includes a list of products, search on products, details of the product, and review submission.

AdidasTest A simple store project that includes a list of products, search on products, details of the product, and review submission. Summary Technol

Mohammad 5 May 8, 2021
An Android app where you can view and examine the details of fast food divided into categories.

?? FastFood An Android application where you can view and examine the details of fast food divided into categories. ?? Tech Stack & Open-Source Librar

Muhammed Esad Cömert 3 Oct 7, 2022
Track RPG Playthrough Details

Shattered Ring Tracker This project is an RPG game tracker where the user can keep a journal of details about their game, including: NPCs Track the NP

Nathan Contino 1 Mar 16, 2022
MiStoryView is a simple configurable library to integrate stories features into your social media android application.

MiStoryView MiStoryView is a simple configurable library to integrate stories features into your social media android application. Preview Key feature

MindInventory 35 Dec 22, 2022
Mock up social media android application created to interact with a backend Java server using GraphQL.

The Community Board Project Authorship: author: dnglokpor date: may 2022 Project Summary: The Community Board Project consists of a Java Spring Boot b

Delwys Glokpor 1 May 17, 2022