Android companion app to https://1001albumsgenerator.com/. This is a Kotlin Multiplatform project targeting Android, iOS, Desktop (JVM).
- Offline-First (you still need to be online to rate and get your next album)
- Dark Mode
- Most features from the website:
- Current Album
- History
- Summary
- Global Statistics
- Rate your album using the built-in webview
- Android App & Desktop
- So far Desktop basically runs the Android design. The design isn't customized to fit desktop yet. You should view the desktop app as a way to run the Android app.
The data displayed by the app is from 1001AlbumsGenerator API.
The app uses the following multiplatform dependencies in its implementation:
- Compose Multiplatform for UI
- Compose Navigation 3
- Ktor for networking
- Coil for image loading
- Metro for dependency injection
- Room for local storage
- DataStore for key-value storage
- Kotlinter for linting and formatting
Currently all shared code in inside the sharedUI/commonMain directory.
datasources: Network & Cache related codedi: Dependency Injection configurationdomain: Domain modelspresentation: UI related code
- saral-apps/ComposeMultiplatformWebview#4
- Rating an album does not update the value in the history
- This is because we fetch the info on app start, including the unrated album. In theory, we could refetch the entire info after rating again, but that seems wasteful.
- https://1001albumsgenerator.com/ Fantastic project, absolutely loving it
- Robert Munro Github Actions
- Logo https://www.shutterstock.com/image-vector/dove-pigeon-on-vinyl-record-music-2039271557
- Amazon Music from Icon8
- Login Screen https://wallpapersafari.com/w/MwKbEO
- Tabler Icons: Wikipedia, Tidal, Spotify, Deter
- Simple Icons: Apple Music, YouTube Music
- Lucide Icons: Star
- Qobuz https://www.svgrepo.com/svg/504778/qobuz
To run the application on android device/emulator:
- open project in Android Studio and run imported android run configuration
To build the application bundle:
- run
./gradlew :androidApp:assembleDebug - find
.apkfile inandroidApp/build/outputs/apk/debug/androidApp-debug.apk
Run the desktop application: ./gradlew :desktopApp:run
Run the desktop hot reload application: ./gradlew :desktopApp:hotRun --auto
To run the application on iPhone device/simulator:
- Open
iosApp/iosApp.xcprojectin Xcode and run standard configuration - Or use Kotlin Multiplatform Mobile plugin for Android Studio
Learn more about Kotlin Multiplatform