A cooking app designed to store recipes and easily reference them.

Autolayout, CoreData, Swift, UIKit
Scroll Down

Focal Points.

  • Build an app using the MVC architecture
  • Build it completely programmatically, using UIKit and Autolayout within Swift
  • Successfully integrate CoreData into the app
  • Implement animations and better design principles
  • Practice designing common custom elements such as pop-up views, buttons, and cells.

The Process.

The original idea behind my project RecipeCache was to create an app that would allow people to store and reference their recipes, as well as integrate a walk-through feature, filtering through the steps of each recipe. Each recipe has three categories of data; Ingredients, Prep Steps, and Cooking Steps. I figured this was a good general way of breaking down most recipes, so people would be able to input information easier.

I imagined some sort of scrolling view for people to look through their recipes, so I figured I would implement a custom TableView from UIKit. I spent some time sketching a basic design for the TableView and its different cells. This was a good learning opportunity because in order to achieve the view I was imagining I had to design an image cell, ingredient cell, prep step cell, cooking step cell, among others. Each cell had a different property adjusted to the type of content it was going to show.

For the main tableview, I designed a more complex cell that was capable of showing a recipe's image, title, and how many of each kind of step or ingredient there were.

Having made the made tableviews that I was going to use in the app, I focused on incorporating the walkthrough feature. I used a similar approach to Tinder's card system. I make a card view that displays the data for each recipe step, as well as a "Next" and "Previous" button to iterate through the steps. In the early versions of the app, I actually took this feature to another level with Machine Learning and the Camera. Essentially people could look at their phone and iterate through steps by nodding their head in different directions. Unfortunately, it was the movement detection was too sensitive so I took it out for the time being.

On the Cooking Step card, I also added the ability to pause/play a timer if there is one added for that step. If the card view is double tapped rapidly, the active timer is stopped, and vice versa.

The most challenging part of the building this app was integrating CoreData. I wanted to learn how to use it as it is commonly used in the IOS world and is Apple's main "in-house" database system. The idea was to figure out how to save an array of Recipes as objects in CoreData. I had some trouble figuring out exactly how I was going to set up the entities in my specific situation at first. I had to use parts of many different resources to create a solution that allowed me to succeed. Although it was tedious in the moment, I am grateful for the experience because it has made me a better problem solver.

Things I would change or improve.

  • Change all the tableviews in the app to UICollectionViews as they are being supported more by Apple moving forward
  • Incorporate more animations
  • Add the ability to share a recipe with your friends