An app focused on show in a visual way how sorting algorithms actually works.

Overview

Alt text

Sorting Algorithms App

An open source app focused on show in a visual way how sorting algorithms actually works.

Available on the app store

Alt text

Do you want to contribute? Check the backlog

// TODO:

  • New algorithms;
  • Control animation speed;
  • Add algorithm details about the selected algorithm;
  • Improve code coverage (unit tests);
  • More features to the backlog :)

Adding a new algorithm

Create a class implemeting the protocol Algorithm. Following the example for the class InsertionSort, you'd need to set the title of your algorithm, the image (pick a nice logo representing your algorithm:)) and description. In the method GenerateSwaps, add the necessary logic to generate all cell swaps which would be necessary.

final class InsertionSort: Algorithm {
    
    final var title: String = "Insertion Sort"
    final var image: String = "ic_insertion"
    final var description: String = "Insertion Sort Description"
    
    final func generateSwaps(from list: [Int]) -> [(x0: Int, x1: Int)] {
        if list.count == 1 { return [] }
        
        var array = list
        var swaps = [(x0: Int, x1: Int)]()
        
        // APPEND ALL GENERATED SWAPS TO IT'S ARRAY
        
        return swaps
    }
}

Update the data source with your new algorithm

class AlgorithmsListPresenter {
    
    private weak var view: AlgorithmsListView?
    private let router: AlgorithmsListRoutering
    
    private let dataSource: [Algorithm] = [
        BubbleSort(),
        InsertionSort(),
        SelectionSort()
    ]
 ...
}   

Submiting contributions

Try adding your own solution, feel free to suggest changes on the current code. If you're ready to submit a contribution, create a pull request describing your approach. All contributions are welcome even the small ones.

Contributors

The list of contributors:

🇧🇷 - Victor Panitz Magalhães

🇮🇳 - Anantha Krishnan

🇧🇷 - João Reichert

🇨🇳 - urmyfaith

