ImaginativeShohag
Why-Not-Compose
Kotlin

A collection of animations, compositions, UIs using Jetpack Compose. You can say Jetpack Compose cookbook, showcase or play-ground if you want!

Last updated Jul 3, 2026
731
Stars
46
Forks
2
Issues
0
Stars/day
Attention Score
73
Language breakdown
No language data available.
โ–ธ Files click to expand
README

Why Not Compose!

A collection of animations, compositions, and UIs using Jetpack Compose. You can say Jetpack Compose cookbook, showcase or playground if you want!

Please feel free to ask for features or suggestions for improvements.

Developer Buy Me A Coffee GitHub release Google Play API ktlint

Notable Features & Libraries

  • MVVM Pattern
  • Navigation Component
  • Hilt
  • Everywhere dark mode support
  • A lot of Ready to use compositions
  • Material 3
  • Gradle Kotlin DSL
  • CI/CD
- ktlint - CodeQL - Baseline profile generation - Fastlane: Publish to Google Play
  • Material 3 examples
  • Animated Splash Screen (Introduced in Android 12)

Screenshots

Animations

| | | | |:---------------------------------------------------------------------:|:-----------------------------------------------------:|:-------------------------------------------------------:| | | | |

Compositions

| Preview | Preview | Preview | |:---------------------------------------:|:----------------------------------:|:----------------------------------------:| | Preview | Preview | Preview | | Preview | Preview | Preview | | Preview | Preview | Preview | | Preview | Preview | Preview | | Preview | | |

UIs

| Map View | OTP code verify | Web View | |:-----------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------:|:-------------------------------------------------------------------:| | | | |

Tutorials

  • Counter (Beginner)
  • Counter with ViewModel (Beginner)
  • AnimatedVisibility (Beginner)
  • Lottie (Beginner)
  • Select image and crop for upload (Intermediate)
  • Capture image and crop for upload (Intermediate)
  • Permission (Beginner)
  • Data Fetch and Paging (Advanced)
  • Tic-Tac-Toe (Advanced)
  • OneSignal and Broadcast (Intermediate)
  • ExoPlayer (Advanced)
  • CMS (Advanced)
- Memory and storage caching | Counter | Animated Visibility | Lottie | |:-----------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------:| | Exo Player | Tic-Tac-Toe | CMS | | Deep Links | | |

TODO

  • [ ] Add accompanist WebView
  • [ ] x, y, z translation simulation
  • [ ] Shadow manipulation with device gyroscope
  • [ ] Composition: Bottom Sheet
  • [ ] Fix custom LazyGridScope.items
  • [ ] List with LazyGrid
  • [ ] Paging with LazyGrid
  • [ ] Update to new storage permission
  • [ ] Create color ready for dark and light mode
  • [ ] AlarmManager example
  • [ ] Update CheckBox code (see example from AOSP)
  • [ ] Month-Picker component
  • [ ] Upgrade OneSignal lib
  • [ ] New: File browser using MediaStore
  • [ ] Get sidebar from Emudi app (https://www.youtube.com/watch?v=HNSKJIQtb4c)
  • [ ] Migrate ExoPlayer: https://developer.android.com/media/media3/exoplayer/migration-guide
  • [ ] Update all LaunchedEffect with lambda issue using rememberUpdatedState: https://developer.android.com/develop/ui/compose/side-effects#rememberupdatedstate
  • [ ] Add example for AppColorLocal from Jaber vai

Note

Use the following command to fetch version updates.
./gradlew refreshVersions
with klint. Apply spotless using the following command.
./gradlew --init-script gradle/init.gradle.kts spotlessApply

Setup

Map API Key

Open the local.properties in your project level directory, and then add the following code. Replace YOURAPIKEY with your API key.

MAPSAPIKEY=YOURAPIKEY

Go REST API Key

Open the local.properties in your project level directory, and then add the following code. Replace YOURAPIKEY with your Go REST API key.

CMSAPIKEY=YOURAPIKEY

Other Interesting Repos

Credits

Licence

Copyright 2021 Md. Mahmudul Hasan Shohag

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.

ยฉ 2026 GitRepoTrend ยท ImaginativeShohag/Why-Not-Compose ยท Updated daily from GitHub