June 9, 2022

1 Step

1 Step is the app that genuinely got me into iOS engineering, which I built back in 2020. It was during the designing and development process that I started getting myself deep into the material and truly discovered my passion for coding and designing.

The idea came to me from a TED Talk held by Stephen Duneier. He would talk about his strategy to reach goals, which fundamentally is to make a goal trackable and easy to take tiny actions for. At the same time, I had this design concept to display goals as mountains and remember being hooked to the fascination combination.

Although I initially envisioned 1 Step to be a competitive app inside the App Store for people who are looking to achieve their goals through tracking, for which I surely came up short, it would teach me a lot of great lessons. Here are the main ones:

  • I have learned to start a larger project only if I am fully passionate about it. Over the whole development process of 1 Step, I was double-minded about how excited I honestly was for the goal-reaching strategy I was building. Only after publishing it to the App Store have I noticed I wouldn't even want to use it myself and realized: how could I market something at all if I am not fully passionate about it?
  • Moreover, I love working with other people in a team. For 1 Step, I have spent many, many hours doing all the work on my own. This is fine for smaller projects, but for projects that take more time, I now see little point in doing it alone.
  • Lastly, it was difficult but fun! I had a great time and got the opportunity to learn many things. I am keener to start something in the future than ever.

Things I learned (iOS Development)
  • Using the MVVM design pattern on the SwiftUI framework
  • Learning to write scalable code and structuring a large code base
  • Building user interfaces with AlignmentGuides, PreferenceKeys and custom Paths
  • Building and managing complex custom animations, gestures and overlays
  • Handling dynamic app icons, app appearances along with color themes and text localization
  • Working with the NSPersistentCloudKitContainer for CoreData with iCloud synchronization, synchronizing NSManagedObjectContext operations
  • Managing persistent user data with UserDefaults that are synched with CloudKit
  • Displaying repeating UserNotifications and handling the authentication logic
  • Running UnitTests for important algorithms
  • Integrating Firebase Analytics and Crashlytics
  • Working with StoreKit and managing user purchases
  • Publishing and managing the app with App Store Connect and TestFlight
  • Actively taking part in the StackOverflow community, answering and writing many questions
Things I learned (Design)
  • Planning and designing app user interfaces
  • Working with Sketch and creating working prototypes
  • Creating vector graphics, custom icons and rendering design mock ups
  • Researching user experience
  • Making and integrating tutorial gifs for new users
Technologies I used
  • Swift
  • SwiftUI and Combine
  • CoreData and CloudKit
  • Firebase Analytics and Crashlytics
  • Xcode
  • Sketch
  • Miro
  • Procreate
  • Adobe Photoshop
  • Final Cut Pro X

Tutorial GIFs

Object diagram of CoreData entities


Link: https://github.com/Mofawaw/1-StepPublic