An iOS application written in Swift to demonstrate how to implement a Clean Architecture in iOS

Overview

Reminders iOS

An iOS application written in Swift to demonstrate how to implement a Clean Architecture in iOS.

Idea

The idea is to implement the simplest To-Do List app. The user can add a Reminder with a Title and visualize the existing Reminders in a list.

Requirements

  • macOS 10.14 or higher
  • Xcode 10 or higher

Installation

To compile/run the iOS application:

  • open the Xcode Project "Reminders.xcodeproj"
  • select the "Reminders" iOS scheme
  • Run by pressing "Play" or by pressing [Cmd + R]

Tests

We use XCTest for the Unit and UI tests.

To run the tests for the iOS application:

  • open the Xcode Project "Reminders.xcodeproj"
  • select the "Reminders" iOS scheme
  • Run by pressing "Product" > "Test" or by pressing [Cmd + U]

Possible Improvements

  • Use a Mocking framework to remove Mocks and Spies in tests
  • Use a Dependency Injection framework to improve ViewControllerFactory and ControllerRouterFactory
  • Refactor RemindersEndToEndTest
  • Refactor RemindersPresenterTest
  • Refactor AddReminderPresenterTest
  • Extract business logic in Presenters into Use Cases
  • Remove Route dependency in ControllerFactory
  • Replace conditional in AppRouter
You might also like...
Best architecture for SwiftUI + CombineBest architecture for SwiftUI + Combine

Best architecture for SwiftUI + Combine The content of the presentation: First of the proposed architectures - MVP + C Second of the proposed architec

Mvi Architecture for SwiftUI Apps. MVI is a unidirectional data flow architecture.
Mvi Architecture for SwiftUI Apps. MVI is a unidirectional data flow architecture.

Mvi-SwiftUI If you like to read this on Medium , you can find it here MVI Architecture for SwiftUI Apps MVI Architecture Model-View-Intent (MVI) is a

An example project to demonstrate the new scripting capabilities of Shortcuts For Mac.
An example project to demonstrate the new scripting capabilities of Shortcuts For Mac.

Scripting Shortcuts Test Project This simple project is designed to test the new scripting capabilities introduced in the Shortcuts app in macOS Monte

A simple todo app which aims to demonstrate some new concepts from SwiftUI 3
A simple todo app which aims to demonstrate some new concepts from SwiftUI 3

TodoAppSwiftUI3 A simple todo app which aims to demonstrate some new concepts from SwiftUI 3 Description This is a simple todo app built to demonstrat

Watchos-navlink-swiftui-bug - Example Project to demonstrate bug in SwiftUI when NavigationLink is activated inside a TabView A simple clean application to provide you with weather forecast data as well as currency rates, all with beautiful melodies and sounds
A simple clean application to provide you with weather forecast data as well as currency rates, all with beautiful melodies and sounds

A simple clean application to provide you with weather forecast data as well as currency rates, all with beautiful melodies and sounds.

Ios-exercise - In this exercise applicant should implement a new feature into an existing sample app

Cooking app In this exercise applicant should implement a new feature into an ex

iOS (swift) version of skydove's Pokedex application. Based on MVVM architecture.
iOS (swift) version of skydove's Pokedex application. Based on MVVM architecture.

Pokedex - Swift iOS (swift) version of skydove's android application, check it out. Based on MVVM architecture. It was written in memory of Ferhat, wh

macOS application written in SwiftUI that downloads installer pkgs for the Install macOS Big Sur application.
macOS application written in SwiftUI that downloads installer pkgs for the Install macOS Big Sur application.

Download Full Installer This is a Swift UI implementation of my fetch-installer-pkg script. It will list the full macOS Big Sur (and later) installer

Comments
  • 💡command line tests

    💡command line tests

    💡Because of the nice UIKit abstraction, now you can run some tests on the command line OSX. The tests are not running on the simulator, it's blazing fast on a big project, for CI, or instant feedback while developing.

    opened by remirobert 1
  • AppRouter refactoring and tests

    AppRouter refactoring and tests

    • ControllerFactory is no longer a singleton
    • Add dependency injection of the controller factory for the app router
    • Add tests for the AppRouter
    • Add new unit tests target for the App
    opened by remirobert 1
Owner
Tiago Martinho
Indie Developer | Swift Peer Lab Barcelona | I love to create apps | Studying Machine Learning
Tiago Martinho
RippleQueries is an iOS application built as assessment task at Ripple Egypt. Built Using MVVM (Model-View-ViewModel) and Clean Architecture concepts

RippleRepositories RippleRepositories is an iOS application built as an assessment task at Ripple Egypt. Built Using RxSwift & MVVM (Model-View-ViewMo

Muhammad Ewaily 3 Sep 16, 2021
Weather Forecast App (OpenWeather API & CLLocationManager). Clean Swift VIP architecture.

WeatherApp Weather Forecast App (OpenWeather API & CLLocationManager). Clean Swift VIP architecture. Without storyboard or xib. The application shows

Nikita Lomovtsev 7 Dec 25, 2022
App for displaying VK news feed (VKSDK API). Clean Swift VIP architecture

VKNewsFeed VKNewsFeed - application for displaying VK news feed with dynamic cells and a collection of images in the post. Data request occurs from th

Areg Vardanian 0 Dec 18, 2021
Github repo search with using mvvm-c and clean architecture and using combine swift

GitSearchWithMVVM-C-CleanArchitecture Github repo search with using mvvm-c and clean architecture and using combine swift. Content Overview How To Run

Muhammad Qasim Majeed 1 Mar 16, 2022
A simple SwiftUI Application to demonstrate creation of UI using SwiftUI.

WatchShop_UI A simple SwiftUI Application to demonstrate creation of UI using SwiftUI. How to run the project ? Fork the project. Run the project usin

Shubham Kr. Singh 12 Apr 15, 2022
Mahmoud-Abdelwahab 5 Nov 23, 2022
Assignment: iOS app in VIP Clean architecture

countries_vip_clean Assignment: iOS app in VIP Clean architecture. for countries

Vishwa Deepak Choudhary 1 Feb 7, 2022
SwiftUI sample app using Clean Architecture. Examples of working with CoreData persistence, networking, dependency injection, unit testing, and more.

Articles related to this project Clean Architecture for SwiftUI Programmatic navigation in SwiftUI project Separation of Concerns in Software Design C

Alexey Naumov 4k Jan 8, 2023
Hello Clean Architecture With SwiftUI

HelloCleanArchitectureWithSwiftUI CleanArchitecture for SwiftUI with Combine, Co

null 8 Nov 14, 2022
A Flutter Clean Architecture Using GetX.

flutter-getx-clean-architecture A Flutter Clean Architecture Using GetX. Work Flow Project Structure |-- lib |-- main.dart |-- app |--

Duc Pham 93 Dec 27, 2022