Git Product home page Git Product logo

sondertechnicaltest's Introduction

Sonder Trip - SonderTechnicalTest

The repository has contains the Sonder Technical test solution, where an Android project is created and followed the steps which were mentioned in the document. I named the application is Sonder Trip

Here is the screenshots of the application:

APK and Screen Video Link: https://drive.google.com/drive/folders/1xpdpaIYAnuIzitle6UmSv9NYvyimvFGS?usp=sharing

Application Flow

  1. A splash screen will be appeared
  2. After splash screen loaded successfully then Location Permission screen will be appeared.
  3. When location permission given then Home page will appear with a Bottom Navigation Bar where Map and Passenger items are available.
  4. In MAP screen current location will be auto selected, if user route different place then click on "Current location" button then current location will be marked. Then long press in the map will add another marker and "Get Direction" button will be appeared. Clicking on Get Direction button user will see a line of the direction. *Note: The Map API key is used here is not billing/active project so direction API is given Billing error.
  5. Under the passenger tab user can see the passenger list
  6. Clicking on passenger item user will see the details of the flight.

Technical Description

Here is the list of technologies are used to build this application:

  1. Kotlin
  2. MVVM Architecture
  3. Motion Layout : MotionLayout is used for animate the app icon in the Splash screen.
  4. Retrofit, OkHttp : To fetch the passenger data from API, I have used the network library which is Retrofit.
  5. Kotlin Coroutine : To reduce the main thread task we can divide the task in many thread asychronously using the Kotlin Coroutine using lifecycle scope. Here is the sample example:
   lifecycleScope.launch {
            viewModel.passengers.collectLatest { pagedData ->
                passengersAdapter.submitData(pagedData)
            }
        }
  1. Jetpack Component - Pagging 3 : Why pagging is required this application, because the passenger list has a massive amount of data and If I wanted to fetch these data ata single time it will take huge amount of time. So that pagination is required, the jetpack component which is Pagging3 is one of the most used jetpack component to perform the paginated data in the RecyclerView. It also better with Kotlin Coroutine and Live Data. For that need to create Pagging adapter where we can detect the Success and Error state.
  2. Google Map: Google Map API for Android, Places : Google Map is used for show the current location of the user. In this map user can add marker/point using long press. When the another marker added Get Direction will visibled. Click on get direction user can see the direction line using Google Places API and Direction API.
  3. Hilt (Dependancy Injection used)
  4. Unit test perform for a specific passenger view model.
  5. Jetpack Component - Navigation : Navigation is used for generate the BottomNavigationView , where I can see the clear view visibilty on the Android studio, here is the screenshot:

sondertechnicaltest's People

Contributors

aliahmedbd avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.