Skip to content

Concise iOS demos and projects aimed at presenting diverse iOS concepts

Notifications You must be signed in to change notification settings

cristianbanarescu/iOS-Development

Repository files navigation

iOS Development by Cristian Bănărescu

Welcome to my iOS development portfolio! I am an enthusiastic iOS developer with a strong passion for learning and building creative mobile solutions. My repository is a collection of various iOS projects that showcase my skills in Swift, SwiftUI, UIKit, and modern iOS development practices. Whether I'm working on simple utilities or more complex apps, my goal is to continuously grow as a developer, embrace new challenges, and deliver exceptional user experiences.

I am always eager to collaborate, receive feedback, and contribute to exciting projects, so feel free to explore my work and reach out!

Skills and Tools

  • Languages: Swift, Dart
  • iOS Frameworks: UIKit, SwiftUI
  • Cross-platform frameworks: Flutter
  • APIs & Networking: URLSession, Alamofire, JSON Decoding, REST APIs
  • Design Patterns: MVC, MVVM
  • AI: For more details on AI and tools to use in your day to day coding/development, please check out the AI page
  • Other: Auto Layout, Storyboards, Programmatic UI, Dark Mode support, Localization

Demo projects

These are a collection of demo projects that showcase my skills and experience in iOS development. Each project is designed to demonstrate a specific concept or technology, from core Swift fundamentals to more advanced frameworks and APIs. These demos highlight my hands-on approach to learning and applying new techniques in real-world scenarios:

Continuous Learning and Growth

As a developer, I believe that learning never stops. I'm constantly exploring new technologies, keeping up with the latest trends in iOS development, and improving my current skills. In addition to working on these projects, I regularly:

  • Follow WWDC videos to stay up-to-date on new iOS features.
  • Explore Swift, SwiftUI, Async Await, and other modern frameworks as part of my learning journey.

Let's Collaborate!

I'm always open to feedback and collaboration. If you're working on an exciting iOS project or have feedback on any of my work, don't hesitate to reach out! Feel free to fork this repository, open issues, or submit pull requests. Let's build something amazing together.

You can contact me on LinkedIn or via email at [email protected]

iOS Useful Concepts & Topics

Concept/Topic Description Apple Documentation/Official URLs
Creating custom UI Designing and building custom user interfaces for iOS applications. UIKit Documentation
Full lifecycle of mobile development The complete process from development, testing, and publishing apps, to implementing CI/CD and DevOps practices. iOS Developer Documentation
Networks and distributed systems Understanding networking fundamentals like RESTful APIs, HTTP, and asynchronous communication. Networking with URLSession
Clean code Writing maintainable and well-structured code, adhering to principles such as SOLID and DRY. Swift Documentation
Mobile landscape & trends Awareness of current design trends, emerging technologies, and mobile development innovations. Human Interface Guidelines
iOS third-party libraries Using popular libraries for enhanced functionality, such as Alamofire for networking, or Moya for API abstraction. Swift Package Manager
Secured REST APIs Implementing and interacting with secure REST APIs using proper authentication and security practices. Security Best Practices
Gitflow or similar A branch-based Git workflow for managing development and feature releases. GitHub Documentation
Code review best practices Following best practices for peer code reviews to improve quality and maintainability of the codebase. GitHub Code Review Guidelines
OAuth and OpenID Connect Implementing user authentication and authorization using OAuth and OpenID Connect standards. Authentication Services
CI/CD Setting up Continuous Integration and Continuous Delivery pipelines using tools like Jenkins, GitHub Actions, and Fastlane. Xcode Continuous Integration
TDD (Test-Driven Development) Writing tests before developing features to ensure robust, bug-free code through iterative development. Unit Testing with XCTest
RxSwift / RxCocoa Using RxSwift and RxCocoa for reactive programming and handling asynchronous events in iOS applications. Reactive Programming with Combine
Asynchronous requests Managing background tasks and API requests using asynchronous code (async/await) to improve performance and responsiveness. Concurrency with Swift
Dependency injection Designing apps with Dependency Injection to decouple components and improve testability. Swift Dependency Injection
Reactive programming A programming paradigm concerned with data streams and the propagation of change, handled using Combine or third-party libraries. Combine Documentation
Apple design guidelines Following Apple's Human Interface Guidelines (HIG) to build intuitive and user-friendly iOS applications. Human Interface Guidelines
Scrum and Agile Using Agile methodologies such as Scrum for iterative and incremental development in teams. Agile Development
Core Animation & UIKit Using Core Animation and UIKit to build smooth and responsive UI animations and interfaces. Core Animation Documentation
Offline storage Storing data locally on the device using technologies like Core Data, UserDefaults, or SQLite. Core Data Documentation
Threading Managing concurrent tasks with GCD (Grand Central Dispatch) and Operations to improve app performance. Concurrency Programming Guide
Unit and integration testing Writing automated unit and integration tests using XCTest and other frameworks to ensure code correctness. XCTest Documentation
iOS APIs and Capabilities Leveraging various iOS APIs such as Core Location, MapKit, and HealthKit to integrate additional features. iOS API Capabilities
App signing and provisioning Understanding the app signing and provisioning process for distributing apps securely via the App Store or other methods. App Distribution Guide
SwiftUI Building declarative UIs for all Apple platforms using SwiftUI. SwiftUI Documentation
Swift Package Manager Managing Swift libraries and dependencies in a scalable way using Swift Package Manager (SPM). Swift Package Manager
CocoaPods A dependency manager for Swift and Objective-C projects, simplifying the integration of third-party libraries. CocoaPods Documentation
Fastlane Automating app release processes including testing, building, and deploying iOS apps with Fastlane tools. Fastlane Documentation
Firebase tools Integrating Firebase tools like Analytics, Remote Config, and Crashlytics for app monitoring and configuration. Firebase Documentation
Code obfuscation Protecting your code from reverse engineering and tampering by using obfuscation techniques. Security Best Practices
High-level functions Utilizing higher-order functions in Swift such as map, flatMap, filter, and reduce for functional programming. Swift Functional Programming
Closures Using closures for functional programming, callbacks, and asynchronous code execution in Swift. Closures in Swift
Generics Writing flexible, reusable functions and types using Swift's generics system. Generics in Swift
Keychain Storing sensitive user data securely using the iOS Keychain API. Keychain Services
SwiftLint Ensuring your Swift code follows consistent styling and best practices using SwiftLint. SwiftLint GitHub
WatchOS, MacOS, tvOS apps Expanding your development to other Apple platforms like watchOS, macOS, and tvOS. WatchOS Documentation
Continuous Integration (CI) Automating builds, tests, and deployment with CI tools such as Jenkins, GitHub Actions, and Azure DevOps. Xcode CI
Source control Managing code using version control systems like Git and GitHub, following best practices like GitFlow. GitHub Flow

Other useful links:

General iOS Engineer knowledge:

iOS IDEs & Tools:

Combine:

Swift:

Data Storage (offline/online):

Books:

CoreImage:

MacOS:

Metal:

Push notifications:

Networking:

Encoding & Decoding:

App submission, TestFlight, AppStore Connect:

VoIP and calls:

SpriteKit:

Maps:

Security:

UI & Layout:

Universal links:

TextKit:

How to become a better iOS Developer:

Agile:

Application lifecycle:

Controller lifecycle:

Automation testing:

Concurrency:

https://www.viget.com/articles/concurrency-multithreading-in-ios/

https://cocoacasts.com/swift-and-cocoa-fundamentals-what-is-the-main-thread

https://www.hackingwithswift.com/read/9/4/back-to-the-main-thread-dispatchqueuemain

https://www.hackingwithswift.com/quick-start/concurrency/concurrency-vs-parallelism

https://www.hackingwithswift.com/swift/5.5/structured-concurrency

https://www.hackingwithswift.com/quick-start/concurrency/main-thread-and-main-queue-whats-the-difference

https://medium.com/@duwei199714/ios-why-the-ui-need-to-be-updated-on-main-thread-fd0fef070e7f

https://www.tirupatibalan.com/2019/04/01/process-threads-queues-in-ios.html

https://betterprogramming.pub/the-complete-guide-to-concurrency-and-multithreading-in-ios-59c5606795ca

https://medium.com/@hassaneldesouky/ios-memory-management-in-under-6-minutes-3be777f69b7e

https://www.raywenderlich.com/966538-arc-and-memory-management-in-swift

https://medium.com/elements/memory-management-in-swift-31e20f942bbc#:~:text=In%20Swift%2C%20memory%20management%20is,stored%20properties%20of%20that%20instance.

https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html

https://levelup.gitconnected.com/arc-memory-management-in-swift-165fd0329f16

https://www.swiftbysundell.com/basics/memory-management/

https://developer.apple.com/documentation/swift/swift_standard_library/manual_memory_management

https://www.appcoda.com/memory-management-swift/

https://developer.apple.com/documentation/dispatch/dispatchqueue

https://developer.apple.com/forums/thread/74657

https://betterprogramming.pub/queues-and-concurrency-in-ios-for-dummies-4089da2365f8

https://www.avanderlee.com/swift/concurrent-serial-dispatchqueue/

https://medium.com/@rr092293/gcd-queues-in-ios-561ed56b65ae

https://www.raywenderlich.com/books/concurrency-by-tutorials/v2.0/chapters/3-queues-threads

https://stackoverflow.com/questions/21122842/whats-the-difference-between-synchronous-and-asynchronous-calls-in-objective-c#:~:text=swift%203%2C%204%2C%204%2C,task%20to%20finish%20before%20continuing.&text=Asynchronous%20means%20that%20Completes%20a,means%20it%20will%20not%20wait.

https://medium.com/@almalehdev/concurrency-visualized-part-1-sync-vs-async-c433ff7b3ebe

https://www.raywenderlich.com/5370-grand-central-dispatch-tutorial-for-swift-4-part-1-2

https://www.raywenderlich.com/5293-operation-and-operationqueue-tutorial-in-swift

Data structures & Algorithms:

https://github.com/raywenderlich/swift-algorithm-club

https://medium.com/swlh/data-structures-algorithms-in-swift-part-1-stack-ccae824cc62

https://dennis-xlc.gitbooks.io/swift-algorithms-data-structures/content/chapter5.html

https://www.swiftbysundell.com/articles/picking-the-right-data-structure-in-swift/

Databases:

https://trio.dev/blog/best-ios-database

https://distantjob.com/blog/best-ios-database/

https://dev.to/apentsov/ios-database-comparison-what-are-the-differences-4h1b

https://developer.apple.com/documentation/coredata

https://www.raywenderlich.com/7569-getting-started-with-core-data-tutorial#toc-anchor-005

https://www.advancedswift.com/core-data-objects/

https://medium.com/@ankurvekariya/core-data-crud-with-swift-4-2-for-beginners-40efe4e7d1cc

https://cocoacasts.com/setting-up-the-core-data-stack-from-scratch

https://www.hackingwithswift.com/books/ios-swiftui/core-data-introduction

https://cynoteck.com/blog-post/core-data-with-swift/

https://betterprogramming.pub/a-light-intro-to-core-data-part-un-e344f9d1528

https://firebase.google.com/docs/ios/setup

https://github.com/firebase/firebase-ios-sdk

https://www.raywenderlich.com/21133526-firebase-tutorial-getting-started

https://developer.goacoustic.com/acoustic-campaign/docs/integrate-ios-sdk-with-firebase-using-swift

https://medium.com/@niamhpower/getting-started-with-firebase-on-ios-part-1-612af4bcabd6

https://www.mongodb.com/docs/realm-legacy/docs/swift/latest/

https://github.com/realm/realm-swift

https://realm.io/

https://www.raywenderlich.com/9220-realm-tutorial-getting-started

https://www.linkedin.com/pulse/easy-use-realm-swift-riccardo-rizzo/

https://www.freecodecamp.org/news/add-realm-database-to-ios-crud-app-with-with-swift/

https://www.cloudbees.com/blog/realm-database-tutorial-get-started-quickly-swift

https://www.appypie.com/realm-database-swift-getting-started

https://www.raywenderlich.com/6620276-sqlite-with-swift-tutorial-getting-started

https://github.com/stephencelis/SQLite.swift

https://medium.com/@sourabhkolekar16/about-sqlite-swift-d637e0fc2171

https://iosexample.com/easy-to-use-sqlite-orm-library-written-with-swift/

https://www.raywenderlich.com/6620276-sqlite-with-swift-tutorial-getting-started

Dependency Management:

https://cocoapods.org/

https://www.raywenderlich.com/7076593-cocoapods-tutorial-for-swift-getting-started

https://codewithchris.com/cocoapods/

https://www.advancedswift.com/ranked-swift-cocoapods/

https://blog.ah.technology/replacing-cocoapods-with-swift-package-manager-fa37d67294c3

https://www.swift.org/package-manager/

https://developer.apple.com/documentation/swift_packages/adding_package_dependencies_to_your_app

https://www.raywenderlich.com/7242045-swift-package-manager-for-ios

https://github.com/apple/swift-package-manager

https://swiftpackageindex.com/

https://brightdigit.com/tutorials/swift-package-manifest-file/

https://cocoacasts.com/xcode-fundamentals-how-to-add-a-swift-package-to-a-project

https://www.uptech.team/blog/swift-package-manager

https://docs.vapor.codes/4.0/spm/

https://github.com/Carthage/Carthage

https://www.raywenderlich.com/7649117-carthage-tutorial-getting-started

https://swiftpackageindex.com/Carthage/Carthage

https://www.codementor.io/blog/swift-package-manager-5f85eqvygj

https://medium.com/@chitralekha.yellewar/carthage-9df89b7f600f

https://manasaprema04.medium.com/dependency-managers-in-swift-d6a01e7a29a8

https://developer.blueshift.com/docs/set-up-blueshifts-ios-sdk-using-carthage

https://getstream.io/blog/migrate-carthage-to-spm/

https://docs.sentry.io/platforms/apple/guides/ios/install/carthage/

https://git-scm.com/book/en/v2/Git-Tools-Submodules

https://git-scm.com/docs/git-submodule

https://www.atlassian.com/git/tutorials/git-submodule

https://github.blog/2016-02-01-working-with-submodules/

https://devconnected.com/how-to-add-and-update-git-submodules/

https://www.vogella.com/tutorials/GitSubmodules/article.html

https://gist.github.com/gitaarik/8735255

https://chrisjean.com/git-submodules-adding-using-removing-and-updating/

Design Patterns:

https://refactoring.guru/design-patterns

https://chetan-aggarwal.medium.com/ios-design-patterns-f478abd78132

https://www.raywenderlich.com/477-design-patterns-on-ios-using-swift-part-1-2

https://medium.com/swlh/ios-design-patterns-a9bd07818129

https://rubygarage.org/blog/swift-design-patterns

https://gbksoft.com/blog/top-design-patterns-for-developing-ios-apps/

https://stfalcon.com/en/blog/post/ios-patterns

https://developer.apple.com/documentation/swift/cocoa_design_patterns

https://www.spaceotechnologies.com/blog/ios-design-patterns/

https://www.raywenderlich.com/34-design-patterns-by-tutorials-mvvm

https://www.raywenderlich.com/477-design-patterns-on-ios-using-swift-part-1-2

https://www.raywenderlich.com/1000705-model-view-controller-mvc-in-ios-a-modern-approach

Localization:

https://medium.com/swlh/app-localization-in-swift-ios-swift-guide-baa2c2e4298e

https://developer.apple.com/documentation/xcode/localization

https://www.hackingwithswift.com/example-code/uikit/how-to-localize-your-ios-app

https://phrase.com/blog/posts/ios-tutorial-internationalization-localization/

https://developer.apple.com/localization/

https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPInternational/Introduction/Introduction.html

https://medium.com/lean-localization/ios-localization-tutorial-938231f9f881

Location:

https://developer.apple.com/documentation/corelocation

https://developer.apple.com/documentation/corelocation/getting_the_user_s_location

https://www.advancedswift.com/user-location-in-swift/

https://www.raywenderlich.com/5247-core-location-tutorial-for-ios-tracking-visited-locations#toc-anchor-010

https://www.hackingwithswift.com/read/22/2/requesting-location-core-location

https://stackoverflow.com/questions/25296691/get-users-current-location-coordinates

https://itnext.io/building-a-location-tracker-in-swift-aab99b6267db

https://softauthor.com/ios-swift-get-user-location-real-time/

https://www.raywenderlich.com/5247-core-location-tutorial-for-ios-tracking-visited-locations

Machine Learning:

https://developer.apple.com/machine-learning/

https://developer.apple.com/documentation/coreml

https://www.raywenderlich.com/7960296-core-ml-and-vision-tutorial-on-device-training-on-ios

https://bignerdranch.com/blog/an-intro-to-machine-learning-in-ios-with-swift-and-playgrounds/

https://9to5mac.com/2020/08/06/apple-using-machine-learning/

https://towardsdatascience.com/core-machine-learning-for-ios-developers-7f2a4b19ec08

https://www.hackingwithswift.com/books/ios-swiftui/training-a-model-with-create-ml

https://www.raywenderlich.com/5653-create-ml-tutorial-getting-started

Structs vs classes:

https://www.appypie.com/struct-vs-class-swift-how-to#:~:text=In%20Swift%2C%20structs%20are%20value,choice%20between%20classes%20or%20structs.

https://docs.swift.org/swift-book/LanguageGuide/ClassesAndStructures.html

https://medium.com/@burakakyalcin/class-vs-struct-in-swift-f8c48eaacdba

https://abhimuralidharan.medium.com/difference-between-a-struct-and-a-class-in-swift-53e08df73714

https://developer.apple.com/documentation/swift/choosing_between_structures_and_classes

https://www.avanderlee.com/swift/struct-class-differences/

https://betterprogramming.pub/struct-vs-classes-in-swift-the-differences-explained-1e164a22efa6

https://blog.logrocket.com/introduction-to-classes-and-structs-in-swift/

https://levelup.gitconnected.com/class-vs-struct-8e4dafa66ae9

Testing:

https://www.raywenderlich.com/21020457-ios-unit-testing-and-ui-testing-tutorial

https://semaphoreci.com/blog/xcode-unit-testing-tutorial

https://medium.com/swlh/unit-testing-in-swift-the-fundamentals-eec805766349

https://www.swiftbysundell.com/basics/unit-testing/

https://clean-swift.com/effective-unit-testing/

https://developer.apple.com/documentation/xctest

https://www.hackingwithswift.com/read/39/overview

https://www.avanderlee.com/swift/unit-tests-best-practices/

https://roadfiresoftware.com/2018/03/how-to-write-unit-tests-in-swift-4-with-xctest/

https://semaphoreci.com/blog/ui-testing-swift

https://codewithchris.com/xcode-ui-testing-swift/

https://www.hackingwithswift.com/articles/148/xcode-ui-testing-cheat-sheet

https://www.appcoda.com/ui-testing-swiftui-xctest/

https://developer.apple.com/documentation/xctest/user_interface_tests

https://www.swiftbysundell.com/articles/getting-started-with-xcode-ui-testing-in-swift/

https://blog.bitrise.io/post/the-ultimate-guide-to-unit-and-ui-testing-for-beginners-in-swift

https://www.raywenderlich.com/30227776-swiftui-testing-with-viewinspector-for-ios

https://www.raywenderlich.com/21020457-ios-unit-testing-and-ui-testing-tutorial

UI:

https://www.hackingwithswift.com/quick-start/swiftui/swiftui-vs-interface-builder-and-storyboards

https://medium.com/technology-nineleaps/swift-ui-or-storyboard-675ff2b40829

https://www.toptal.com/ios/ios-user-interfaces-storyboards-vs-nibs-vs-custom-code

https://stackoverflow.com/questions/59766558/swiftui-vs-interface-builder-and-storyboards

https://blog.logrocket.com/storyboard-vs-programmatically-ios-ui-design/

https://instabug.com/blog/why-we-dont-use-interface-builder-and-storyboards-at-instabug/

https://medium.com/@matlyles/storyboards-vs-programmatic-ios-development-40c5b5907f85

https://www.reddit.com/r/iOSProgramming/comments/67nvpj/making_interfaces_using_interface_builder_vs/

