I like to read about app architecture, always interested in understanding how others organize their code. Even after lots of explorations, I still follow MVC patterns. Beyond patterns, though, I don’t see much written about practical iOS architecture. In the spirit of sharing, I’ll be writing a series of technical articles about a new app I’m building, called CarShuffle, and in the process, share my thoughts on how I build iOS apps circa 2021.
Here in SF, city streets often have weekly street cleaning, and urban families sometimes have to manage several cars across several drivers, in order to minimize the number of parking tickets they receive. The premise of CarShuffle is to make it easy for families to remember to move their cars.
From this simple description, I can define the following basic product requirements:
- Manage a set of cars
- Share cars with others
- Remember where I park
- Remind me to move my cars in time
From these, I'll dive into the a variety of iOS architectural considerations:
- The Basics: CoreData, CloudKit, Lists, and Editors
- CloudCore: CloudKit Sharing Made Easy
- Scheduling Notifications
- Timelines, Widgets, and Complications
- Vision: Reading a Street Sign
- Location: Building Awareness Communally
- CreateML: Inferring Parking Habits
- …
I don’t know how far down this list I’ll get, or when I’ll get to each. I hope you find these articles interesting, and you can access the source code here.