Git Product home page Git Product logo

brewdogv2's Introduction

BrewdogV2

App is designed for an iPhone, not for an iPad.

Architecture

For the architecture, I chose MVVM. The app is modularized in reusable layers:

  • APIKit
  • Challenge

More modules could have been created. For example, to hold to the Business Entities or the Business Logic

Why MVVM

I'm very interested in Redux and MVVM. I nonetheless favor MVVM as more used to it and more documentation is available. Both architectures work really well with Combine and Reactive approaches as both are based in the Observer Pattern.

SwiftUI and Combine

SwiftUI and Combine are the future of iOS Development. I've been closely following updates and doing thorough research over the last year to assimilate the new paradigm. This is why these two frameworks were chosen to implement this challenge.

Unit Testing

I've added some tests to test some of the functionality. This is just a way of me saying "I know how to write Unit Tests and what an App should aim to test". For the purpose of the challenge, I believe I've created enough tests. They are devided in different Unit Test Bundles:

  • APIKitTests
  • BreweryUnitTests
  • ChallengeTests

Known issues**

  • The App is coupled to APIKit and its models. The App should have its own models (not just view models, but business models) that could potentially be reused for extensions or other Apps/projects. The reason why I haven't implemented this was to keep this simple.
  • Challenge might not perform as best as it could. I've favored readability vs speed and performance as these last two weren't mentioned as goals.

brewdogv2's People

Contributors

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