Skip to content

AlexTrotsenko/TempelhofTour

Repository files navigation

Introduction

TempelhofTour is Android app, which implements three user stories:

  1. As a potential traveler, I want to see a list of short previews of reviews for one of our most popular Berlin tours.
  2. As a potential traveler, I want to just scroll down to read all the reviews for one of our most popular Berlin tours.
  3. As a potential traveler, I want to click to a list item and see the full review with details on another screen.

Prerequisites

Here are the prerequisites for running the sdk and example app in development and production:

  1. Install Android Studio 4.1+.
  2. JDK: A copy of the latest OpenJDK comes bundled with Android Studio. Separate JDK can be used as well. See documentation for more details.

Structure

This repo contains app and buildScr projects:

  • app - Android app, which loads reviews as user scrolls and display review details on click.
  • buildScr - centralizes dependencies management of libs and plugins, which are used by the app.

Project set-up

Key facts about project set-up and architecture:

  1. Gradle build is written in Kotlin DSL.
  2. Project follows Clean Architecture principles: e.g. business logic is separated from implementation details of network or db layer, etc.
  3. Project uses MVVM pattern in order to separate UI logic from app business logic: e.g. UI layer (Fragment) observes and renders data from view model using Kotlin Flow and Jetpack's ViewModel.
  4. Networking is implemented using Retrofit.
  5. DB layer is implemented using Jetpack's Room Persistence Library.
  6. Batch data loading is implemented using Jetpack's Paging 3 lib.
  7. Dependency Injection is implemented using Hilt.
  8. In-app navigation is implemented using Navigation component.
  9. Asynchronous operations are implemented off UI thread using Kotlin Coroutines.
  10. Image loading is implemented using [Glid]e(https://bumptech.github.io/glide/).

Unit tests are implemented using:

Possible next steps

Should project be further developed - implementation of following items should be considered:

  • Better UI/UX - to find-out proper solution together with designers team.
  • UI/integration tests (keep in mind about possible migration to Jetpack Compose)
  • Implementation of "advanced" Clean Architecture principles: use-cases, moving business logic to separate module, etc.
  • Decide if app should show reviews for more than one Tour. If it's not required - drop dynamic tour id functionality.
  • More unit tests

About

paging3 + room

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages