A full-stack web application to explore NYC restaurants and review menu items.
DishScout allows users to search for food items or restaurants, view detailed reviews, leave their own ratings, and favorite dishes they love. The platform pulls data from the Google Places API and scrapes menu data using BeautifulSoup for a rich discovery experience.
- Search by food item or restaurant name
- Results sorted by average rating (highest first)
- View:
- Name and location of restaurant
- Food categories (from
has_category) - Average ratings for taste, presentation, price, and value
- Reviews from other users
- Add new reviews or edit existing ones
- Add items to favorites (only if logged in)
- Secure sign-up and login using hashed passwords (with
werkzeug.security) - Logged-in users can:
- Leave or edit reviews
- Add/remove favorite dishes
- View all past reviews and favorites in their Profile
- Lists all reviews the user has posted
- Edit or delete reviews
- View and remove favorited items
PostgreSQL database with key tables:
usersrestaurantfood_itemratingfavoriteshas_categorycategories
SQLAlchemy is used for executing raw SQL queries and managing transactions.
This project has an extensive PostgreSQL relational database structure that has been documented on this Project Overview Doc
- Google Places API – For restaurant metadata
- MenuPages – Scraped with
BeautifulSoupto get food items - Random reviews generated for demonstration
- Backend: Flask (Python), SQLAlchemy
- Frontend: HTML, CSS (Bootstrap), Jinja2 Templates
- Database: PostgreSQL
- Other: BeautifulSoup, Google Places API
- Clone the repo:
git clone https://github.com/hibaa8/DishScout.git
cd dishscout- Install dependencies:
pip install -r requirements.txt
- Create a .env file and add your Google API key:
GOOGLE_PLACES_KEY=your_key_here
- Run the app:
python server.py
