Skip to content

AndrewG828/munch-ios

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

41 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Munch! (Won Best UI)

App Name: Munch!

Tagline: ๐Ÿ“ธ Snap, Split, Rate: Group Dining Made Easy!


Frontend

  • Andrew Gao
  • Jimmy Chen

Backend

  • Fanhao Yu
  • Jason Guo

๐Ÿ“š Table of Contents


App Description

This app simplifies bill splitting and food discovery among friends. Users can scan receipts, assign items to friends, and automatically send Venmo requests with the correct amounts. After payment, users can rate their assigned items from 0 to 5 stars and leave a short message. These ratings appear on user profiles and contribute to a shared home feed, where users can explore the highest-rated, store-specific food items. A built-in map displays the locations of these top-rated items, allowing users to discover great food nearby and tap to open Apple Maps for instant directions. Whether you're settling up or seeking your next favorite meal, this app makes dining out easier.


App Requirements

  • Multiple Screens: Includes login, signup, home page, food review pages, restaurant based pages, food category pages, profile page, camera page, and bill split pages.
  • Scrollable View: The initial screen is animated and all screens listed above are scrollable, with some having vertical and horizontal scroll features in the same page.
  • Networking Integration: Flask backend API integration with Alamofire used is all screens to fetch and post data to the Database. Used to store information such as food, restaurant, reivew, and user items.

Features

App Icon

APPPP

App Launch Animation

Once the user opens the app, an animation plays before they are met with a login screen.

iMockup - iPhone 15 Pro Max iMockup - iPhone 15 Pro Max-1 iMockup - iPhone 15 Pro Max-2

Login and Signup Pages

The user is first met with a login page, but if they don't have an account, they can sign up/create an account where they can either enter in a username and password or sign in via Google. Sign in with Google is made possible with the googlesignin-ios package, which was imported as a dependency. The login credentials (username and password) are sent to the backend through Alamofire networking, using a userViewModel to handle the intermediate layer between the view and model.

iMockup - iPhone 15 Pro Max iMockup - iPhone 15 Pro Max-1 iMockup - iPhone 15 Pro Max (1)


Home Page

Includes:

  • Search Button
  • Foods Near You
  • Food Spotlight

iMockup - iPhone 15 Pro Max

Search Page ~> Food Category Page

The search page allows users to type in a query and view a filtered list of food categories. When a category is selected, the app navigates to a screen showing all foods in that category, sorted by rating. From there, users can tap a food item to view and submit a review. This flow connects the search interface with category browsing and review submission, creating a smooth, multi-step user experience driven by state and navigation variables.

iMockup - iPhone 15 Pro Max iMockup - iPhone 15 Pro Max-1

Food Near You Page ~> Resturant Page ~> Apple Maps

When user's click on this, they get taken to a resturant specific page where all items on the resturants menu are displayed. Users are able to zoom in and out of the map and get directions to the resturant by clicking the location icon on the map, using apple maps. This page also allows users to click into food items to see and make reviews. Networking is implemented to fetch nearby resturants including their id, name, location, image_url, and menu. Like many displays in the app, images are rendered using Async Image.

iMockup - iPhone 15 Pro Max-1 iMockup - iPhone 15 Pro Max

Resturant Specific Item Page

On this page, user is able to view other user's reviews on a resturant specific item and also create and post their own reviews on that item. Networking is implemented to post and fetch user reviews based on message, rating, etc.

iMockup - iPhone 15 Pro Max-2 iMockup - iPhone 15 Pro Max-3 iMockup - iPhone 15 Pro Max-4


Scanning Page ~> Cropping ~> Analyzing ~> Bill Splitting Page

The receipt scraping and camera functionality of our app allows users to take a picture of a receipt, send it to the backend as a jpeg/jpg for processing, and receive structured JSON data representing the items on the receipt. When the user navigates to the scan page, a full-screen camera view opens automatically using a UIImagePickerController wrapped in SwiftUI. After the user captures a photo and confirms it, the image is passed back to the view, and the app triggers a network request to upload the image to the Flask backend, through a ViewModel and NetworkManager.

The image is sent as a multipart form-data POST request using Alamofire and receives a structured response containing the list of items, tax, tips, and total price. The app receives this response, updates its state with the parsed items, and automatically navigates to a split bill screen where the user can review and assign each item. This flow tightly integrates camera capture, image upload, backend processing, and client-side navigation to create a seamless user experience for digitizing receipts.

iMockup - iPhone 15 Pro Max iMockup - iPhone 15 Pro Max-1
iMockup - iPhone 15 Pro Max-2 iMockup - iPhone 15 Pro Max (2)


Profile page ~> Request Sent ~> Venmo Payment Page

User is able to accept Venmo requests from friends which automatically takes them to the Venmo app using a Venmo deep link initiated at the backend, with the amount pre-populated. Users are also able to rate the item that their friend assigned them to help populate the community and friend pages.

iMockup - iPhone 15 Pro Max (4)

iMockup - iPhone 15 Pro Max iMockup - iPhone 15 Pro Max-1


Thanks for Munching with us! ๐Ÿ˜‹

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages