Nearby Eats

About the project

Nearby Eats is my third project and the first published on the App Store, originated from my love for dining out and the need for a simple solution to discover local restaurants by distance and cuisine type. It marks my journey into manipulating real-time user location data and interactive maps, enhancing my understanding of user experience and technical implementation.

As I continue to refine the app, I plan on doing some future updates to enrich user engagement and provide detailed insights into dining options. They will include integrating the Google Places SDK to add photos, ratings, and reviews, while allowing different types of sorting, making the app a comprehensive dining guide.

Technologies used

UIKit • Auto Layout • Core Location • MapKit • Core Data

Features

  • Cuisine Type Selection: Users can choose from various types of cuisine depending on their current cravings, enhancing the personalized dining experience.
  • Location-Based Searches: Utilizes the Core Location API to allow users to set a search radius from their current location, ensuring they find restaurants within a comfortable distance.
  • Restaurant Listings and Details: Provides a list of restaurants, complete with details and sorted by the calculated distance from the user's location, integrating seamlessly with Apple Maps/Google Maps to show routes and distances.
  • Interactive Map Search: Features a custom map built with MapKit API, enabling users to visually search for the searched restaurants.
  • Favorites Management: Offers a dedicated tab for users to save their favorite dining spots and access them easily later using Core Data, improving user engagement and app usability.
  • Measurement System Customization: Integrates user preferences for measurement units (metric or imperial), with settings saved via UserDefaults to enhance personalization and ease of use.

Move your cursor over each section to display the corresponding screen

Upon launching the app, users are greeted with a search screen where they can set a radius and select their preferred cuisine type. After clicking the search button, it is displayed a list of places to eat matching their criteria.

When a user selects a place from the list, they are taken to a detailed restaurant screen with options to add it to favorites. Users can access, add, or remove restaurants anytime from the Favorites tab.

After making the search, users can view the restaurant results in a list or on a custom map for a more visual experience. By clicking on a map annotation, they can access the same detailed restaurant page.

Choose your route: users are able to get the directions with precision to the restaurants via Apple Maps or Google Maps directly from the restaurant detail screen for easy navigation to the dining destinations.

Challenges and Solutions

Using MapKit was an exciting aspect of development, although it came with its challenges, particularly when handling custom annotations for different types of places and drawing overlays that needed to update with user location changes. Initially, the overlays would accumulate on the map as the user moved, leading to clutter. I developed a method to remove old overlays and create new ones as the user's location changed, which kept the map view clear and functional.

‍And I must say this journey did not end with the app development; submitting the app to the App Store presented a new set of challenges. With no prior experience in app submission, I struggled to navigate the complexities of joining the Apple Developer Program, including issues with payment and account setup. These hurdles were significant, but overcoming them was a crucial part of my learning process.

What I learned

Developing this app expanded my skills in iOS development, especially in utilizing Core Location and MapKit. This project not only taught me about handling real-time geolocation data but also introduced me to building user-friendly map interfaces and efficiently query and display location-based restaurant data.  Additionally, the process of preparing and submitting the app to the App Store provided me with insights into app distribution, from meeting Apple's guidelines to managing app updates.