Git Product home page Git Product logo

quickcurrencyexchange's Introduction

Currency App

Definition

This project displays the last information about rates of Bitcoins in the last two weeks. It also displays a detail screen with the information of bitcoin rate in USD, GBP and EUR

How to run the project

Since we are not using any kind of external libraries for this project, just opening the project and run on a simulator in XCode. Easy as that! :D

About the project

Infrastructure

The Infrastructure is basically what the App is about and what use cases contains, divided on Entities, UseCases and dataSources.

Interface

It is the main of the Application is responsible for delivering information to the user and handling user input. It contains the Scenes which will implement our delivery Pattern or architecture design.

Scenes

It is the main presentation layer. It has been used a clean MVP architecture.

Detail

Infrastructure

Entities are implemented as Swift value types, implementing the Decodable protocol to parse directly from json decoder

Stores are data sources:

- NetworkStore -> provides data from network
- MockStore -> provides mock data

Data Transport

- CurrencyDto is a data transport object to pass data through scenes in the way fit best for our usage

Network

The Network is custom layer implementing a protocol which will be the main interface for the network data stores. Right now we are not using any external library, but in case we decide to use it, we can change it easily with a Facade implementing our desired protocol.

Interface

  • Scenes Scenes are implemented using MVP architecture. To also use the clean code pattern, we have added Workers, Models and Routers. Having our Output and Input protocols declared within the Presenter layer, we can handle using our main business logic decoupled from our presentation layer. So, we can use any kind of presentation layer or framework, just implementing the methods declared by our OutputsProtocols. Our Workers decide where to retreive the data and what source will use for that. Our Router will navigate through the different scenes and will also provide the injected data to next scene.

Scene

TODO:

  • add tests

Links

quickcurrencyexchange's People

Contributors

polenoso avatar

Watchers

 avatar  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.