Skip to content

Interview (home) task for Revolut

Notifications You must be signed in to change notification settings

mirjalal/RatesAndConversions

Repository files navigation

Rates & Conversions mirjalal

Made with ❤️ in Azerbaijan.

Screenshots

Loading screen Main screen Enter amount screen New rates screen Error screen
Loading screen Main screen Enter amount screen New rates screen Error screen

Architecture

The recommended app architecture applied in the application. However, unfortunately due to time limit there are deviations. Fixing those 'mistakes' could take a bit more time. You know, every home task has its deadline. I tried to do my best for this project, could not achieved it hundred per-cent.

Structure of the project

Root project has some several packages (they include app layers inside of them) and files:

  1. Data package
  2. UI package
  3. DI package
  4. Helpers package
  5. Main application & Service Locator files

Data package includes repository and remote source layers as well. DI package has a single file in it called koinModules.kt. This file only keeps a variable in it which is needed to be used in application class. Helpers package has different kinds of files for different purposes. Check them to get extra information about them. Finally, UI package keeps main activity, a fragment, its ViewModel and other UI related classes/files. Additionally, Service Locator file is used to manage layers from one point.

NOTE: Additional information about classes/files/functions and about their functionalities were added as comments.

Requirements

Android Studio v3.5+, Kotlin v1.3.71 & JDK v8 are enough to build the project. To build release artifact:

  1. Select Generate Signed Bundle/Apk option from Build menu in your IDE.
  2. Pick the rates_conversions_kystr.jks file as key store file from project root path.
  3. Enter threecowsatthesea text for all password fields.
  4. Enter rates_conversions as key store alias and hit next.
  5. Check both V1 and V2 checkboxes as Signature Versions option.
  6. Hit Finish button & wait for your release app.

Or alternatively, simply run ./gradlew assembleRelease command in terminal & wait for successful build report from the gradle.

Copyrights:

  1. App logo made by Freepik from Flaticon.
  2. Country flags in drawable were downloaded from country flags.