Athens Restaurant Roundup App

An app that lets you discover restaurants in the Athens area.

Olivia Wakim
6 min readDec 12, 2022

December 2022

By Olivia Wakim

Project Overview

My goal for this project was to create an app using SwiftUI and XCode that would allow users to explore restaurants in the Athens area. I wanted users to be able to find a comprehensive description of the restaurant, a rating, a price and a location. It was also important that the users could leave a review for the various restaurants and read the reviews others left as well. The result of the app was overall successful, although I had to scale it back from what I originally intended.

The Challenge

I was inspired by an Excel sheet I created with a list of restaurants in Athens I am working my way through before graduation. I wanted to have an app I could use that lets me accomplish the same goals in an easier, mobile way, and something that is more visually appealing than Excel. Initially, the challenges I was prepared to face were how to create a visually appealing app experience, how to allow users to like a specific restaurant, how to allow them to write their own reviews and how to let them see the reviews others had left. I wanted to learn more about using Core Data by the end of the project as well as improve my confidence in using SwiftUI and following tutorials provided by resources other than the textbook.

During my process, I ran into some challenges like creating a heart that could be used as a like button and adding Core Data.

The Solution

I began this project by sketching out a rough wireframe of my ideal app. The wireframe included a login page, a favorite restaurants page, a featured page and a my account page. I was perhaps a bit too ambitious when I began this project.

Picture of wireframe drawing on notebook paper
Rough wireframe sketch for my app

My initial rendering of the project included a sign-up screen as its homepage. I was able to build the sign-up screen using directions from the textbook, but after I completed it I realized I wasn’t sure how to make it completely functional and store any of the data, and building another login screen would take a lot of extra time when I hadn’t even begun the main section of my project.

Original sign-up screen I created and ended up scrapping.

In the end, I decided to scrap the sign-up page and replace it with a more generic homescreen that had a navigation link to the meat of the project.

Home screen I went with instead in the final iteration.

My next step was to create the bottom menu bar, which for most of the project looked like this. I wanted an explore page, a saved tab and a reviews tab.

Bottom bar for most of the project

The featured/explore tab was meant to have a list of restaurants in Athens I manually entered. I created a file that stored all of the restaurant data, then I built out the article detail view and an explore page that I was able to place inside of the tab view.

Built-out explore page that I later inserted into the tab view.

This time around, I gained a much better understanding of how to work with data and how to create the detailed views and implement them into an overall app. I worked on designing a functional and attractive detail view as well. I also worked on creating my own toggle style to add a liked feature.

Code to create my own toggle style
Article detail view + the liked button

After I completed the featured page, I turned my attention to what I knew would be more difficult… the Core Data reviews. I followed a tutorial to get a better understanding of Core Data, but I adjusted and edited it a lot to serve my own purposes. In retrospect, I wish I had started with Core Data and worked on building the app around that. I probably would have used that to enter the restaurants on the featured page instead of using arrays like I did here:

Arrays I created for the featured restaurants view

Implementing Core Data took a lot of trial and error to figure out. I struggled to simplify the tutorial I was using and fit it to my purposes because the tutorial was much more broad and created a larger project than what I was trying to do. In the end, I believe I have a better understanding of Core Data, and I’m excited about the possibilities it holds in the apps I could create in the future.

I used Core Data to create a reviews tab where the user can navigate to and click the plus sign to add their own review. I was even able to follow a tutorial and make the ratings appear like stars instead of just numbers.

Add a review screen
The collected reviews screen

As you can see, the page also allows an edit and delete button for the reviews, something I struggled with a bit as I kept putting it inside the struc when it should have been outside.

Using the stars instead of just numbers was an exciting feature as well because I think it really improved the overall design of the page. In terms of the detail article view, I wanted to make sure the pages included what I thought was important, including keywords, descriptions, a price estimate, a location and a star rating. In the future, I would definitely want to link to the restaurants’ websites.

I intended to create the saved restaurants page seen in the initial photo of the bottom bar for my final step, but as you can see in the final photo, I decided to focus on improving what I already had rather than working to create another page. I think in order to do that, I would have needed to start with Core Data and set up my restaurants with that.

Results

I think I was overall successful in this project. Once I gained a more realistic view of my skillset and how long each aspect would take, I was able to scale the project a bit better to fit with my skill level while still pushing myself. This was definitely a challenging project that forced me to gain a more complete understanding of the code and its functionality. I’m proud of what I was able to accomplish and how I took tutorials and textbook assignments and adjusted it to fit my own needs.

I certainly learned a lot of lessons. First, in the future I think I need to come into it with a more solid vision of what I want to create and research it a bit more beforehand so I know what order I should create everything in. Second, I need to remember to check my ambition a little bit so I’m not disappointed when I can’t create everything I envisioned. Finally, I would create a better file structure within XCode next time because it got somewhat cluttered with all of the many files I needed. For a complete video walkthrough and a verbal description of the process, see below.

--

--