After create an account at Movie DB API, you will have a token to access the API.
You should specify the token in your
MOVIE_DB_API_TOKEN_DEBUG=<token here> MOVIE_DB_API_TOKEN_RELEASE=<token here>
Architecture and Stack Overview
- This layer provides an interface used as a repository. It provides a single abstraction to interact with differents Data Sources.
Repository -> Mappers
- They are used to convert the data objects to entity objects recognized by the domain layer.
- The APP fetches data from the Movie DB API. There is a code infrastructure using Retrofit where it is possible to keep this communication between the app and the server.
Repository -> Local Data Base
- The user can select their favorite movies and store them on a local database. There is a code layer using the Room library to keep easy the communication between the app and the Data Base.
Repository -> Local preferences
- The user can also define which is the application theme. Currently, the app supports night mode, light mode, and automatic (defined by Android OS).
- This layer is the way used by
ViewModelsto access the repository.
- Contains all elements required to build the user interface.
UI -> screens
Each package inside of screens represents a screen.
A screen is defined by a
Composablefunction that represents the screen itself, a
ViewModelrelated, and a data holder object which represents the UI state for that screen.
UI -> common
Composablewidgets, navigation graph definition, and others.
- The core layer starts the Dependency injection engine, the network setup, and the database configuration.
Tech Stack Summary
- Compose, Dagger Hilt, Coroutines, Retrofit, Room, Mockk.