GithubHelp home page GithubHelp logo

bitpanda-task's Introduction

Bitpanda Task

Setup

  • Xcode: 13.2.1
  • iOS Deployment Target: 13.0
  • Swift 5
  • Resolve swift package versions

General

  • Full dark mode support while taking into account the right logo for each mode (Inverted fiat logos to match design).
  • All app list view inherits from the base SearchableTableViewController with a search by name or symbol functionality and animated data reload.
  • Using a custom decoder to bypass the nested JSON data and flatten it to usable objects.
  • Used logos from Asset data to compute the logos for Wallet data as they are required and missing.

Apperance Support

Splash Screen

  • Splash animation added.
  • Used tinting method to support different appearance modes (color the logo), due to lack of asset resources. In a real project, I would have used 2 images (one for each mode). Hence, there might be a very slight flicker in the animation.

Splash Screen

Asset Screen

  • Segment control to filter between crypto coins, commodities, or fiats assets.
  • Horizontal scrolling gestures to switch between different segments.
  • Reading the requirement "price must take the regional location of the device into account" made me doubt that it means (1) to fetch the actual user geo location and not (2) the user's locale. Aside from that, the first option will require user permission, and the second doesn't, as a user, I always want to see content formatted according to my preferences and not where I currently am. (German traveler would want to see the data in German format even when he is on a visit to the US). Hence, I assumed the second option. In a real project, I would have communicated my doubts and concerns with the product owner beforehand.
  • Precision requirements applied for crypto coins, commodities.
  • Only fiats with wallets are displayed
  • Data sorted ascending by name.

Wallets Screen

  • Grouped wallets as: All, Fiat wallets, Crypto wallets, and Commodity wallets.
  • Clicking a wallet group pushes a WalletListViewController on the navigation stack.
  • Wallets sorted descending by balance.
  • Used the same formatting mechanism as with the Asset prices (fixed precision to 2 decimal places).
  • Default wallets tagged.
  • Deleted wallets hidden.
  • Fiat wallets cells uniquely designed.
  • Wallet group's sum added in WalletListViewController table view header.

Showcase

Light Mode Dark Mode

Packages Used

  • KingFisher
  • Pocket SVG

Future Work (If it was a real project)

  • Apply GitFlow.
  • Add localization.
  • Add linter.
  • Increase unit testing coverage.
  • Add UI testing.
  • Split AssetInterface and WalletInterface based on future progress.
  • Network:
    • Separate network layer with generic decoding.
    • data persistence.

bitpanda-task's People

Contributors

eldesouky8 avatar eldesouky avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.