🙋♂️
Introduction An article sharing platform where you can personalize, subscribe to your favorite topics, get daily-read reminders, explore new authors, and share your articles. App built using Kotlin, Dagger Hilt, Room Database, Coroutines, Flow, AndroidX Glance, WorkManager, Coil etc.
📚
Documentation
We have prepared a detailed guide on every feature, API route, and project structure. Please visit here to know more about the same. Additionally, every major folder, such as /api
and /features
, contains short documentation in the Github repository itself.
📂
Repository overview SlimeKT has its backend built with Ktor. The folder /api
consists of our backend deployed on Heroku. SlimeKT Android application resides inside of the /app
folder.
App Architecture Diagram
It follows the recommended app architecture as stated in official Android documentation
📱
Sample, Screenshots and Demo
For more screenshots and screen-recording demo, please visit our documentation.
✨
What's next SlimeKT is a Work In Progress project and there are several features/ideas which are yet to be implemented. You can help us on our journey by contributing your skills. Please checkout our Contribution Guide for more.
🚀
Tech stack / Miscellaneous Features - Kotlin, Jetpack Compose, Work Manager, Glance API, Material You, Coroutines, Flow, Accompanist, Navigation Component, Ktor, Room Database, Coil, Dagger Hilt, Mockk etc.
- Observer Pattern: Data from the cache would be shown while new data is fetched from the server. Newly retrieved data gets updated immediately on the screen.
- WorkManager: App uses WorkManager API to update user's subscriptions and to fetch Daily Read articles.
- AndroidX Glance: Daily Read Widget with the power of Jetpack Compose.
- Material You: On Android 12 and above, you can have custom theme based on your device wallpaper.
Please visit the documentation of this project for detailed information.
⚒
Project Setup Guide Android App
You need to have Android Studio Bumblebee or Dolphin to set up this project locally. After downloading all the requirements, please import the project into Android Studio, build the project, and click Run.
Backend (API)
You need to have IntelliJ IDEA and MongoDB Compass installed. After downloading all the requirements, please import the /api
module into IntelliJ IDEA, build the project and click the Run icon beside main
function in Application.kt
file.
Test Cases (Android app)
Current Testing status - https://kasem-sm.github.io/SlimeKT/tests/status/
👷♂️
Contribution Guide and Contributors There are no special rules for contributing your expertise and making the open-source community more powerful. Just don't forget to file an issue or start a discussion so that I may not be surprised when you create a pull request. Running spotlessApply
before creating a pull request would be cherry on the cake.
- Special thanks to our contributors:
- The first one gets featured here
😎 - All contributors
- The first one gets featured here
🖋
Medium Articles related to this project - SlimeKT - Kotlin Powered open source project. (Android app with Ktor backend)
- Android’s IME Actions: Don’t ignore them. Read here
- Create Animated PlaceHolder for your Jetpack Compose text fields Read here
- When Jetpack's Glance met his fellow worker, WorkManager (Coming soon)
More articles by kasem-sm on Medium.
💖
Find this project useful? Support it by starring this repository. Join our Stargazers team!
🤙
Contact Direct Messages on My Twitter are always open. If you have any questions related to SlimeKT or Android development, ping me anytime!
💎
Credits - Tivi by chrisbanes - A divine project for me to explore. I refer to this project as Gold
🥇 . - Gabor Varadi - He is always willing to answer my questions. A great man and a blessing to the Android community (AKA, the
SavedStateHandle
preacher). - Doris Liu and Manuel Vivo - They always help review my code snippets and add their value to them.
- Hadi - Assisted me in improving the modularized structure of this project.
License
Copyright 2022 Kasem S.M
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.