Deddit
Functionality
The following functionality is completed:
- Explore Memes from reddit
- Apply filter to enjoy best subreddits
- Notification using Firebase Cloud Messaging
- Paginating data
- Download and Share your meme
API
- Meme API : https://github.com/D3vd/Meme_Api
- Firebase Cloud Messaging API : https://fcm.googleapis.com/fcm/send
Tech stack & Open-source libraries
- Minimum SDK level 26
- Kotlin based, Coroutines + Flow for asynchronous.
- Hilt for dependency injection.
- Jetpack
- Lifecycle - Observe Android lifecycles and handle UI states upon the lifecycle changes.
- ViewModel - Manages UI-related data holder and lifecycle aware. Allows data to survive configuration changes such as screen rotations.
- DataBinding - Binds UI components in your layouts to data sources in your app using a declarative format rather than programmatically.
- Paging3 - It has support for requesting the next page to load more data automatically.
- Work Manager - WorkManager is intended for tasks that require a guarantee that the system will run them even if the app exits.
- DataStore - DataStore preference is a data storage solution. It allows us to store key-value pairs (like SharedPreferences)
- Architecture
- MVVM Architecture (View - DataBinding - ViewModel - Model)
- Repository Pattern
- Retrofit2 & OkHttp3 - Construct the REST APIs.
- Moshi - A modern JSON library for Kotlin and Java.
- Glide - Loading images from network.
- Material-Components - Material design components for building ripple animation, and Cardview
- Shimmer-Layout - The motive of using the Shimmer layout is to inform the user that the structure is currently loading.
- Lottie - Lottie file is a JSON-based animation filet that enables developers to implement animations on any platform as easily as implementing static assets.
Video Walkthrough
Deddit |
---|
Deddit.mp4
Architecture
Deddit is based on the MVVM architecture and the Repository pattern.