Skip to content

harpreet-2146/QueueLess

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

33 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ” QueueLess

Skip the Queue, Not the Food!

A smart college canteen ordering system that eliminates waiting in lines. Students order from their phones and receive WhatsApp notifications when their food is ready.

QueueLess Banner


๐ŸŽฏ Problem Statement

College canteen queues waste valuable time between classes. Students spend 15-20 minutes just waiting to order and collect food, leading to:

  • Missed class time
  • Crowded, chaotic canteens
  • Frustrated students and vendors
  • Inefficient order management

๐Ÿ’ก Solution

QueueLess digitizes the entire canteen ordering experience:

  1. Students browse stalls, add items to cart, and place orders from anywhere on campus
  2. Vendors receive orders on their dashboard and manage preparation status
  3. WhatsApp notifications alert students when their food is ready
  4. Token system ensures quick, organized pickup
  5. Live seat availability shows real-time canteen occupancy using computer vision

Result: No more standing in lines. Order from class, library, or anywhere. Just walk up and collect when notified!


โœจ Features

For Students (Customer Portal)

  • ๐Ÿช Browse all canteen stalls with ratings & wait times
  • ๐Ÿ“‹ View detailed menus with prices and availability
  • ๐Ÿ›’ Add items to cart with quantity management
  • ๐Ÿ“ฑ Enter WhatsApp number for notifications
  • ๐ŸŽซ Receive unique token number for pickup
  • ๐Ÿ“Š Real-time order status tracking
  • ๐Ÿช‘ Live seat availability - see how crowded the canteen is before going!

For Vendors (Vendor Portal)

  • ๐Ÿ“ฆ View all incoming orders in real-time
  • ๐Ÿ”„ Update order status (Pending โ†’ Preparing โ†’ Ready)
  • ๐Ÿ“ฑ One-click WhatsApp notification to customers
  • ๐Ÿ“ˆ Order statistics and pending count badges
  • โœ… Mark orders as completed after pickup

WhatsApp Integration

  • ๐Ÿ”” Automatic notifications when order is ready
  • ๐Ÿ“ Rich messages with token number and stall name
  • โœ… Real WhatsApp messages via TextMeBot API

๐Ÿช‘ Real-Time Seat Availability (NEW!)

  • ๐Ÿ“ท Uses phone camera as wireless IP camera
  • ๐Ÿค– YOLOv8 AI model detects people in real-time
  • ๐Ÿ“Š Shows occupied/available seats with color-coded status
  • ๐ŸŸข Green (<50%) | ๐ŸŸก Yellow (<80%) | ๐Ÿ”ด Red (>80%)
  • โšก Updates every 3 seconds on the frontend

๐Ÿ› ๏ธ Tech Stack

Frontend

Technology Purpose
React 18 UI library for building interactive interfaces
Vite Fast build tool and development server
React Router v6 Client-side routing and navigation
Tailwind CSS Utility-first CSS framework for styling
Lucide React Beautiful, consistent icon library
React Hot Toast Elegant toast notifications
Axios HTTP client for API requests

Backend

Technology Purpose
Node.js JavaScript runtime for server
Express.js Minimal web framework for API
CORS Cross-origin resource sharing
Axios HTTP client for WhatsApp API
dotenv Environment variable management

Camera Service (Seat Detection)

Technology Purpose
Python 3 Runtime for detection service
YOLOv8 AI model for person detection
OpenCV Video capture and image processing
Flask API server for seat count endpoint
IP Webcam (Android) Turns phone into wireless camera

External Services

Service Purpose
TextMeBot API WhatsApp message delivery

๐Ÿ“ Project Structure

queueless/
โ”œโ”€โ”€ frontend/
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Navbar.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ StallCard.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ MenuItem.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ OrderCard.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ StatusBadge.jsx
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ SeatAvailability.jsx   # NEW!
โ”‚   โ”‚   โ”œโ”€โ”€ pages/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ LandingPage.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Home.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ StallMenu.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Checkout.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ OrderStatus.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ VendorHome.jsx
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ VendorDashboard.jsx
โ”‚   โ”‚   โ”œโ”€โ”€ context/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ CartContext.jsx
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ OrderContext.jsx
โ”‚   โ”‚   โ”œโ”€โ”€ data/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ stalls.js
โ”‚   โ”‚   โ”œโ”€โ”€ utils/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ whatsapp.js
โ”‚   โ”‚   โ”œโ”€โ”€ App.jsx
โ”‚   โ”‚   โ””โ”€โ”€ main.jsx
โ”‚   โ””โ”€โ”€ package.json
โ”‚
โ”œโ”€โ”€ backend/
โ”‚   โ”œโ”€โ”€ server.js
โ”‚   โ”œโ”€โ”€ .env
โ”‚   โ””โ”€โ”€ package.json
โ”‚
โ””โ”€โ”€ camera-service/            # NEW!
    โ”œโ”€โ”€ detector.py            # YOLOv8 detection + Flask API
    โ”œโ”€โ”€ requirements.txt
    โ””โ”€โ”€ .env                   # Camera URL & capacity config

