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! π¬π