







RandomBoxd is a Kotlin Multiplatform project designed to fetch a random movie from a Letterboxd user’s watchlists or custom lists. This app is built for Android and iOS devices. ๐ฑ๐ฌ
- ๐ฒ Fetch a random movie from a Letterboxd user’s watchlist or custom lists.
- ๐ฑ Supports Android and iOS platforms.
- ๐ Seamless deep linking with the Letterboxd app.
- ๐ Intuitive user search functionality.
- ๐ท๏ธ Stores and displays previously entered UserNames locally via Room, shown as tappable tags for quick reuse or deletion.
This project follows the Clean Architecture principles to ensure a scalable and maintainable codebase.
-
/composeApp
is for code that will be shared across your Compose Multiplatform applications.commonMain
contains code common for all targets.- Other folders include platform-specific code (e.g.,
iosMain
for iOS-specific code like CoreCrypto integration).
-
/iosApp
contains iOS applications.- Even if you’re sharing UI with Compose Multiplatform, this folder is the entry point for the iOS app.
- This is also where you can add SwiftUI code if needed.
- Kotlin Multiplatform Mobile (KMP) – Shared logic for Android and iOS.
- Jetpack Compose – UI for Android.
- Ktor – Network requests.
- Coroutines & Flow – Asynchronous programming.
- Koin – Dependency Injection.
- Coil – Image loading.
- Room – Database.
- Navigation Compose – Jetpack Compose navigation.
- Kotlinx Serialization – JSON serialization.
- Spotless – Code formatting.
- Junit5 – Unit testing.
- Turbine – State testing.
- Jacoco – Code coverage.
RandomBoxd is built with full localization support, allowing the app to be translated into any language.
- ๐ณ๏ธ Uses Kotlin Multiplatform’s localization tools for seamless translations.
- ๐ Supports dynamic text updates based on user preferences.
- ๐ Easily adaptable for different regions and languages.
RandomBoxd’s codebase is tested with:
- ๐งช JUnit5 for unit tests.
- ๐ Turbine for verifying Kotlin Flow emissions and state changes.
- ๐ Ktor Client Mock for mocking and testing network requests.
- ๐ Jacoco to measure and ensure code coverage across the project.
-
Clone the repository:
git clone https://github.com/Nacchofer31/RandomBoxd.git
-
Open the project in Android Studio (latest version with KMP Plugin).
-
Run spotless commmands:
./gradlew :composeApp:spotlessApply
-
Generate jacoco reports:
./gradlew :composeApp:jacocoTestReport
-
Start selecting random movies from Letterboxd lists! ๐๏ธ
Feel free to open issues or submit pull requests to improve the project. ๐ ๏ธ
This project is licensed under the MIT License.
Enjoy RandomBoxd and never struggle to pick a movie again! ๐ฌ๐

Leave a Reply