๐Ÿš€ Getting Started

Prerequisites

  • Node.js 18+ installed
  • Python 3.10+ installed
  • npm or yarn
  • WhatsApp account (for TextMeBot setup)
  • Android phone (for camera service)

1. Clone the repository

git clone https://github.com/yourusername/queueless.git
cd queueless

2. Setup Frontend

cd frontend
npm install
npm run dev

3. Setup Backend

cd backend
npm install

Create .env file:

PORT=5000
TEXTMEBOT_API_KEY=your_api_key_here

Start server:

npm run dev

4. Setup WhatsApp (TextMeBot)

  1. Go to textmebot.com
  2. Get your API key
  3. Connect your WhatsApp by scanning QR code
  4. Add API key to backend .env

5. Setup Camera Service (Seat Detection)

On your Android phone:

  1. Install IP Webcam app from Play Store
  2. Open app โ†’ Start Server
  3. Note the IP address shown (e.g., http://192.168.1.5:8080)

On your laptop:

cd camera-service
pip install -r requirements.txt

Create .env file:

CAMERA_URL=http://YOUR_PHONE_IP:8080/video
CANTEEN_CAPACITY=200

Start detector:

python detector.py

Note: Your laptop and phone must be on the same network (use phone hotspot for best results)


๐Ÿช‘ Seat Detection Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     WiFi/Hotspot      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Phone Camera  โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บ   โ”‚  Python Script  โ”‚
โ”‚   (IP Webcam)   โ”‚    Video Stream       โ”‚   (detector.py) โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                                   โ”‚
                                          YOLOv8 Detection
                                                   โ”‚
                                          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                                          โ”‚   Flask API     โ”‚
                                          โ”‚  localhost:5001 โ”‚
                                          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                                   โ”‚
                                          GET /api/seat-count
                                                   โ”‚
                                          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                                          โ”‚ React Frontend  โ”‚
                                          โ”‚ (polls every 3s)โ”‚
                                          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

API Response

{
  "count": 45,
  "capacity": 200,
  "available": 155,
  "occupancy_percent": 22.5
}

๐Ÿ“ฑ User Flow

Customer Journey

Landing Page โ†’ Select "I'm Hungry"
      โ†“
Browse Stalls โ†’ Check seat availability ๐Ÿช‘
      โ†“
View Menu โ†’ Add items to cart
      โ†“
Checkout โ†’ Enter name & WhatsApp number
      โ†“
Order Confirmed โ†’ Receive token number
      โ†“
Wait anywhere โ†’ Get WhatsApp when ready
      โ†“
Collect food โ†’ Show token at counter

Vendor Journey

Landing Page โ†’ Select "I'm a Vendor"
      โ†“
Select Your Stall โ†’ View dashboard
      โ†“
See Incoming Orders โ†’ Click "Start Preparing"
      โ†“
Food Ready โ†’ Click "Mark Ready & Notify"
      โ†“
WhatsApp sent to customer automatically
      โ†“
Customer collects โ†’ Mark as "Completed"

๐ŸŽจ Screenshots

Landing Page

Choose your role - Customer or Vendor

Customer - Browse Stalls

View all canteen stalls with ratings, wait times, and live seat availability

Customer - Menu & Cart

Add items, manage quantities, view cart total

Customer - Order Status

Track your order with token number

Vendor - Dashboard

Manage all orders, update status, send notifications


๐Ÿ”ฎ Future Enhancements

  • User authentication (student ID login)
  • Payment integration (UPI, cards)
  • Order history for customers
  • Analytics dashboard for vendors
  • Push notifications (PWA)
  • Menu management for vendors
  • Peak hour predictions
  • Multi-canteen support
  • Multiple camera support for larger canteens
  • Historical occupancy trends

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

๐Ÿ‘ฉโ€๐Ÿ’ป Author

Harpreet Kaur


๐Ÿ™ Acknowledgments

  • TextMeBot for WhatsApp API
  • Ultralytics for YOLOv8
  • Unsplash for food images
  • Lucide for beautiful icons
  • All the hungry college students who inspired this project!

Made with โค๏ธ and lots of โ˜•
Skip the Queue, Not the Food!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published