Skip to content
/ Car Public

Create an android app based on the requirement for the take home exam.

License

Notifications You must be signed in to change notification settings

TheSetox/Car

Repository files navigation

Car

Requirement

requirement.png

Library

  • Jetpack Compose - for rapid and concise UI development.
  • Hilt for dependency Injection - for managing class dependencies.
  • Mockito - used for helping mock object in unit tests.
  • KotlinX Serialization - for deserialization of Json object.
  • Room - for accessing sqlite database (Added for Bonus Level)

Others

  • Added spotless to enforce coding guidelines.
  • Coroutine and Flow - for asynchronous access to database. (Added for Bonus Level)

I. Level 1 Result

Functionality

  • Added Stencil font for app title.
  • Added promotion section.
  • Added main list for showcasing the featured cars.
  • Fetch the cars using local json file.
  • Add a 5 star rating limit when showing rating of a car.
  • When getting the name of the car to put in the list, show both make and model name.
  • When Land Rover is the item in the list, use the model name only.
  • When Mercedes Benz is the item in the list, use the make name only.
  • Shorten the price when price range above 1,000.
  • Load local image by fetching the image id in ImageDataSource.
  • Enforce coding guidelines using spotless.
  • Add Unit testing for no dependency in Android.
  • Add Android Test when dependent in Android.
  • Add Github Action to make sure project can be run in other environment.
  • Add hilt a dependency injection library to manage dependencies.
  • Use compose to create the UI.
  • Add colors and textStyle for reusable utility components.

Sample Screenshot

Project Architecture

level1.png

II. Level 2 Result

Functionality

  • Add bulletin point image.
  • Add expandable functionality.
  • Add list of pros and cons.
  • Add default value is expanded.
  • Add click event in main list.
  • Update and add more unit tests.

Sample Screenshot

Project Architecture

level2.png

III. Level 3 Result

Functionality

  • Add filter section UI.
  • Add dropdown functionality.
  • Add fetching of list of make and list of model.
  • Update and add more unit tests.
  • Add filter functionality.

Sample Screenshot

Project Architecture

level3.png

IV. Bonus Level Result

Functionality

  • Add database functionality.
  • Add coroutine implementation.
  • Add state flow implementation.
  • Add LocalSource for abstraction for database.

Project Architecture

bonus_level.png

User Interface Draft

ui_draft.png

About

Create an android app based on the requirement for the take home exam.

Resources

License

Stars

Watchers

Forks

Languages