Giter Site home page Giter Site logo

bright's Introduction

Bright

Bright is meant as a little demonstration application showcasing several aspect of iOS development.

What

  • SwiftUI
  • MVVM & Coordinator
  • Big usage of protocols oriented dev
  • Uses latest Apple's Combine
  • Use dependency injection
  • Embarks Cache / Image lazy loading / Network / Some animation
  • Pure Swift
  • iOS 13 compitible
  • Search page

ToDo

  • Implement Linters (swiftlint/ swiftformat)
  • Implement Testing
  • Implement new feature
  • Use dependency injection further
  • Documentation
  • Crash logger (firebase)
  • Refined caching system
  • Paginated network call
  • Infinite scrolling in pages

About the project

I wanted to try a achieve the implementation of this project using only SwiftUI. This is quite a challenge about of the iOS backward compatibility going back to iOS13 and SwitUI 1.0. This version of SwiftUI is limited compared to the new versions. Therefor I had to try and find or build workarounds for some of the difficulties I encountered.

The project in build around the MVVM & Coordinator pattern. It is a well known and shoudl be easy to comprehend. To keep a Clean and SOLID architecture all the networking is done in repositories that are injected through dependency injection to the viewModel.

The communication between the element of the project is mainly done throught Combine Publishers. The data flow come from single soruces of trouth that are the repositories.

Tooling

The Cache system is based on a very simple Generic NSCache implementation.

The Network implementation is based on a small networking library I created based around the new combine publisher integrated into URLSession Data tasks. I enables us to easily create network services using the power of swift generics. Jolt

The Depency injection tool is a simplyfied version of Resolver. Resolver

bright's People

Contributors

mlukacs-dzr avatar

Watchers

James Cloos avatar Martin 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.