smartqueue-final/
├── ml-service/ ← Python Flask + GradientBoosting ML (port 8000)
├── backend/ ← Node.js + Express + MongoDB (port 5000)
└── frontend/ ← React.js (port 3000)
cd ml-service
pip install flask scikit-learn numpy pandas joblib
python app.pyModel auto-loads from model.pkl. Opens at http://localhost:8000
/predict-slots→ ML wait time for all 6 time slots/predict→ Single slot prediction/health→ Model accuracy stats (R²=0.9985, MAE=2.32 min)/model-report→ Full training report
cd backend
npm install
npm run devOpens at http://localhost:5000. Requires MongoDB running locally.
To make admin account: After registering, open MongoDB Compass:
db.users.updateOne({ email: "admin@gmail.com" }, { $set: { role: "admin" } })
cd frontend
npm install
npm startOpens at http://localhost:3000
| Feature | Implementation | File |
|---|---|---|
| Wait time prediction | GradientBoostingRegressor (n=200, R²=0.9985) | ml-service/train.py |
| Peak hour heatmap | 30-day booking aggregation → 5×6 matrix | backend/utils/helpers.js |
| AI visit suggestions | ML ranks all 6 slots by predicted wait | ml-service/app.py |
| Tribonacci priority | Dynamic priority score, grows with wait time | backend/utils/helpers.js |
| QR token | Unique tokenId per booking, scannable | backend/routes/bookings.js |
| QR scanner | html5-qrcode camera scanner | frontend/src/components/QRScanner.js |
| Nearby alternatives | MongoDB query same-category lower queue | backend/routes/businesses.js |
- Algorithm: GradientBoostingRegressor (scikit-learn)
- Training samples: 8000
- Features: slot_hour, day_of_week, queue_length, avg_service_time, is_peak_hour, bookings_30d_slot, elderly_frac
- MAE: 2.32 minutes
- R²: 0.9985
- CV R²: 0.9984