Comments
  • QuickSort Algorithm, Sample Array, Restart Swaps

    QuickSort Algorithm, Sample Array, Restart Swaps

    New Algorithm

    • Created QuickSort algorithm

    Feature: Restart Swaps

    • new dataSourceBackup, to store the original dataSource

    • new restart function, that restore dataSource then generate and start all swaps after 1 second.

    • handle the restart button after end all swaps

    • add new parameter to AlgorithmDetailView protocol, to handle if it need to reload the collection view or not.

    Feature: Random Sample Array

    • New button to allow user to use a Random sample array.
    opened by reeichert 3
  • Bump addressable from 2.6.0 to 2.8.1

    Bump addressable from 2.6.0 to 2.8.1

    Bumps addressable from 2.6.0 to 2.8.1.

    Changelog

    Sourced from addressable's changelog.

    Addressable 2.8.1

    • refactor Addressable::URI.normalize_path to address linter offenses (#430)
    • remove redundant colon in Addressable::URI::CharacterClasses::AUTHORITY regex (#438)
    • update gemspec to reflect supported Ruby versions (#466, #464, #463)
    • compatibility w/ public_suffix 5.x (#466, #465, #460)
    • fixes "invalid byte sequence in UTF-8" exception when unencoding URLs containing non UTF-8 characters (#459)
    • Ractor compatibility (#449)
    • use the whole string instead of a single line for template match (#431)
    • force UTF-8 encoding only if needed (#341)

    #460: sporkmonger/addressable#460 #463: sporkmonger/addressable#463 #464: sporkmonger/addressable#464 #465: sporkmonger/addressable#465 #466: sporkmonger/addressable#466

    Addressable 2.8.0

    • fixes ReDoS vulnerability in Addressable::Template#match
    • no longer replaces + with spaces in queries for non-http(s) schemes
    • fixed encoding ipv6 literals
    • the :compacted flag for normalized_query now dedupes parameters
    • fix broken escape_component alias
    • dropping support for Ruby 2.0 and 2.1
    • adding Ruby 3.0 compatibility for development tasks
    • drop support for rack-mount and remove Addressable::Template#generate
    • performance improvements
    • switch CI/CD to GitHub Actions

    Addressable 2.7.0

    • added :compacted flag to normalized_query
    • heuristic_parse handles mailto: more intuitively
    • dropped explicit support for JRuby 9.0.5.0
    • compatibility w/ public_suffix 4.x
    • performance improvements
    Commits
    • 8657465 Update version, gemspec, and CHANGELOG for 2.8.1 (#474)
    • 4fc5bb6 CI: remove Ubuntu 18.04 job (#473)
    • 860fede Force UTF-8 encoding only if needed (#341)
    • 99810af Merge pull request #431 from ojab/ct-_do_not_parse_multiline_strings
    • 7ce0f48 Merge branch 'main' into ct-_do_not_parse_multiline_strings
    • 7ecf751 Merge pull request #449 from okeeblow/freeze_concatenated_strings
    • 41f12dd Merge branch 'main' into freeze_concatenated_strings
    • 068f673 Merge pull request #459 from jarthod/iso-encoding-problem
    • b4c9882 Merge branch 'main' into iso-encoding-problem
    • 08d27e8 Merge pull request #471 from sporkmonger/sporkmonger-enable-codeql
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump rubyzip from 1.2.2 to 1.3.0

    Bump rubyzip from 1.2.2 to 1.3.0

    Bumps rubyzip from 1.2.2 to 1.3.0.

    Release notes

    Sourced from rubyzip's releases.

    v1.3.0

    Security

    • Add validate_entry_sizes option so that callers can trust an entry's reported size when using extract #403
      • This option defaults to false for backward compatibility in this release, but you are strongly encouraged to set it to true. It will default to true in rubyzip 2.0.

    New Feature

    • Add add_stored method to simplify adding entries without compression #366

    Tooling / Documentation

    • Add more gem metadata links #402

    v1.2.4

    • Do not rewrite zip files opened with open_buffer that have not changed #360

    Tooling / Documentation

    • Update example_recursive.rb in README #397
    • Hold CI at trusty for now, automatically pick the latest ruby patch version, use rbx-4 and hold jruby at 9.1 #399

    v1.2.3

    • Allow tilde in zip entry names #391 (fixes regression in 1.2.2 from #376)
    • Support frozen string literals in more files #390
    • Require pathname explicitly #388 (fixes regression in 1.2.2 from #376)

    Tooling / Documentation:

    • CI updates #392, #394
      • Bump supported ruby versions and add 2.6
      • JRuby failures are no longer ignored (reverts #375 / part of #371)
    • Add changelog entry that was missing for last release #387
    • Comment cleanup #385

    Since the GitHub release information for 1.2.2 is missing, I will also include it here:

    1.2.2

    NB: This release drops support for extracting symlinks, because there was no clear way to support this securely. See rubyzip/rubyzip#376 for details.

    • Fix CVE-2018-1000544 #376 / #371
    • Fix NoMethodError: undefined method `glob' #363
    • Fix handling of stored files (i.e. files not using compression) with general purpose bit 3 set #358
    • Fix close on StringIO-backed zip file #353
    • Add Zip.force_entry_names_encoding option #340
    • Update rubocop, apply auto-fixes, and fix regressions caused by said auto-fixes #332, #355
    • Save temporary files to temporary directory (rather than current directory) #325

    Tooling / Documentation:

    ... (truncated)

    Changelog

    Sourced from rubyzip's changelog.

    1.3.0 (2019-09-25)

    Security

    • Add validate_entry_sizes option so that callers can trust an entry's reported size when using extract #403
      • This option defaults to false for backward compatibility in this release, but you are strongly encouraged to set it to true. It will default to true in rubyzip 2.0.

    New Feature

    • Add add_stored method to simplify adding entries without compression #366

    Tooling / Documentation

    • Add more gem metadata links #402

    1.2.4 (2019-09-06)

    • Do not rewrite zip files opened with open_buffer that have not changed #360

    Tooling / Documentation

    • Update example_recursive.rb in README #397
    • Hold CI at trusty for now, automatically pick the latest ruby patch version, use rbx-4 and hold jruby at 9.1 #399

    1.2.3

    • Allow tilde in zip entry names #391 (fixes regression in 1.2.2 from #376)
    • Support frozen string literals in more files #390
    • Require pathname explicitly #388 (fixes regression in 1.2.2 from #376)

    Tooling / Documentation:

    • CI updates #392, #394
      • Bump supported ruby versions and add 2.6
      • JRuby failures are no longer ignored (reverts #375 / part of #371)
    • Add changelog entry that was missing for last release #387
    • Comment cleanup #385
    Commits
    • e79d9ea Merge pull request #407 from rubyzip/v1-3-0
    • 7c65e1e Bump version to 1.3.0
    • d65fe7b Merge pull request #403 from rubyzip/check-size
    • 97cb6ae Warn when an entry size is invalid
    • 7849f73 Default validate_entry_sizes to false for 1.3 release
    • 4167f0c Validate entry sizes when extracting
    • 94b7fa2 [ci skip] Update changelog
    • 93505ca Check expected entry size in add_stored test
    • 6619bf3 Merge pull request #366 from hainesr/add-stored
    • ecb2776 Zip::File.add_stored() to add uncompressed files.
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump json from 2.2.0 to 2.6.2

    Bump json from 2.2.0 to 2.6.2

    Bumps json from 2.2.0 to 2.6.2.

    Release notes

    Sourced from json's releases.

    v2.6.2

    What's Changed

    New Contributors

    Full Changelog: https://github.com/flori/json/compare/v2.6.1...v2.6.2

    v2.6.1

    What's Changed

    New Contributors

    Full Changelog: https://github.com/flori/json/compare/v2.6.0...v2.6.1

    v2.6.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/flori/json/compare/v2.5.1...v2.6.0

    v2.5.1

    What's Changed

    Full Changelog: https://github.com/flori/json/compare/v2.5.0...v2.5.1

    v2.5.0

    What's Changed

    Full Changelog: https://github.com/flori/json/compare/v2.4.1...v2.5.0

    ... (truncated)

    Changelog

    Sourced from json's changelog.

    Changes

    2021-10-24 (2.6.1)

    • Restore version.rb with 2.6.1

    2021-10-14 (2.6.0)

    • Use rb_enc_interned_str if available to reduce allocations in freeze: true mode. #451.
    • Bump required_ruby_version to 2.3.
    • Fix compatibility with GC.compact.
    • Fix some compilation warnings. #469

    2020-12-22 (2.5.1)

    • Restore the compatibility for constants of JSON class.

    2020-12-22 (2.5.0)

    • Ready to Ractor-safe at Ruby 3.0.

    2020-12-17 (2.4.1)

    • Restore version.rb with 2.4.1

    2020-12-15 (2.4.0)

    • Implement a freeze: parser option #447
    • Fix an issue with generate_pretty and empty objects in the Ruby and Java implementations #449
    • Fix JSON.load_file doc #448
    • Fix pure parser with unclosed arrays / objects #425
    • bundle the LICENSE file in the gem #444
    • Add an option to escape forward slash character #405
    • RDoc for JSON #439 #446 #442 #434 #433 #430

    2020-06-30 (2.3.1)

    • Spelling and grammar fixes for comments. Pull request #191 by Josh Kline.
    • Enhance generic JSON and #generate docs. Pull request #347 by Victor Shepelev.
    • Add :nodoc: for GeneratorMethods. Pull request #349 by Victor Shepelev.
    • Baseline changes to help (JRuby) development. Pull request #371 by Karol Bucek.
    • Add metadata for rubygems.org. Pull request #379 by Alexandre ZANNI.
    • Remove invalid JSON.generate description from JSON module rdoc. Pull request #384 by Jeremy Evans.
    • Test with TruffleRuby in CI. Pull request #402 by Benoit Daloze.
    • Rdoc enhancements. Pull request #413 by Burdette Lamar.
    • Fixtures/ are not being tested... Pull request #416 by Marc-André

    ... (truncated)

    Commits
    • 5d9d8f3 Upgrade to newest release w/out required_ruby_version
    • 5de358f Bump version to 2.6.2
    • 823760c Merge branch 'abrom-fix-parse-segfault'
    • 7555eda Add all_images gem for local testing
    • b59368a Fix parser bug for empty string allocation
    • 75ada77 Doc: Improve documentation on JSON#parse and JSON#parse!
    • 32b0185 Merge pull request #489 from flori/gitignore
    • 431317d Merge pull request #488 from headius/bad_datetime_parse_keyword
    • e816481 Ignore java artifacts
    • b1007df Remove unknown keyword arg from DateTime.parse
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump excon from 0.63.0 to 0.94.0

    Bump excon from 0.63.0 to 0.94.0

    Bumps excon from 0.63.0 to 0.94.0.

    Changelog

    Sourced from excon's changelog.

    0.94.0 2022-11-08

    reduce allocations/syscalls for readline refactor streaming tests and add for https fix guards around selects in nonblocking read remove an extraneous guard in blocking read

    0.93.1 2022-09-22

    update bundled certs

    0.93.0 2022-09-22

    update actions/stale also use ssl_verify_peer_host value for SNI when specified

    0.92.5 2022-09-22

    update error retry examples in README update bundled certs

    0.92.4 2022-07-20

    fix README formatting clarify stub examples in README update bundled certs

    0.92.3 2022-04-27

    update permissions for Github actions update bundled certs

    0.92.2 2022-03-31

    update bundled certs

    0.92.1 2022-03-20

    update bundled certs

    0.92.0 2022-03-13

    ... (truncated)

    Commits
    • a1b3d63 v0.94.0
    • 0a8b9e5 Merge pull request #797 from vasi-stripe/vasi-socket-guards
    • 68452a7 Merge pull request #796 from vasi-stripe/vasi-readline
    • 464b7d5 socket: Remove guard in blocking mode
    • e6aabd0 socket: Add guard around select_with_timeout in SSL mode
    • bd10b63 tests: Run streaming tests in SSL mode
    • 8beb160 tests: Move streaming tests to test_helper
    • 4a853c8 tests: extract streaming tests
    • 7ac3568 socket: Reduce allocations/syscalls for readline
    • 17ed919 continue test run even with head errors
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Owner
Victor Panitz Magalhães
iOS Engineer
Victor Panitz Magalhães
Basic app to show how to login with Facebook, Google, Twitter. Created for learning purpose :) using Xcode 9 and Swift 4.0

Social Logins iOS Basic app to show how to login with Facebook, Google, Twitter. Created for learning purpose :) using Xcode 9 and Swift 4.0 Note: Bef

Jogendra 12 Nov 4, 2022
▶️ video player in Swift, simple way to play and stream media on iOS/tvOS

Player Player is a simple iOS video player library written in Swift. Looking for an obj-c video player? Check out PBJVideoPlayer (obj-c). Looking for

patrick piemonte 2k Dec 24, 2022
Sample app to demonstrate data sharing between a WatchKit app and its main app using Realm

#Done! A sample app demonstrating how to share data between an app an its Watch extension using Realm. You can read more about it here. ##Screenshot #

Fancy Pixel 147 Dec 8, 2022
An experimental clone of the new iOS 11 App Store app

appstore-clone An experimental clone of the new iOS 11 App Store app for this Medium Article Description Apple announced an entirely redesigned iOS Ap

Phill Farrugia 498 Dec 13, 2022
This app shows the current percentage of the vaccination campaign in Brazil and its states

This app shows the current percentage of the vaccination campaign in Brazil and its states. The data is obtained thanks to covid19br.

Anderson Kloss Maia 8 Jul 22, 2022
iOS app to record how much things cost using various data persistence implementations.

how-much iOS app to record how much things cost using various data persistence implementations. The basic data unit is an item, a simple dictionary: {

null 22 Aug 15, 2022
Open-Source Messaging App

Acani Chats Open-Source Native iOS Messages App This project and its submodules no longer work and are no longer being maintained. Acani Chats is an i

Acani 2.1k Dec 21, 2022
The (second) best iOS app for GitHub.

GitHawk is the second-highest rated iOS app for GitHub. Features 0️⃣ Inbox Zero your notifications ?? Comment even faster than on GitHub desktop ?? Th

GitHawk 2.8k Dec 23, 2022
The Artsy Auction Kiosk App.

Eidolon The Artsy Auction Kiosk App. Note: Current development is done on the xcode-9 branch using Xcode 9 (available for download on Apple's develope

Artsy 2.7k Dec 25, 2022
iOS app for 5calls.org

5Calls iOS App This is the repository for the iOS app for 5Calls.org. Requirements Xcode 10.2.1 iOS 10.2 Getting Started Install the dependencies: bun

5 Calls 129 Dec 25, 2022
Development of the TUM Campus App for iOS devices - for and from students at Technical University of Munich.

Tum Campus App - An Unofficial Guide Through University Life The TUM Campus App (TCA) is an open source project, developed by volunteers and available

TUM Developers 93 Dec 16, 2022
Lightweight iOS Photo Blur App

Blurry Blurry is the go-to image blurring tool to help you apply beautiful blurs for your photos. It is perfect for creating wallpapers, backgrounds,

Andy 17 Nov 22, 2022
Alfresco iOS App - Alfresco is the open platform for business-critical content management and collaboration.

Welcome to the Alfresco iOS App Alfresco is the open platform for business-critical content management and collaboration. Alfresco Mobile was designed

Alfresco Software 42 Sep 26, 2022
Build a Swift App as a designer

DesignerNewsApp Simple iOS client for Designer News, by the creator of Design+Code and the team, written in Swift. Usage Download the repository $ git

Meng To 2.4k Dec 24, 2022
📱 Nextcloud iOS app

Nextcloud iOS app Check out https://nextcloud.com and follow us on twitter.com/nextclouders or twitter.com/NextcloudiOS How to contribute If you want

Nextcloud 1.4k Dec 30, 2022
🍣Making Recipes iOS app

Recipes App ❤️ Support my apps ❤️ Push Hero - pure Swift native macOS application to test push notifications PastePal - Pasteboard, note and shortcut

Khoa 88 Nov 22, 2022
PixPic, a Photo Editing App

PixPic PixPic, a Photo Editing App Built by Our iOS Interns What's the best way to teach interns how to write an iOS app? Just let them do it! This ap

Yalantis 1.3k Dec 24, 2022
📱The official Wikipedia iOS app.

Wikipedia iOS The official Wikipedia iOS app. License: MIT License Source repo: https://github.com/wikimedia/wikipedia-ios Planning (bugs & features):

Wikimedia 2.5k Dec 27, 2022
Sample iOS app demonstrating Coordinators, Dependency Injection, MVVM, Binding

iOS Sample App Sample iOS app written the way I write iOS apps because I cannot share the app I currently work on. Shown concepts Architecture concept

Igor Kulman 632 Dec 28, 2022