Application to test the Rick&Morty API, and test different libraries like the Jetpack Component suite.
The app currently consists of 3 screens:
- A list of characters screen, in which once the user enters de app, they can visualize a list of Rick&Morty characters taken from the API, and select one.
- A character detail screen, in which after selecting one character from the list, the user can visualize detailed information from said character, like their name, genre, and their last known location.
- A list of favorite characters screen.
- Dark and Light themes
- App:
- DI: the dependency injector package, where the modules and components are created.
- UI: with an MVVM pattern, everything is separated as features, the screens and logic behind them are found here.
- Utils: A variety of classes, extensions, and helpers to help and use across the application, that not necessarily have anything to do with the logic of the same.
- Framework: Contains the dataSource implementations with your mappers.
- Data: Contains the repositories Implementations and one or multiple Data Sources.
- DataSource: In which we have the source of the data we are going to work with, let it be the API abstraction, and/or the database.
- Repositories: Repositories are responsible to coordinate data from the different Data Sources. A sort of abstraction for the data sources in order to avoid working directly with them. We make calls to them and we can ignore whether the data comes from the network or a local database.
- Domain: Collection of entity objects and related business logic that is designed to represent the enterprise business model.
- Models: an abstraction of the objects that represent the logic of the project.
- TestShared: Collection of utilities to use in all the tests across the project.
- GitHub Actions
- Automatic PR verification including tests, linters
- All script are located in .github/workflows folder.
Series of workflows runs (in parallel) for every PR to main
branch:
./gradlew lint
- runs Android lint - required to merge PR./gradlew detekt
- runs detekt - required to merge PR./gradlew ktlintCheck
- runs ktlint - optional to merge PR./gradlew test
- run unit tests - required to merge PR./gradlew connectedAndroidTest
- run UI tests - required to merge PR