Skip to content

rcanbaba/currencyConverter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 

Repository files navigation

CurrencyConverter

Overview

The Currency Converter app is an iOS application that allows users to convert currencies in real-time. The app features a user-friendly interface built using UIKit and SnapKit for layout constraints. It handles network requests to fetch exchange rates and displays appropriate error messages for various scenarios like network issues or validation errors.

Setup Instructions

Just clone project from https://github.com/rcanbaba/currencyConverter and Snapkit library will be downloaded automatically by SPM.

-- SnapKit: Used for creating constraints programmatically. (considering time constraint, quick and efficient tool)

min deployment target: iOS 13.0

Summary of the Solution

Implemented all specified cases from the task details.

  • MVVM
  • Programatic UI
  • Coordinator, dependency injeciton
  • Unit Tests
  • UIUnit Tests

Notes,

  • Unit Tests coverage over %90
  • UIUnit Tests tests implemented, can be improved.
Ekran Resmi 2024-07-10 08 18 09
  • API Requests: Cancels old requests if a new one is made before the previous response is received. (can be improved using taskIdentifier)

  • TextField Edge Cases: Handles edge cases like typing ",,,,,8383,334" or ",,,,".

  • UI Implementation: Matches the provided Figma design exactly.

  • Currency Selection: Does not show "local transfer" options if the user tries to send from the same currency to the same currency. (this currency not listed)

  • Debug Logger: Implemented for development purposes.

Own Notes

Initial Plan

  • init new project, remove storyboard

  • MVVM architecture structure

  • Coordinator for currency page - currency selection page

  • Basic network service, then test

  • Protocol oriented

  • Snapkit for speed up ui development

  • UI Components

  • rate view

  • textfield

  • curency selection view

  • ..

  • Converter feature implement

  • Currency selection feature implement

  • Swap feature implement

  • dependency injector

  • dependency injector

  • Unit test coverage > % 75

  • UI test

  • Search will be implemented

  • If time is enough, search will be swiftui combine

  • Localization for strings

  • Add Font -> inter

  • Block user interaction or add activity indicator -

  • Network error handling

  • Textfield size bug fix

  • Error textfield border bug fix

edge case notes

  • input check: ,,,,, or 10,,,, or 10,1,1,1,1,

  • decimal separator could be taken from local, dot or comma . ,

  • maximumFractionDigits 2,3 ?

  • every input should be send api request

  • if the api response not reached cancel api call

  • , or 0 not send api request, or limit values

  • in currency selection, other type should not be listed

  • in currency selection sender amount fixed ??

  • in swap sender amount fixed ??

  • if user type , it should be 0, -> ,59595 meaningless instead of this make it 0,59595 it happens on live tgo app

  • input check: 00000006 is meaningless make it 6 or 06 it happens on live tgo app

About

transferGO task

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages