A coffee shop directory that matches users with coffee shops based on their preferences and lifestyle.
BrewMatch is an innovative coffee shop directory that takes the stress out of choosing the perfect coffee spot. By combining quiz-based user preferences and interactive features, BrewMatch suggests coffee shops that align with users' preferences for ambiance, food, accessibility, and more.
The platform leverages advanced technologies such as Google APIs and geolocation services to create a personalized experience for every user. Whether you're looking for a cozy café to study, a vibrant spot to hang out with friends, or just the best coffee in town, BrewMatch has you covered.
- Node.js (v14 or higher)
- Python 3.8+
- MongoDB
- Firebase account
- Google Cloud Platform account
- Outscraper account
- Create a new project in Google Cloud Console
- Enable the following APIs:
- Places API
- Maps JavaScript API
- Geocoding API
- Create API credentials (API key) with the following restrictions:
- Application restrictions: HTTP referrers (websites)
- API restrictions: Places API, Maps JavaScript API, Geocoding API
- Create a new Firebase project
- Enable Authentication with email/password and anonymous sign-in
- Create a Firestore database
- Create a Realtime Database
- Get your Firebase configuration object from Project Settings > General > Your apps > Web app
- Create an Outscraper account
- Generate an API key from your dashboard
- Create a MongoDB Atlas account
- Create a new cluster
- Create a database user
- Get your connection string
- Whitelist your IP address
Create a .env file in the root directory:
MONGO_URI=your_mongodb_connection_string
GOOGLE_PLACES_API_KEY=your_google_places_api_key
OUTSCRAPER_API_KEY=your_outscraper_api_key
Create a config.js file in the config folder:
const config = {
firebase: {
apiKey: "your_firebase_api_key",
authDomain: "your_project.firebaseapp.com",
projectId: "your_project_id",
storageBucket: "your_project.firebasestorage.app",
messagingSenderId: "your_messaging_sender_id",
appId: "your_app_id",
measurementId: "your_measurement_id",
databaseURL: "your_database_url", //Your Firebase Realtime Database URL
},
googlePlaces: {
apiKey: "your_google_places_api_key",
},
outscraper: {
apiKey: "your_outscraper_api_key",
},
};
export default config;# Create and activate virtual environment from root folder
python -m venv venv
source venv/bin/activate # On Mac/Linux
venv\Scripts\activate # On Windows
# Install dependencies
pip install fastapi uvicorn pydantic pymongo python-dotenv
# Navigate to backend folder
cd backend
# Start the backend server
uvicorn main:app --reloadImportant Notes:
- You must run the server from inside the backend folder
- The server will run on http://127.0.0.1:8000
- The generated coffee_shops.csv file will be created in the root directory
- Keep the server running while using the quiz feature
- Install the "Live Server" extension in VS Code through the Extensions Marketplace
- Configure Live Server settings:
- Press Ctrl+Shift+P (Windows) or Cmd+Shift+P (Mac) to open the Command Palette
- Type "settings.json" and select "Preferences: Open User Settings (JSON)"
- Add:
"liveServer.settings.ignoreFiles": [".vscode/**", "**/coffee_shops.csv"]- Email/password authentication
- Anonymous sign-in
- User profile management
- Session management
- Real-time collaboration
- Whiteboard functionality
- Chat system
- Room management
- Interactive map interface
- Real-time popularity data
- Advanced filtering
- Detailed coffee shop profiles
Before using the quiz:
- Start the backend server first:
# Navigate to backend folder
cd backend
# Activate virtual environment
# Windows:
venv\Scripts\activate
# Mac/Linux:
source venv/bin/activate
# Start server
uvicorn main:app --reload- Wait for the server to generate the
coffee_shops.csvfile - Ensure MongoDB is connected
- Then start the frontend server and use the quiz
-
Location Services:
- Requires browser location access
- Finds coffee shops within 1.5km of your location
-
Data Collection:
- Backend server collects coffee shop data from Google Places API
- Stores data in MongoDB
- Generates
coffee_shops.csvfor recommendation system
-
Quiz Flow:
- Collects user preferences:
- Price range
- Atmosphere preferences
- Food importance
- Timing preferences
- Accessibility needs
- Matches preferences with local coffee shops
- Provides personalized recommendations
- Collects user preferences:
