Skip to content

Latest commit

 

History

History
135 lines (100 loc) · 6.98 KB

File metadata and controls

135 lines (100 loc) · 6.98 KB

Crypto Challenge

Introduction

Thank you for participating in the Android Apprenticeship Program! Here, you'll find instructions for completing the challenge.

The Challenge

The purpose of the challenge is for you to demonstrate your Android skills. This is your chance to show off everything you've learned during the course!!

You will build and deliver a whole Android application on your own. We don't want to limit you by providing some fill-in-the-blanks exercises, but instead request you to build it from scratch. We hope you find this exercise challenging and engaging.

The goal is to build an application that will use the Bitso REST API which must include:

  • A screen that shows all available currencies.
  • A detail screen for every currency.
  • Testing coverage.
  • CI/CD.
  • Persistence.

Requirements

These are the main requirements we will evaluate:

  • Use all that you've learned in the course:
    • Best practices
    • Api design
    • UI design
    • Design patterns
    • Testing

Getting Started

To get started, follow these steps:

  1. Fork this project
  2. Make your project private
  3. Grant your mentor access to the project
  4. Commit periodically
  5. Apply changes according to the mentor's comments
  6. Have fun!

Deliverables

We provide the delivery dates so you can plan accordingly; please take this challenge seriously and try to make progress constantly.

It’s worth mentioning that you’ll ONLY get feedback from the review team for your first deliverable, so you will have a chance to fix or improve the code based on our suggestions.

For the final deliverable, we will provide some feedback, but there is no extra review date. If you are struggling with something, contact your mentor and peers to get help on time. Feel free to use the slack channel available.

First Deliverable (Pending...)

Based on the self-study material and mentorship covered until this deliverable, we suggest you perform the following:

  • Create a network client in order to consume the next services and use the gson adapter to get easily the parsed data classes.

  • Search fo images that represent the currencies and add the image in the list of currencies.

  • Work with MVVM and LiveData in order to design the application.

    • Create a screen that will show the list of currencies by using the available-books service
    • Create a detail screen that will show the last price, higher and lower price. Also, display the list of asks and bids for the specific currency by using the ticker and order-book services
  • Use best practices

Note: what’s listed in this deliverable is just for guidance and to help you distribute your workload; you can deliver more or fewer items if necessary. However, if you deliver fewer items at this point, you have to cover the remaining tasks in the next deliverable.

Second Deliverable (Pending...)

Based on the self-study material and mentorship covered until this deliverable, we suggest you perform the following:

  • Add persistence with room in order to use the application when the user is offline.
  • Add the okhttp library in order to use the HttpLoggingInterceptor for all network events and also add a header with the user agent.
  • Implement some function types, lambdas and extension functions.
  • Add some unit tests and ui tests.
  • Do UI refactor, update you layouts by using constraintLayout.
  • Use best practices.

Note: what’s listed in this deliverable is just for guidance and to help you distribute your workload; you can deliver more or fewer items if necessary. However, if you deliver fewer items at this point, you have to cover the remaining tasks in the next deliverable.

Final Deliverable (Pending...)

  • Set up CI/CD pipeline by using CircleCI or Bitrise.
  • Add a linter in order to check your code.
  • Use some advanced kotlin features like "Inline Functions, Tail Recursive, Delegated Properties and Collection Operators"
  • Implement co-routines and use suspend functions with retrofit.
  • Implement hilt as a DI framework.
  • Implement the navigation component to navigate among the screens.
  • Implement RxAndroid, wrap the retrofit response and create an observable that needs to be observed or change the retrofot response to Observable.
  • Use best practices.

Important: this is the final deliverable, so all the requirements must be included. We will give you feedback and you will have 3 days more to apply changes. On the third day, we will stop receiving changes at 11:00 am.

Submitting the deliverables

For submitting your work, you should follow these steps:

  1. Create a pull request with your code, targeting the master branch of the repository android-bootcamp-2021.
  2. Fill this form including the PR’s url
  3. Stay tune for feedback
  4. Do the changes according to your mentor's comments

Documentation

Self-Study Material