This project is a playlist manager for Youtube content. (In development)
Youtube has very bad playlist & chromecast queue usability.
It's a learning project to hone my Material / Jetpack / Kotlin / Coroutines / Chromecast skills
See the app website here: https://cuer.app
Using
- Kotlin Multiplatform
- Shared modules: (shared, domain, database, netKmm) shared domain model and common app components
- Website module: website (kotlin JS module)
- Android app module: app
- iOS App: ios_app
- Remote module: remote (web / react interface)
- Material Design Libraries & Themes (Day/Night)
- SwiftUI (iOS)
- Jetpack Libraries
- Room
- Lifecycle
- Androidx / KTX
- Navigation
- Jetpack Compose
- Architecture (I have used few different patterns for practice evaluation)
- MVI: (using https://arkivanov.github.io/MVIKotlin/) - e.g. https://github.com/sentinelweb/cuer/tree/develop/shared/src/commonMain/kotlin/uk/co/sentinelweb/cuer/app/ui/player
- MVVM: e.g. https://github.com/sentinelweb/cuer/tree/develop/app/src/main/java/uk/co/sentinelweb/cuer/app/ui/playlist_item_edit
- MVP e.g. https://github.com/sentinelweb/cuer/tree/develop/app/src/main/java/uk/co/sentinelweb/cuer/app/main
- Kotlin (1.4)
- Coroutines
- Serialisation
- Firebase
- Storage
- Crashlytics
- Chromecast (using: https://github.com/PierfrancescoSoffritti/Android-YouTube-Player)
- Koin
- Glide
- Test
- JUnit 4
- Mockk
- Hamcrest
- KotlinFixture
- Android X Test - enables the same code to be used for robolectric and espresso tests
- Robolectric
- Espresso
- Room test
- Koin test
- Coroutines test
- Github Actions (Build / Test)
- make schema changes in entity
.sq
files - make migration script to update database :
old_dbVersion.sqm
- if the new db version is 2 -> use1.sqm
./gradlew database:generateCommonMainDatabaseSchema
./gradlew --info database:verifySqlDelightMigration