Booking App

This app is built to demonstrate the modern design of an Android application


We load Rooms data from API and store it in a Room database (persistence storage)

The Rooms are always loaded from a local database. Remote and local data is always synchronised

The app is offline-capable

The app supports a dark theme

The API used in this app is statically hosted here


The application is built using the following tools

Kotlin – Official programming language for Android development

Gradle Kotlin DSL  – By default, uses Gradle build system with Kotlin DSL

Android Architecture Components – Android Architecture Components are a part of Android Jetpack

  •  LiveData – Notify views of any database changes.
  •  Navigation – Handle everything needed for in-app navigation.
  •  ViewModel – Manage UI-related data in a lifecycle conscious way.
  •  ViewBinding -Declaratively bind UI elements in our layout to data sources of our app.
  •  Room -Fluent SQLite database access.

Coroutines – A very efficient and complete framework to manage concurrency in a more performant and simple way

Flow – A better way to handle the stream of data asynchronously that executes sequentially.

Dependency Injection

Retrofit – Android Networking library that reduces a lot of Boilerplate code and helps in consuming the web service easily

Moshi – JSON library for Android

Moshi Converter – A Converter that uses Moshi for serialization to and from JSON.

Coil-kt – An image loading library for Android backed by Kotlin Coroutines

Material Components for Android – Modular and customizable Material Design UI components for Android


This app uses Model View View-Mode ( MVVM ) architecture


View Github