Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WhereToEat 🍜

An AI-powered restaurant discovery app that takes the stress out of deciding where to eat. Enter a cuisine or vibe and a location, and let the AI find your next dining spot.

Live Demo: wheretoeatcom.netlify.app Backend repo: WhereToEat-BE


Features

  • AI Suggestion - Powered by Google Places and an LLM (OpenAI gpt-4o-mini) to recommend real restaurants based on your input
  • Free text input - describe what you're after (cuisine, vibe, type of food) and location in your own words
  • Smart suggestions - never repeats a restaurant you've already been suggested, and learns from your favourites and visit history
  • Find Another - reruns the search with the same inputs for a different suggestion
  • Favourites - save restaurants you love, view and remove them anytime
  • Last Visited - keep track of places you've been
  • Google Maps link - open the suggested restaurant directly in Maps
  • Authentication - secure register and login with JWT
  • Personalised - your history and favourites are tied to your account
  • Responsive design - mobile-friendly, dark gradient theme with glassmorphism cards

Tech Stack

Layer Technology
Frontend Framework React, TypeScript
Styling Tailwind CSS
Animation Framer Motion
Notifications react-hot-toast
Backend C# ASP.NET Core (see WhereToEat-BE)
Database Supabase (PostgreSQL)
AI OpenAI API (gpt-4o-mini)
Restaurant Data Google Places API (New)
Auth JWT
Deployment Netlify (frontend) + Render (backend)

Getting Started

Prerequisites

Installation

git clone https://github.com/Michael-Tawil/WhereToEat.git
cd WhereToEat
npm install

Environment Variables

Create a .env file in the root:

VITE_API_URL=https://your-backend-url.com

Run locally

npm run dev

Navigate to http://localhost:5173 to view the app.

Build for production

npm run build

Architecture

User enters cuisine/vibe + location
        ↓
React frontend calls C# API (with JWT)
        ↓
C# calls Google Places API → real restaurants nearby
        ↓
C# checks user's favourites, last visited, and suggestion history
C# calls OpenAI (gpt-4o-mini) → picks best match, returns reason
        ↓
Suggestion displayed with Google Maps link
        ↓
User can save to favourites, mark as visited, or get another suggestion

Project Structure

Components

  • App.jsx - main layout
  • Topbar.jsx - logo + logout
  • Searchbar.jsx - free text inputs, triggers search via context
  • AIsuggest.jsx - displays suggestion, Visited / Find Another / Maps buttons
  • Lvf.jsx - Last Visited + Favourites sections
  • Loading.jsx - chopstick loading animation
  • LoginPage.jsx - Framer Motion fill animation

Context

  • context/SearchContext.jsx - shared search state (location, cuisine, suggestion, loading, handleSearch)
  • context/AuthContext.jsx - JWT token, user, login, logout

Utils

  • utils/getCuisineImage.js - maps cuisine to a representative food photo

Author

Michael Tawil

About

app to suggests food spots using AI

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages