About a year ago I wrote a wine journaling app. I was applying for a scholarship to WWDC and I hadn’t been developing for iOS for very long. I had two weeks to design and debug an app to submit to them.
I was able to accomplish this, but there were a lot of things I really wanted to go back and fix. The UI was very clunky. I didn’t have the persisted data organized very well. I didn’t have the navigation set up to work well with the user. I didn’t use Storyboards or Auto Layout. It was designed before iOS 7 came out. I made it iPad only, not thinking that you need two hands to hold and type on the app and you have no hands to hold your wine. I also had it where the user had to type in every single thing that went into the persisted data.
I have sort of been using that project as a make-shift portfolio project. I took six months out of my life to try and learn Core Audio and at the end of that time I was too burned out on it to make an app that uses it.
I still have this idea of what I want the app to be. I want to include a map where you can see all of the places your wine came from and all the places you have had wine. I want to find a way for the user to have to type in as little information as possible. I want to simplify the navigation. I want to use more modern ways of displaying my data. I would like the design to be clean and pleasant. I want to add the layers and animations that are recommended for the current UI standards.
I will be spending the next month working on this app. I know I could spend forever working on this app, so I am giving myself an informal deadline of having a preliminary build done before I give my talk at CocoaConf.
I plan to implement Core Data, networking with a wine API, and create a clean, well-designed project, both internally and externally. I would like to spend a week creating the Core Data and the data modeling.
Then I would like to spend a week doing NSURLSession and setting up the networking to query the API for the data I would like to persist, such as the type of grape, region, winery, year, etc… This part might get derailed if the API I am trying to use does not work. I have a contingency plan in place. If all else fails I can create a few lists of grape types and wine regions. I can take steps to limit the amount of typing my user will need to use.
After I get all of this in place I am planning to implement the user interface. I either want to use tab bar navigation or have a side menu that floats over the top of the main view. I don’t know how difficult that will be to implement, so I might go back and refactor it if it presents a problem.
Along with the UI I would like to display the wines in a collection view. I would like to give the user the option of seeing all of their wines or filtering based on tasting groups. In the previous version of the app every wine was part of a tasting. I would like to make this an optional parameter in the data structure.
I would also like to implement a map view that would allow the user to go back and forth seeing where their wines have come from and where they have tasted wine.
I feel I have a better grasp of how Objective-C and the iOS development environment works than I did last year. If I didn’t that would be a huge problem! I feel more confident about creating a well-designed app than I did before.
It is important for me to get something done and out there in the world. I have very specific ideas about how this should be done and I know if I don’t actually do it then I don’t have any credibility.
I have a deadline and I have a specific list of frameworks I plan to use. I will catalog my progress on this app and I will provide detailed technical explanations of any technology that I use that I have had to learn or figure out along with a list of resources I used to figure them out.
I will also continue work on the demos for my talks and on polishing my presentations. The next month is going to be interesting. Allons-y!