A modern, full-stack restaurant discovery assistant powered by AI. Built with React, TypeScript, FastAPI, and OpenAI's GPT-4o, this application helps users find and explore restaurants through an intuitive chat interface.
- Personal AI-powered restaurant assistant (Chef Ava) that understands natural language queries
- Detailed restaurant information including photos, ratings, reviews, hours, and pricing
- Integration with Yelp's API for comprehensive and up-to-date restaurant data
- Visual restaurant cards with multiple photos and interactive navigation
- Support for creation of different conversations
- Conversation sidebar for easy navigation between chats
- Auto-saving conversations
- Ability to delete or switch between conversations
- Conversation persistence across sessions
- Google account integration for secure authentication
- Personal conversation history tied to user accounts
- Separate conversation spaces for different users
- Profile picture and name integration from Google account
- Real-time streaming responses
- Message editing and deletion capabilities
- Fullscreen mode for better visibility
- Minimizable chat widget
- Markdown support in responses
- React 18 with TypeScript
- TailwindCSS
- Google OAuth
- Python 3.11+
- FastAPI
- SQLite
- OpenAI API
- Yelp Fusion API
- Node.js 18+
- Python 3.11+
- pip
- OpenAI API key
- Google OAuth credentials
- Yelp API key
- Clone the repository:
git clone https://github.com/yourusername/restaurant-assistant.git
cd restaurant-assistant- Create and Activate New Virtual Env
python3.12 -m venv venv
source venv/bin/activate # On Unix/MacOS
# or
.\venv\Scripts\activate # On Windows- Setup Backend:
cd backend
pip install -r requirements.txt- Create your .env file in the backend directory:
# backend/.env
touch .env- Add API keys inside .env file:
OPENAI_API_KEY=your_openai_key
GOOGLE_CLIENT_ID=your_google_client_id
YELP_API_KEY=your_yelp_api_key- Start Backend Server
uvicorn app.main:app --reload- In a new termial - Setup Frontend:
source venv/bin/activate # On Unix/MacOS
# or
.\venv\Scripts\activate # On Windows
cd frontend
npm install
npm run devThe application will be available at:
- Frontend: http://localhost:5173
- Backend: http://localhost:8000
- API Docs: http://localhost:8000/docs
- Google OAuth2 authentication
- CORS protection
POST /api/auth/google-login: Google OAuth login
POST /api/messages/stream: Stream chat messagesPUT /api/messages/{message_id}: Update messageDELETE /api/messages/{message_id}: Delete message
GET /api/messages/conversations: Get user conversationsPOST /api/messages/new-conversation: Create new conversationDELETE /api/messages/conversations/{conversation_id}: Delete conversation
GET /api/yelp/businesses/search: Search restaurantsGET /api/yelp/businesses/{business_id}: Get business details
Full API documentation is available at /docs when running the backend server.


