LottieFiles is a marketplace application where you can find animations.
- UI is implemented in declarative way using Jetpack Compose
- Dark Theme is supported. App randomly launches in dark mode for the sake of simplicity for now
- Design system is implemented for Buttons, Texts, Colors, Sizes
- Following structures are used for clean code: Entity/DTO, UseCase, Repository, Webservice, Database, ViewModel
- Data is transferred to UI using ViewModels
- Robolectric and Espresso is used for testing ViewModels in JVM environment for Unit testing
- Data from API is cached using Room
- Hilt is used for Dependency Injection
- Jetpack Compose Navigation is used for routing
- QR Code scan is not implemented as it will not provide a better understanding of code quality now.
- Error Handling is not implemented for Webservice. App will not crash but API will fail silently.
- Progress during API calls is not implemented.
- No credentials is required in order to login.
- CI/CD pipeline, Crashlytics, and other essential part of production system is missing.
This project uses the Gradle build system. To build this project, use the
./gradlew build
command or use "Import Project" in Android Studio.
There are one Gradle tasks for testing the project:
./gradlew test
- for running unit tests
For more resources on learning Android development, visit the Developer Guides at developer.android.com.
-
Lottie - Lottie animation library
-
Foundation - Components for core system capabilities, Kotlin extensions and support for multidex and automated testing.
- Jetpack Compose: https://developer.android.com/jetpack/compose
- Android KTX - Write more concise, idiomatic Kotlin code.
- Test - An Android testing framework for unit and runtime UI tests.
- Robolectric - Testing framework that brings fast and reliable unit tests to Android.
-
Architecture - A collection of libraries that help you design robust, testable, and maintainable apps. Start with classes for managing your UI component lifecycle and handling data persistence.
- Lifecycles - Create a UI that automatically responds to lifecycle events.
- Navigation - Handle everything needed for in-app navigation.
- Room - Access your app's SQLite database with in-app objects and compile-time checks.
- ViewModel - Store UI-related data that isn't destroyed on app rotations. Easily schedule asynchronous tasks for optimal execution.
-
Data transfer and serialization components
- OkHttp3 - HTTP consumption library.
- Retrofit - Typesafe API/Webservice definition library.
- KotlinX Serialization - Json Serialization/Deserialization library.
-
Third party and miscellaneous libraries
- Coil Compose-Ready Kotlin based image loading library
- Hilt: for dependency injection
- Kotlin Coroutines for managing background threads with simplified code and reducing needs for callbacks
- Refresh Versions: an easy way to manage dependency versions.