All Projects → frankvalbuena → iOS-Clean-Architecture-Example

frankvalbuena / iOS-Clean-Architecture-Example

Licence: other
An iOS app designed using clean architecture and MVVM.

Programming Languages

swift
15916 projects
ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to iOS-Clean-Architecture-Example

Ios Clean Architecture Mvvm
Template iOS app using Clean Architecture and MVVM. Includes DIContainer, FlowCoordinator, DTO, Response Caching and one of the views in SwiftUI
Stars: ✭ 753 (+1406%)
Mutual labels:  architecture, mvvm, clean-architecture, viewmodel
Xaml Code Experiences
A collection of the experiences I have collected during days of Xamarin and Wpf, while following the MVVM design pattern.
Stars: ✭ 114 (+128%)
Mutual labels:  clean-code, architecture, mvvm
Android Kotlin Clean Architecture
Android Sample Clean Architecture App written in Kotlin
Stars: ✭ 1,562 (+3024%)
Mutual labels:  clean-code, architecture, clean-architecture
Android Clean Architecture Mvvm Dagger Rx
Implemented by Clean Architecture, Dagger2, MVVM, LiveData, RX, Retrofit2, Room, Anko
Stars: ✭ 138 (+176%)
Mutual labels:  clean-code, mvvm, clean-architecture
Modular Monolith With Ddd
Full Modular Monolith application with Domain-Driven Design approach.
Stars: ✭ 6,210 (+12320%)
Mutual labels:  clean-code, architecture, clean-architecture
Dev Stuff
😎 Programming stuff for everyone. Collection of articles, videos about architecture, Domain Driven Design, microservices, testing etc.
Stars: ✭ 105 (+110%)
Mutual labels:  clean-code, architecture, clean-architecture
Go Clean Architecture
👨‍💻 REST API example, built by following Uncle Bob’s clean architecture principles
Stars: ✭ 133 (+166%)
Mutual labels:  clean-code, architecture, clean-architecture
Android Mvvm Architecture
A basic sample android application to understand MVVM in a very simple way.
Stars: ✭ 129 (+158%)
Mutual labels:  architecture, mvvm, viewmodel
Cleanarchitecture.workerservice
A solution template using Clean Architecture for building a .NET Core Worker Service.
Stars: ✭ 142 (+184%)
Mutual labels:  clean-code, architecture, clean-architecture
Coroutines Flows Modularised
Clean Architecture Modular Project: MVVM + Coroutines+ Flows + Dagger2 + LiveData + UnitTests + UITests + MockWebServer
Stars: ✭ 166 (+232%)
Mutual labels:  clean-code, mvvm, clean-architecture
Architecture
.NET 6, ASP.NET Core 6, Entity Framework Core 6, C# 10, Angular 13, Clean Code, SOLID, DDD.
Stars: ✭ 2,285 (+4470%)
Mutual labels:  clean-code, architecture, clean-architecture
Cleanaspnetcorewebapi
Starter project for creating APIs built on ASP.NET Core using clean architecture.
Stars: ✭ 279 (+458%)
Mutual labels:  clean-code, architecture, clean-architecture
Clean Architecture Swiftui
SwiftUI sample app using Clean Architecture. Examples of working with CoreData persistence, networking, dependency injection, unit testing, and more.
Stars: ✭ 2,925 (+5750%)
Mutual labels:  architecture, mvvm, clean-architecture
SwiftObserver
Elegant Reactive Primitives for Clean Swift Architecture #NoRx
Stars: ✭ 14 (-72%)
Mutual labels:  clean-code, clean-architecture, dependency-inversion-principle
Restapimvvm
App that interacts with a Rest Api. Architecture is MVVM.
Stars: ✭ 130 (+160%)
Mutual labels:  architecture, mvvm, viewmodel
Go Bank Transfer
Simple API for banking routines using a Clean Architecture in Golang. 💳 💰 💸
Stars: ✭ 123 (+146%)
Mutual labels:  clean-code, architecture, clean-architecture
Guardclauses
A simple package with guard clause extensions.
Stars: ✭ 767 (+1434%)
Mutual labels:  patterns, clean-code, clean-architecture
Swift Design Patterns
🚀 The ultimate collection of various Software Design Patterns implemented in Swift [Swift 5.0, 28 Patterns].
Stars: ✭ 85 (+70%)
Mutual labels:  architecture, mvvm, clean-architecture
Ios Architectures
Sample app for iOS architectures
Stars: ✭ 90 (+80%)
Mutual labels:  architecture, mvvm, clean-architecture
Android Modular Architecture
📚 Sample Android Components Architecture on a modular word focused on the scalability, testability and maintainability written in Kotlin, following best practices using Jetpack.
Stars: ✭ 2,048 (+3996%)
Mutual labels:  clean-code, architecture, clean-architecture

iOS-Clean-Architecture-Example

An iOS app designed using Clean Architecture and MVVM. Each layer of the architecture has a Source Level Boundary, created with the Boundaries framework.

Description of The App

This is an example of an Appstore application, which fetches the data using the service https://itunes.apple.com/us/rss/topfreeapplications/limit=20/json, the data is stored locally on the app providing offline support. The app processes the data by categories with a UI that mimics the real app. This is an universal app showing the apps on a Grid for the iPad and on a list for the iPhone.

Architecture

The code is divided in 3 layers, Core, ViewModel and View. The Core is structured following the main premises of Clean Architecture. The app follows the dependency inversion principle using the protocol oriented approach that Swift has on its foundations. The app has unit test for each layer.

Core

On this layer belongs all the classes which main concern is handling the data and the high level rules of the app.

- Entities

On this group belongs the AppSyncData protocol which represents the data to be consumed by the app.

- Services

Services represents external agents like the web service used for getting the data and the repository in which data is stored, grouped and fetched. All the interfaces on this group are protocols, this allows mock objects to conform these protocols and being used for testing purposes on higher layers (like use cases and view models).

- Use Cases

The code in this layer contains application specific business rules. Each use case is represented by a protocol, the internal implementation is separated from the interface. Having a protocol per Use Case enforces the Interface Segregation Principle, facilitates unit testing and enforces the architectural boundaries. The use cases are accessed via a Boundary class . The objects on this group relies on the entities and the services via a plugin and returns the data using DTOs to avoid exposing the entity layer and to model the data in a convenient way to be consumed by the App.

ViewModel

The objects in this layer have the responsibilities described in the MVVM architectural pattern. The ViewModels relies on the UseCases to get the data and model in a convenient way to be shown in the UI.

View

The objects on this layer are the UIViewControllers and the UIViews used to present the data to the user. The view controller binds the data from the ViewModels to the UI objects, for tracking changes simple closure are used. This project doesn't include any binding framework to keep this as simple as posible and avoid coupling the layers with any reactive code.

License

MIT License

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