Skip to content

rbichage/currency-converter

Repository files navigation

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.
  • 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:

screencapture-1675693032627.mp4

About

A currency conversion APP using Fixer API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages