My personal iOS & Swift setup

After years of development, I have come to a point where I am pretty happy with my iOS & Swift setup, including project structure, code conventions, tools etc. In this post, I’ll discuss a series of posts that I plan to write, that descibe this setup in detail.

Why do I want to write these posts?

Since I have made so many decisions about every big and small aspect of iOS app development for such a long time, I think it may be time to write some of these things down in hope that it may be of help to others as well. At the very least, it will serve as self-reference.

I will take on this project as an open process, where I’d love for you to reach out with comments, corrections, suggestions, links to related posts etc. If you have any suggestions regarding this process idea, please let me know.

I plan to write one post each week. Given the varying complexity of the various topics, the posts will range from short, concrete ones to longer, more abstract ones. I will try to include hands-on information, code samples, screenshots and maybe even links to GitHub example and demo repos.

The topics below is currently a top of mind brain dump. The list will evolve as I proceed with this project. As soon as a topic is written, I will link to that post in the list. Eventually, I hope that every bullet will be linked to a post.

I used to love to blog about software development before becoming a parent, and I hope that this is a nice opportunity to slowly return to writing.

Topics

I have gone through most of my iOS projects and come up with some topics that I would like to write about. Let me know if you have any additional topics that I should add to the list.

Getting started:

Project setup:

  • Setting up a new iOS project
  • Setting up dependency management with CocoaPods
  • Setting up dependency management with Carthage
  • Split up your code into frameworks and libraries
  • Automate everything from start using Fastlane

Asset management:

  • Localization
  • Colors
  • Images
  • Fonts

Code conventions and implementations:

  • Protocol Driven Development
  • IoC and Dependency Injection
  • Unit testing
  • Mocking
  • Alamofire + Codable
  • Protocol Driven Development

Misc unstructured topics:

  • In-App Navigation
  • Message Handling
  • Notificatons
  • Extending protocol-based collections

As you can see, the list is currently pretty unstructured. The pieces hopefully fall into place as I proceed with the project :)

Conclusion

I look forward to getting started with this project and hope that you will keep me company. Feel free to reach out at any time.

All the best

Daniel