Simply manage a list of prioritized items
With a little bit of free time on my hands, I decided to get up to date on how to make an iOS app from scratch in Swift and publish it in the App Store (as a paying App, which turned out to be an interesting experience in itself). This blog post is about the motivation behind the app and the design of the first version (well, technically version 1.2 - Download on the App Store!).
A list of prioritized items?
I have been thinking for a long time about a simple app to facilitate my grocery/essentials shopping: I always buy the same basic items (milk, bread, cheese, tomatoes, chicken, yogurt, etc.), all I need to know when I am shopping is which items I will need again soon (or urgently). When I realize I will need something soon, I need a simple way to find the item (if already in the list) and put it back in the list of things to get. If it’s a new item, I should be able to add it easily, and not have to add it again in the future.
Until now I have been using Apple’s Reminders app but I cannot automatically prioritize items and I cannot search, so it is not well suited for this approach. There is very likely some list app out there that can do what I need, but in this case I wanted to design my own.
The app defines items characterized by a name (string) and optional details (other string), and a priority level. There are 4 priority levels: low, medium, high and critical. The prioritized list only shows items that are at priority critical, high and medium, sorted by decreasing level of priority (and alphabetically by name in each priority level). For my shopping I think of medium as “get some if on sale,” high as “we’re running out soon,” and critical as “we needed some yesterday.”
When shopping, I look at the prioritized list. When I get an item on the list, I swipe left to lower its priority back to low (which removes it from the list).
|Change priority with a swipe|
Search and Create Items
When I need more of something, I search the list of existing items (pull down to reveal the Search bar and tap in it). I can see the list of all items sorted alphabetically.
|Search existing items or browse alphabetically|
If I type something in the search, the list gets restricted to items whose name contains the search string. I am also presented with a “create item” button that uses the search string as the initial name for the new item. If the item I am looking for already exists, I can simply swipe right and select a higher priority level for the item. I can also adjust the priority by tapping on the item and changing the priority in the item view.
|Create or edit an item|
If I tap the button to create a new item, I get to the item view where I can edit the name, details and set the item’s priority. The item view also offers the option to delete the item entirely but that would be a rare occurrence for me since I don’t want to have to create it again next time I need it.
And that’s it!
These are the basic operations - all that’s needed to capture the requirements stated at the beginning.