Currency Converter

Pre Requisities

Setup

  • Add CURRENCY_API_KEY to your local.properties file
  • Pase https://api.apilayer.com/fixer/ to BASE_URL on your local.properties file.
  • Build the project

Background

Develop an application that:

  • Can convert currencies between different bases
  • Has an input field for amount (numbers only), by default always 1, and another input field to show the converted value
  • Button to swap the values in FROM and TO, and accordingly converted data changed
  • Show historical data for FROM/TO selections in last 3 days (day by day) – List and chart
  • Rates converted to some other popular currencies.

Tech-stack

  • Tech-stack

    • Kotlin – a cross-platform, statically typed, general-purpose programming language with type inference.

    • Coroutines – perform background operations.

    • Flow – handle the stream of data asynchronously that executes sequentially.

    • Hilt – Hilt is a dependency injection library for Android that reduces the boilerplate of doing manual dependency injection in your project.

    • Retrofit – A type-safe HTTP client for Android.

    • Jetpack

      • Lifecycle – perform action when lifecycle state changes.
      • ViewModel – store and manage UI-related data in a lifecycle conscious way.
      • Jetpack Navigation – Implement navigation, from simple button clicks to more complex patterns, such as app bars and the navigation drawer.
    • Leak Canary – a memory leak detection library for Android.

  • Architecture

  • Tests

    • Unit Tests (JUnit) – a simple framework to write repeatable tests.
    • Turbine – Turbine is a small testing library for kotlinx.coroutines
    • Coroutines tests – Test utilities for kotlinx.coroutines.
    • Truth – Truth makes your test assertions and failure messages more readable.
  • CI/CD

    • Github Actions

Screenshots of the App:

Screenshot of Tests running

Happy Coding!

GitHub

View Github