https://developer.apple.com/xcode/interface-builder/

https://www.raywenderlich.com/5055364-ios-storyboards-getting-started

View Controllers:

https://developer.apple.com/documentation/uikit/uiviewcontroller

https://www.hackingwithswift.com/example-code/uikit/what-is-a-uiviewcontroller

https://www.appypie.com/view-controller-uiviewcontroller-ios-swift

https://www.swiftbysundell.com/articles/subclass-free-view-controllers-in-swift/

https://cocoacasts.com/managing-view-controllers-with-container-view-controllers/

https://developer.apple.com/documentation/uikit/uitableviewcontroller

https://www.ralfebert.com/ios-examples/uikit/uitableviewcontroller/

https://iosdevcenters.blogspot.com/2018/01/uitableviewcontroller-in-swift-4.html

https://stackoverflow.com/questions/24098779/create-a-uitableviewcontroller-programmatically-in-swift

https://www.hackingwithswift.com/read/1/3/designing-our-interface

https://www.appypie.com/table-view-controller-uitableviewcontroller-how-to

https://medium.com/swift2go/building-reusable-generic-uitableviewcontroller-in-ios-app-alfian-losari-cba0fded3740

https://www.codementor.io/@nguyentruongky/uitableviewcontroller-vs-uiviewcontroller-uitableview-rfxuec34w

https://www.raywenderlich.com/4363809-uisearchcontroller-tutorial-getting-started

Views:

https://developer.apple.com/documentation/uikit/uicollectionview

https://www.raywenderlich.com/18895088-uicollectionview-tutorial-getting-started

https://guides.codepath.com/ios/Collection-View-Guide

https://guides.codepath.com/ios/Using-UICollectionView

https://medium.com/swlh/introduction-to-uicollectionview-ios-swift-ed4e7ab1e1e3

https://www.swiftbysundell.com/articles/building-modern-collection-views-in-swift/

https://lickability.com/blog/getting-started-with-uicollectionviewcompositionallayout/

https://developer.apple.com/documentation/uikit/uiscrollview

https://www.raywenderlich.com/5758454-uiscrollview-tutorial-getting-started

https://medium.nextlevelswift.com/using-uiscrollview-in-swift5-with-autolayout-b0e463d3e5fb

https://www.appcoda.com/uiscrollview-introduction/

https://www.objc.io/issues/3-views/scroll-view/

https://oleb.net/blog/2014/04/understanding-uiscrollview/

https://www.willowtreeapps.com/craft/how-to-create-a-simple-collapsing-header-with-uiscrollview

https://developer.apple.com/documentation/uikit/uisplitviewcontroller

https://www.raywenderlich.com/4613809-uisplitviewcontroller-tutorial-getting-started

https://nshipster.com/uisplitviewcontroller/

https://swiftwithmajid.com/2019/04/03/adapting-app-for-ipad-with-uisplitviewcontroller/

https://mobikul.com/uisplitviewcontroller-in-swift-5-ios-13/

https://www.biteinteractive.com/split-view-controllers-done-right-in-ios-14/

https://medium.com/swlh/ios-14-uisplitviewcontroller-5-issues-that-you-may-run-into-65b09601b3fb

https://developer.apple.com/documentation/uikit/uitableview

https://guides.codepath.com/ios/Using-UITableView

https://stackoverflow.com/questions/33234180/uitableview-example-for-swift

https://programmingwithswift.com/create-a-uitableview-with-swift/

https://www.codingexplorer.com/getting-started-uitableview-swift/

https://thomashanning.com/uitableview-tutorial-for-beginners/

https://www.raywenderlich.com/8549-self-sizing-table-view-cells

https://www.raywenderlich.com/2198310-uistackview-tutorial-for-ios-introducing-stack-views

https://www.raywenderlich.com/5758454-uiscrollview-tutorial-getting-started

https://www.raywenderlich.com/5786-uitableview-infinite-scrolling-tutorial

https://www.raywenderlich.com/4829472-uicollectionview-custom-layout-tutorial-pinterest

About

Concise iOS demos and projects aimed at presenting diverse iOS concepts

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published