Coder Social home page Coder Social logo

avidraghav / spacedawn Goto Github PK

View Code? Open in Web Editor NEW
129.0 3.0 12.0 8.35 MB

Space Dawn is a demo app built to demonstrate the use of Mutli-Module Clean MVVM Architecture with Jetpack Compose by following Material-3 guidelines along with other MAD libraries such as Dagger-Hilt, Room Database, Coroutines, Navigation, WorkManager etc. for building Android Apps

Home Page: https://play.google.com/store/apps/details?id=com.raghav.spacedawnv2

License: Apache License 2.0

Kotlin 100.00%
android clean-architecture coil-kotlin coroutines-android dagger-hilt jetpack-compose kotlin moshi navigation-architecture-component retorfit2

spacedawn's Introduction


Space Dawn

Android-CI Actions Status GitHub license GitHub Repo stars Google Dev Library Kotlin Weekly
Offline First ktlint Contributions Highly Welcome

Space Dawn is a demo app built to demonstrate the use of Mutli-Module Clean MVVM Architecture with Jetpack Compose by following Material-3 guidelines along with other MAD libraries. The app lets a user Save reminders/alarms for the upcoming Rocket Launches From around the world.

You can download the app from Playstore or download the apk from ๐Ÿš€

Playstore Space Dawn

๐Ÿ›  Built With

Architecture Multi-Module Clean MVVM Architecture
UI Framework Jetpack Compose
๐Ÿ’‰ DI Dagger-Hilt
๐ŸŒ Networking Retrofit + Moshi
๐Ÿ’พ Local Database Room Database
๐Ÿงญ Navigation Compose Destinations Navigation
๐Ÿ—๏ธ Persistent Background Work WorkManager + AlarmManager
๐Ÿงต Asynchronous Work Coroutines
๐Ÿ–ผ๏ธ Image Loading Coil

๐ŸŽฅ Working Demo

demo_video.mov

The reminder in the demo fires right away and this is purposeful as to demonstrante the functionality.


๐Ÿ“ฑ Screenshots (Dark and Light Theme)

Upcoming Launches Screen Reminders Screen Notification Sample
Upcoming Launches Screen Reminders Screen Notification Sample

๐Ÿ—๏ธ Architecture Diagram


โœ”๏ธ Tests

Tests are continuosly being written. Check the test and androidTest source sets for already available test cases.

๐Ÿš€ The app uses Launch Library 2 API for getting upcoming Rocket Launches.

License

Copyright 2023 Raghav Aggarwal

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

spacedawn's People

Contributors

avidraghav avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

spacedawn's Issues

The code which handles Permissions for the 'Set Reminder' Feature is not scalable

There are issues with code which handles permissions for the Set Reminder Feature to work which are

  1. The code is not scalable, in future if any further permission is needed from a user to make the Set Reminder feature work then the lot of changes will be needed to done in both domain and UI layer.

The code is written the way it is because I couldn't devise a scalable way for asking the user for Runtime and Special Permissions in tandem. Scalable way to handle multiple runtime permission can be done via a queue data structure but the way a user grants a Special Permission is different from the way he grants a runtime permission hence the whole fiasco.

Handle Device-boot scenario for Launch Reminders

If the device is booted then all the reminders set will get cancelled as this is the default behaviour for any reminder set via AlarmManager API.
Intercept the ACTION_BOOT_COMPLETED broadcast from within the app and use it to again set the reminders.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.