Wak+ is an application that helps you to conveniently access to WAKTAVERSE member's SNS content such as YouTube, Twitch, Instagram, and Twitter in one app.
- Minimum SDK level 23
- Kotlin based, Coroutines + Flow for asynchronous.
- JetPack
- Lifecycle - Create a UI that automatically responds to lifecycle events.
- LiveData - Build data objects that notify views when the underlying database changes.
- ViewModel - Store UI related data that isn't destroyed on app rotations.
- Room - Constructs Database by providing an abstraction layer over SQLite to allow fluent database access.
- DataBinding - Useful to bind data directly through layouts xml file, so no
findViewById()
anymore. - Navigation - Handles navigating between your app's destinations.
- DataStore - Data storage solution that uses Kotlin coroutines and Flow to store data asynchronously, consistently, and transactionally.
- Hilt - Dependency injection.
- Coil - An image loading library for Android backed by Kotlin Coroutines.
- Retrofit2 & OkHttp3 - Construct the REST APIs.
- Node.js with TypeScript
- Firebase
- Cloud Firestore
- Cloud Functions
- WebSub
- Youtube - Google Pubsubhubbub
- Twitch - EventSub
Switch from Twitch to Youtube Content | Show Content from the Selected Streamer | Show Content from All Streamers |
---|---|---|
Wak+ is based on the MVVM architecture and the Repository pattern.
Currently, data is obtained through direct API calls from web services such as Youtube and Twitch.
However, this method has an API limitation problem, so the method of caching in Firebase Cloud Firestore will be applied.
Designed and developed by 2022 Junseop Lim
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.