All Projects → NasirMalik → Eris

NasirMalik / Eris

Licence: GPL-3.0 license
MVVM-C based iOS-Architecture Reference

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Eris

Swift Essentials
A set of essential Swift stuff I use in every single iOS app.
Stars: ✭ 223 (+97.35%)
Mutual labels:  ios-app
iOS-CreditCardForm
Small credit card form demo app
Stars: ✭ 33 (-70.8%)
Mutual labels:  ios-app
contact-tracer
A prototype contact tracer app for COVID-19 pandemic response
Stars: ✭ 50 (-55.75%)
Mutual labels:  ios-app
Qrcodereader
Barcode and QR code reader built in Swift
Stars: ✭ 237 (+109.73%)
Mutual labels:  ios-app
Gitiny
An iOS app for GitHub with exploring trending
Stars: ✭ 247 (+118.58%)
Mutual labels:  ios-app
MRTScheduleSwiftUI
MRT Schedule & Locator iOS App built using SwiftUI
Stars: ✭ 32 (-71.68%)
Mutual labels:  ios-app
Awrichtext
基于CoreText,面向对象,极简,易用,高效,并不仅仅局限于图文混排的富文本排版神器
Stars: ✭ 210 (+85.84%)
Mutual labels:  ios-app
Far-From-Home
A cross-platform mobile developed using Flutter and Firestore for House Rental Application with integrated payment module
Stars: ✭ 27 (-76.11%)
Mutual labels:  ios-app
Mobileapp Pentest Cheatsheet
The Mobile App Pentest cheat sheet was created to provide concise collection of high value information on specific mobile application penetration testing topics.
Stars: ✭ 3,051 (+2600%)
Mutual labels:  ios-app
MADBike
This is the public repository of the MADBike app for iOS. Public bike rental service for BiciMAD.
Stars: ✭ 23 (-79.65%)
Mutual labels:  ios-app
To Do
一个无后端待办事项应用,数据用 LeanCloud 进行同步。
Stars: ✭ 238 (+110.62%)
Mutual labels:  ios-app
Xkcd Open Source
A free and open source xkcd comic reader for iOS.
Stars: ✭ 243 (+115.04%)
Mutual labels:  ios-app
weather app flutter
This is a sample Flutter Weather Forecast App for Android and iOS. Without using any state management packages.
Stars: ✭ 30 (-73.45%)
Mutual labels:  ios-app
Uniapp Admin
Muti-platform management system for uniapp, H5, Android, IOS, Min Program
Stars: ✭ 226 (+100%)
Mutual labels:  ios-app
photos
"Fx Fotos" is an opensource gallery app in react native with the same smoothness and features of Google Photos and Apple Photos. It is backend gnostic and connects to decentralized backends like "box", "Dfinity", "Filecoin" and "Crust".
Stars: ✭ 620 (+448.67%)
Mutual labels:  ios-app
Ios Octopodium
Discover your Github ranking based on your repositories' stars
Stars: ✭ 212 (+87.61%)
Mutual labels:  ios-app
UberCarAnimation
This app is for animating a car like uber from one position to another with preserving angle and smooth animation
Stars: ✭ 53 (-53.1%)
Mutual labels:  ios-app
ChatbotHotel
A Chatbot demo for DialogFlow (Formerly called API.AI)
Stars: ✭ 34 (-69.91%)
Mutual labels:  ios-app
mkBox
MacApp、PythonPackage、Scripts ..
Stars: ✭ 66 (-41.59%)
Mutual labels:  ios-app
Keepwords
📱🔐 Need an iOS password managing app with no pods? We got you covered!
Stars: ✭ 17 (-84.96%)
Mutual labels:  ios-app

Eris

Name Eris is inspired from here

Architecture

Architecture is divided in the following independently injectable and testable layers.

Diagram

Layers are defined here.

Coordinator

Application Screenflow and later Push Routing handler.

View

Display of data. Data is being displayed in the form of Models and views confrom to ModelConfigurable to populate data via configure(model:) method

ViewController

Controller contains logic of view's state representation and pass actions to viewModel

ViewModel

  • ViewModel does all the business logic implementation with or without help of mappers.
  • Also it informs view-controller about the state update via bindings.
  • Mapper are the Domain Usecases. Any domain logic will be injected in the form of independently tested usecases. Idea is to keep Domain-Layer independent from ViewModels thus can be widely reuseable. Current implementation doesn't contain any domain logic thus doesn't contain any mapper.

Repository

Its an abstraction layer between ViewModel and Data Stores that encapuslates Data-source layer. Currently there are two data sources, Network and CoreData. This layer can encapulate further data sources aswel i-e Remote Configurations etc

Interactor

Network: Its a wrapper written on top of Swift Package Ceres which fetch and decode data into inferred model object.

Persistor

CoreData: Persistor encapsulates CoreData and fetches and updates data.

Considerations

Following are few considerations while writing code

  • Code is following MVVM-C Architecture.
  • Every layer is interfaced via dependency management and lays foundation for high level DI-Framework
  • Code is testable and mocks can easily replaced with original objects
  • Code is following iOS Swift Style Guidelines and have same styling throughtout the code.
  • Project is structured to scale as big as it can be
  • Folder structure is highligting the architecture
  • Network is implemented as an independent Module (Swift Package)
  • Layers are interfaced together via Protocols
  • Dependency resolution is being done via Factory.

Testing Notes

  • NWPath.Status doesn't return .satisfied on simulator so for getting best results please test on device.

Notes

A detailed article was published on Medium and can be found here

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].