An intelligent, group‑centric restaurant recommender that helps friends to find the best compromise when choosing where to eat. GrubSync collects each member’s cuisine preferences, dietary restrictions, budget, and real‑time location, then processes those events at scale with Redis Streams, Dask, and MongoDB to surface curated dining options.
User Authentication: Sign up, log in, JWT‑based sessions
Group Management: Create groups, invite codes, join by code
Preference Collection: Submit/update cuisines, dietary restrictions, budget
Real‑Time Pipeline: Redis Streams → Streamz + Dask → low‑latency serving
Batch Analytics & ML: Nightly Dask job trains a ranking model on full history
Responsive UI: React + Vite frontend styled with Tailwind CSS
Frontend: React (Vite), TypeScript, Tailwind CSS
Backend: Node.js + Express, MongoDB via Mongoose
Event Broker: Redis Streams
Streaming & Batch Compute: Dask Distributed, Streamz, Pandas
ML & Analytics: scikit‑learn, Dask DataFrame
Orchestration: cron or Airflow/Prefect for nightly jobs
Dev Tools: Docker Compose, ESLint, Prettier
Check out the demo video of GrubSync in action:
Docker & Docker Compose
Node.js ≥ 16.x & npm
Python 3.8+ & pip
MongoDB instance (local or Atlas)
Redis instance (local or managed)
Create a docker-compose.yml in the repo root:
docker-compose up -d
-
Clone the Repository
git clone https://github.com/siri1404/GrubSync-BigData.git cd GrubSync-BigData -
Configure Environment
Update the following variables in the.envfile:MONGODB_URI=mongodb+srv://<user>:<pass>@cluster0.mongodb.net/grubsync?retryWrites=true&w=majority JWT_SECRET=your_jwt_secret REDIS_URL=redis://localhost:6379 DASK_SCHEDULER=tcp://localhost:8786 YELP_API_KEY=your_yelp_api_key GOOGLE_API_KEY=your_google_maps_key # Server PORT=3001 # Batch training output MODEL_OUTPUT=./models
-
Install Dependencies
Install dependencies for both the backend and frontend:npm install
Install Python dependencies for the pipeline:
pip install -r requirements.txt
-
Running Services
-
Backend API
Start the backend server:cd server npm run devThe backend will be available at: http://localhost:3001
-
Frontend App
Start the frontend application:cd src npm run devThe frontend will be available at: http://localhost:5173
-