After I created the Xcode project a couple of weeks ago with it’s dependency to a Swift wrapper framework I built for the library I need to use for Papertrail, it took me a while to get back to work. During the last couple of days I mainly thought about how I should tackle the basic UI, how to get from here to there and what possibilities I have. I looked at some other apps and decided to go the straight forward way, not reinventing the wheel. The app will have a standard iOS UI, no custom controls or fancy animations and usage patterns. A stock iOS app.
In the past I started by drawing some sketches of my ideas into a notebook and refining them over time into quite detailed wireframes. I like this approach a lot. First of all it’s fun! By doing this with pen and paper it slows me down and ideas start to pop up while drawing. But it always took me quite some time to finish the wireframe. It’s a great feeling when it’s done, but at the moment I don’t have the time and inspiration to go in to the nitty gritty details. I had a basic flow in mind and wanted to get something visible done quickly. Therefore I turned to Interface Builder and threw some view controllers onto the canvas. A standard Master/Detail app template already provides some infrastructure and after a few hours of moving around and connecting the controllers and adding a bit of boiler plate code here and there, I now have a very basic clickable prototype of my app.
I’m not sure yet whether I’ll stick with the Storyboard or do most of the wiring in code, but I’ll probably just use it. A basic UI without a lot of custom stuff or containers and complex navigation is more or less good to handle. Storyboards have a bad reputation, but they are a very powerful tool to get basic stuff done much quicker than coding everything by hand. There are drawbacks, but they are a non-issue for me right now.
The next step will be to think about how to structure the model and how to architect the code. Also here I won’t do much fancy stuff, without using the current app architecture and tools of the day like VIPER or React. Stock app, stock pattern. Model-View-Controller has proven to be a stable thing and it still sticks around after many years. Also here, it has kind of a bad reputation but it can be clean nevertheless. You just have to be careful. I’ll make it as flexible as possible and needed in case I come up with some more features in the future or want to change the UI at some point. I’ll also have most of the model and non-UI code tested by unit tests, but that’s a topic for another day.