A decision-making app that helps users find restaurants when they can't decide, using a "5-3-1" selection process.
- Smart Restaurant Filtering: Find restaurants by cuisine, price level, and location
- Open Now Filter: Option to show only currently open restaurants
- Price Fallback: Automatically expands search to nearby price levels if not enough options found
- Google Places Integration: Real-time restaurant data and location search
- 5-3-1 Selection Process: Users select 5 restaurants, narrow to 3, then get 1 random choice
- Frontend: React, Google Places Autocomplete, Axios
- Backend: Spring Boot, Google Places API
- Deployment: Docker-ready
- Java 21+
- Node.js 16+
- Google Cloud API key with Places API enabled
-
Create
backend/.envwith your Google API key:GOOGLE_API_KEY=your_api_key_here -
Run the backend:
cd backend ./mvnw spring-boot:run
-
Create
frontend/.envwith your Google API key:REACT_APP_GOOGLE_MAPS_API_KEY=your_api_key_here -
Install dependencies and start:
cd frontend npm install npm start
GET /api/restaurants/random- Get random restaurants with filtersGET /api/restaurants/google-places- Get place details by IDPOST /api/restaurants/select- Select final restaurant from choices
Project adapted from CS222 Team project with Nancy Wang, Elaina Xiao, and Nat Gao. Frontend rebuilt using Claude Code.