|
1 | 1 | # tvmaze-android
|
2 | 2 | TVmaze Android app
|
| 3 | + |
| 4 | +An Android app for [TVmaze service](https://www.tvmaze.com/api). |
| 5 | + |
| 6 | +## Features |
| 7 | +- Authentication using PIN or Biometric (fingerprint) if available. |
| 8 | +- Shows list with pagination. |
| 9 | +- Add/remove/list favorite Shows. |
| 10 | +- Display Show details with Seasons and Episodes. |
| 11 | +- Display Episode details. |
| 12 | +- Search for a Show or a Person. |
| 13 | +- Show Person and list of Shows he or she participated in. |
| 14 | + |
| 15 | +## Architecture and implementation details |
| 16 | +App takes advantage of MVVM architecture + Jetpack Compose, LiveData for state management, Hilt for dependency injection, Retrofit for network requests, Biometric for fingertip authentication, among others. |
| 17 | + |
| 18 | +Two UI flows live under [authentication](https://github.com/tolmachevroman/tvmaze-android/tree/main/app/src/main/java/com/tv/maze/ui/authentication) and [main](https://github.com/tolmachevroman/tvmaze-android/tree/main/app/src/main/java/com/tv/maze/ui/main) packages. They contain `Composable` `NavController`s navigating between several `Composable` screens. |
| 19 | + |
| 20 | +- Regarding PIN code to open the app, since there's no way to recover it, once you set it up, if you forget it you'll have to reinstall the app or use biometric authentication. |
| 21 | + |
| 22 | +- Regarding pagination, API return 250 items on one page, so next page is fetched after nearly 250 items are scrolled. Backend caches this data for up to 24 hours, and so to save space and unnecessary requests app caches the data too. App [stores json files for each page](https://github.com/tolmachevroman/tvmaze-android/blob/main/app/src/main/java/com/tv/maze/data/TVMazeRepository.kt#L28), and reads data from them if 24 hours have not passed or page is not a newer one. |
| 23 | + |
| 24 | +## Screenshots |
| 25 | + |
| 26 | +Login | Create new PIN code |
| 27 | +:-------------------------:|:-------------------------: |
| 28 | + |  |
| 29 | + |
| 30 | +--- |
| 31 | +All Shows | Favorite Shows |
| 32 | +:-------------------------:|:-------------------------: |
| 33 | + |  |
| 34 | + |
| 35 | +--- |
| 36 | +Search, shows found | Search, people found |
| 37 | +:-------------------------:|:-------------------------: |
| 38 | + |  |
| 39 | + |
| 40 | +--- |
| 41 | +Different placeholders for actress and actors | Actress details |
| 42 | +:-------------------------:|:-------------------------: |
| 43 | + |  |
| 44 | + |
| 45 | +--- |
| 46 | +Show details | Episode details |
| 47 | +:-------------------------:|:-------------------------: |
| 48 | + |  |
0 commit comments