Skip to content

sentrionic/albums-generator-app

Repository files navigation

1001 AlbumsGenerator App

Android companion app to https://1001albumsgenerator.com/. This is a Kotlin Multiplatform project targeting Android, iOS, Desktop (JVM).

Demo Video

Demo.mp4 (external site)

Features

  • 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.

Stack

The data displayed by the app is from 1001AlbumsGenerator API.

The app uses the following multiplatform dependencies in its implementation:

Architecture

Currently all shared code in inside the sharedUI/commonMain directory.

  • datasources: Network & Cache related code
  • di: Dependency Injection configuration
  • domain: Domain models
  • presentation: UI related code

Known Issues

  • 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.

Credits

Icons

KMP Setup

Build and Run Android Application

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 .apk file in androidApp/build/outputs/apk/debug/androidApp-debug.apk

Desktop

Run the desktop application: ./gradlew :desktopApp:run
Run the desktop hot reload application: ./gradlew :desktopApp:hotRun --auto

iOS

To run the application on iPhone device/simulator:


Learn more about Kotlin Multiplatform