Skip to content

College Canteen Pre-Order & Token System for the Short Break (Flask + MySQL)

  • 12 slides
  • 14 viva questions
  • 6 modules
  • Code included

@college-canteen-preorder-token-systemUpdated Oct 2026

Pre-order snacks, get a token and a pickup slot, and let the counter work from a live queue screen

B.Sc, Computer Science · Sem 6 · Beginner · 14 weeks · Team of 2

More info
Level
Beginner · 14 weeks · Team of 2
Relevant for
Karnataka
Common at
BCU / Bangalore University, Mumbai University, Delhi University
Syllabus
BCU / Bangalore University SEP 2024 · Project Work · Semester 6
Tech stack
  • Python 3.11
  • Flask
  • Jinja2
  • MySQL 8
  • PyMySQL
  • HTML5
  • CSS3
  • JavaScript
  • pytest
For educational purposes only

Unlock this project

Full PPT + speaker notes, source code and setup steps, READMEFIRST, instructions and all 14 viva answers.

One-time. No subscription, no auto-renew, no drama.

Project packs

Credits never expire and work on any project. Use one here, save the rest for your friend who “will pay you back”.

  1. Pinned

    1 min

    Overview

    QuickBite is a pre-order and token system for a college canteen, built for the 15-minute short break when hundreds of students rush the counter at once. In most Bengaluru colleges the canteen staff take orders shouting across the counter, write bills on a pad and hand out food in no particular order; half the break is spent in the queue.

    With QuickBite, a student logs in on a phone before the break, picks items from the day's menu, chooses a pickup slot (for example 11:00–11:05) and gets a token number. Payment is made by scanning the canteen's UPI QR code as usual, and the student types the UPI transaction reference into the app so staff can match it; there is no payment gateway. In the kitchen, a queue screen on a cheap tablet or monitor shows orders grouped by slot, and staff mark each token Preparing, Ready and Collected. The canteen manager sets the daily menu and stock, and closes the day with a sales report.

    The project is a two-member team project using Python Flask, MySQL, HTML, CSS and JavaScript, applying Web Programming (DSCS61), DBMS (CS31T) and Python (DSCSC51) from the BCU SEP B.Sc CS syllabus. It is small enough to finish in a semester and real enough to demonstrate in your own college canteen.

    Syllabus alignment

    BCU / Bangalore University · SEP 2024

    Project Work · Semester 6 · 4 credits · 100 (80 external + 20 internal)

    Subjects this project applies
    • DSCS61 Web Programming
    • CS31T Database Management Systems
    • DSCSC51 Python Programming
    • Computer Networks (client-server basics)
    How it is evaluated

    See your department's project guidelines.

    Also fits: Mumbai University B.Sc IT 2022-23 (autonomous-college mirror), Delhi University UGCF 2022.

    1 min read · 14 viva questions

  2. 2 min

    Synopsis

    Abstract

    College canteens face a sharp peak of demand in short breaks, which leads to long queues, wrong orders and lost sales. QuickBite is a web application that lets students pre-order from the day's menu, receive a token and a pickup slot, and record their UPI payment reference, while canteen staff work from a live queue screen and the manager maintains menu, stock and daily sales reports. It is built with Flask, MySQL and plain HTML, CSS and JavaScript.

    Introduction

    A typical college canteen of a fictional institution, Sri Vidyaranya First Grade College, serves 300–500 snacks in a 15-minute break. Orders are taken verbally and bills are written by hand. Popular items run out without warning, and students wait only to be told that samosas are over. Staff have no idea how many plates of each item to prepare before the bell rings.

    Existing System

    • Orders shouted at the counter; no record of who ordered what.
    • Payment checked by glancing at a phone screen; disputes are common.
    • Stock known only when a tray is empty.
    • Daily sales totalled manually from a notebook.
    • Limitations: long queues, no advance demand information, no reliable sales data.

    Proposed System

    • Online pre-order with item-wise stock check before confirmation.
    • Pickup slots with a capacity limit so the kitchen is not overwhelmed.
    • Daily token numbers and a queue screen for staff.
    • UPI reference capture with a Verified flag set by staff.
    • Menu and stock management and a daily sales report.

    Feasibility

    • Technical: Flask and MySQL are free, run on any laptop and are covered in the syllabus. The college Wi-Fi or mobile data is enough for students to reach the app.
    • Economic: no licence or gateway fees; a spare desktop can host it on the campus network.
    • Operational: students already use phones for UPI; staff only tap buttons on the queue screen. Training takes under 15 minutes.
    • Schedule: the modules split cleanly between two members and fit a 14-week semester.
  3. 1 min

    Problem statement

    During the short break, a college canteen must take, bill and serve hundreds of orders in about fifteen minutes. Orders are taken verbally, payments are checked by glancing at a phone and stock is known only when a tray empties. As a result students spend most of the break in a queue, orders get mixed up, items run out after students have already waited, and staff cannot prepare in advance because they do not know demand. At the end of the day the canteen has no reliable record of what sold.

    The problem is to build a simple, low-cost web application that lets students pre-order before the break, assigns each order a token and a capacity-limited pickup slot, captures the UPI payment reference for verification, gives staff a live queue screen, and gives the canteen manager control over the daily menu, stock and sales reports.

  4. 1 min

    Objectives & scope

    1. 01Design a normalised MySQL database for students, menu items, daily stock, pickup slots, orders, order items and payments.
    2. 02Build a Flask web application with login for three roles: Student, Counter Staff and Canteen Manager.
    3. 03Allow students to pre-order only items in stock and only before the slot's cut-off time.
    4. 04Generate a daily token number per order and limit the number of orders per pickup slot.
    5. 05Provide a queue screen that refreshes automatically and lets staff move orders through Preparing, Ready and Collected.
    6. 06Capture the UPI transaction reference and let staff mark payment as verified.
    7. 07Generate a daily sales report by item and by slot.

    Scope

    In scope

    • One college canteen, one menu per day, pickup slots in the short break and lunch break.
    • Roles: Student, Counter Staff, Canteen Manager.
    • Pre-ordering, tokens, queue screen, UPI reference capture and verification, daily stock and sales report.
    • Works in a mobile browser on the campus network.

    Out of scope

    • Payment gateway integration or refunds through the app (refunds are handled at the counter).
    • Home delivery, multiple canteens, loyalty points.
    • Native Android or iOS apps.
  5. 1 min

    Methodology

    We follow the Waterfall model with a prototype step, which suits a small two-member team with fixed requirements and a semester deadline. A clickable HTML prototype is shown to the canteen manager in week 3 before coding begins.

    PhaseWeeksActivitiesOwner
    Requirement study1–2Observe the canteen in two breaks, interview the manager and staff, list requirementsBoth
    Design3–4ER diagram, DFD level 0/1, table design, HTML prototypeBoth
    Student module5–8Login, menu view, cart, slot selection, token, UPI referenceMember A
    Staff & manager module5–8Queue screen, status updates, menu/stock, sales reportMember B
    Integration9–10Merge modules, common layout, role checksBoth
    Testing11–12Unit tests (pytest), test-case tables, trial in one short breakBoth
    Report & viva prep13–14Report chapters, PPT, demo rehearsalBoth

    Testing plan: pytest unit tests for the token generator, slot-capacity check and stock decrement; manual black-box test cases for every screen; and a small trial with 15–20 classmates ordering in one break, noting problems in a feedback table.

  6. 2 min

    Architecture & tech stack

    • Python 3.11
    • Flask
    • Jinja2
    • MySQL 8
    • PyMySQL
    • HTML5
    • CSS3
    • JavaScript
    • pytest

    QuickBite uses a three-tier client–server architecture: browser pages (HTML/CSS/JavaScript rendered with Jinja2), a Flask application layer with blueprints for each role, and a MySQL database accessed through parameterised queries with PyMySQL.

    flowchart TD
      S["Student phone browser"] --> F["Flask app (blueprints: student, staff, manager)"]
      Q["Queue screen (auto-refresh)"] --> F
      M["Manager browser"] --> F
      F --> A["Login and role check"]
      A --> L["Business logic: stock, slot, token"]
      L --> DB[("MySQL 8")]
      F --> R["Sales report (CSV)"]

    ER diagram

    erDiagram
      USER ||--o{ ORDERS : "places"
      PICKUP_SLOT ||--o{ ORDERS : "is chosen for"
      ORDERS ||--|{ ORDER_ITEM : "contains"
      MENU_ITEM ||--o{ ORDER_ITEM : "appears in"
      MENU_ITEM ||--o{ DAILY_STOCK : "has"
      ORDERS ||--o| PAYMENT : "is paid by"
      USER {
        int id PK
        string regNo
        string name
        string role
        string passwordHash
      }
      MENU_ITEM {
        int id PK
        string name
        decimal price
        string category
      }
      DAILY_STOCK {
        int id PK
        int itemId FK
        date day
        int qtyAvailable
      }
      PICKUP_SLOT {
        int id PK
        time startTime
        time cutoffTime
        int capacity
      }
      ORDERS {
        int id PK
        int userId FK
        int slotId FK
        date day
        int tokenNo
        string status
      }
      ORDER_ITEM {
        int id PK
        int orderId FK
        int itemId FK
        int qty
        decimal unitPrice
      }
      PAYMENT {
        int id PK
        int orderId FK
        string upiRef
        decimal amount
        boolean verified
      }

    DFD level 0

    flowchart TD
      ST["Student"] -->|"order, UPI reference"| SYS["QuickBite system"]
      SYS -->|"token, status"| ST
      CS["Counter Staff"] -->|"status updates, verification"| SYS
      SYS -->|"queue by slot"| CS
      MG["Canteen Manager"] -->|"menu, stock, slots"| SYS
      SYS -->|"sales report"| MG

    Token logic: the token is the next number for that day, generated inside the same transaction that inserts the order, so two students never get the same token. unitPrice is copied into ORDER_ITEM so that a later price change does not alter old bills.

  7. 6 modules

    Modules

    • Member A — Student Login, Menu & Cart

      Member A builds student registration and login with hashed passwords, the mobile-friendly menu page that hides out-of-stock items, and a JavaScript cart that shows the running total before checkout.

    • Member A — Slot Booking, Token & UPI Reference

      Member A implements slot selection with cut-off and capacity checks, the transaction that decrements stock and generates the daily token, the order-status page, and the form where the student enters the 12-digit UPI transaction reference after paying.

    • Member B — Queue Screen & Order Status

      Member B builds the staff queue screen grouped by pickup slot, which refreshes every ten seconds with a small JavaScript fetch call, and the buttons that move a token through Preparing, Ready and Collected, plus the payment Verified tick.

    • Member B — Menu, Stock & Slots (Manager)

      Member B builds the manager screens to add or edit menu items and prices, set the quantity available for each item for the day, and define pickup slots with start time, cut-off time and capacity.

    • Member B — Daily Sales Report

      Member B writes the SQL queries and page for item-wise and slot-wise sales, unverified payments and cancelled orders for any date, with CSV download for the canteen's records.

    • Shared — Authentication, Layout & Testing

      Both members share the role-check decorator, the common base template and CSS, and the pytest suite; each member writes tests for the functions they own and demonstrates them in the viva.

  8. Locked

    Presentation

    12 slides with speaker notes. The outline below is free; the bullets, notes and the generated .pptx unlock with the project.

    1. QuickBite: Canteen Pre-Order & Token System
    2. The Short-Break Problem
    3. Problem Statement
    4. Proposed System
    5. Objectives
    6. Technology Used
    7. Architecture & Database
    8. Member A Modules
    9. Member B Modules
    10. Demo
    11. Testing
    12. Conclusion & Future Scope

    Bullets, speaker notes and the .pptx download unlock with the project.

    Presentation is locked: 12 slides, Speaker notes, .pptx download.

  9. 1 min

    Future scope

    • Payment gateway integration so payment status is confirmed automatically.
    • Waiting-time estimate from past slot data.
    • Demand prediction for each item using past sales to reduce leftovers.
    • Push or SMS notification when a token is ready.
    • Multi-canteen support for large campuses and hostel messes.
  10. 7 sources

    References

    1. Flask Documentation
    2. MySQL 8.0 Reference Manual
    3. MDN Web Docs — HTML, CSS and JavaScript
    4. OWASP Top 10 — Web Application Security Risks
    5. National Payments Corporation of India — UPI
    6. Miguel Grinberg, Flask Web Development, 2nd ed., O'Reilly
    7. Abraham Silberschatz, Henry F. Korth & S. Sudarshan, Database System Concepts, 7th ed., McGraw-Hill

    Cite this bundle

    OnlyProjects. (2026). College Canteen Pre-Order & Token System for the Short Break (Flask + MySQL): B.Sc Computer Science project bundle [Educational resource]. https://onlyprojects.online/projects/bsc-cs-college-canteen-preorder-token-system

Slides, diagrams & files

12 slides. Titles are free; bullets, speaker notes and the .pptx unlock with the project.

  1. SLIDE 1

    QuickBite: Canteen Pre-Order & Token System

  2. SLIDE 2

    The Short-Break Problem

  3. SLIDE 3

    Problem Statement

  4. SLIDE 4

    Proposed System

  5. SLIDE 5

    Objectives

  6. SLIDE 6

    Technology Used

  7. SLIDE 7

    Architecture & Database

  8. SLIDE 8

    Member A Modules

  9. SLIDE 9

    Member B Modules

  10. SLIDE 10

    Demo

  11. SLIDE 11

    Testing

  12. SLIDE 12

    Conclusion & Future Scope

Architecture diagrams · 3

1
flowchart TD
  S["Student phone browser"] --> F["Flask app (blueprints: student, staff, manager)"]
  Q["Queue screen (auto-refresh)"] --> F
  M["Manager browser"] --> F
  F --> A["Login and role check"]
  A --> L["Business logic: stock, slot, token"]
  L --> DB[("MySQL 8")]
  F --> R["Sales report (CSV)"]
2
erDiagram
  USER ||--o{ ORDERS : "places"
  PICKUP_SLOT ||--o{ ORDERS : "is chosen for"
  ORDERS ||--|{ ORDER_ITEM : "contains"
  MENU_ITEM ||--o{ ORDER_ITEM : "appears in"
  MENU_ITEM ||--o{ DAILY_STOCK : "has"
  ORDERS ||--o| PAYMENT : "is paid by"
  USER {
    int id PK
    string regNo
    string name
    string role
    string passwordHash
  }
  MENU_ITEM {
    int id PK
    string name
    decimal price
    string category
  }
  DAILY_STOCK {
    int id PK
    int itemId FK
    date day
    int qtyAvailable
  }
  PICKUP_SLOT {
    int id PK
    time startTime
    time cutoffTime
    int capacity
  }
  ORDERS {
    int id PK
    int userId FK
    int slotId FK
    date day
    int tokenNo
    string status
  }
  ORDER_ITEM {
    int id PK
    int orderId FK
    int itemId FK
    int qty
    decimal unitPrice
  }
  PAYMENT {
    int id PK
    int orderId FK
    string upiRef
    decimal amount
    boolean verified
  }
3
flowchart TD
  ST["Student"] -->|"order, UPI reference"| SYS["QuickBite system"]
  SYS -->|"token, status"| ST
  CS["Counter Staff"] -->|"status updates, verification"| SYS
  SYS -->|"queue by slot"| CS
  MG["Canteen Manager"] -->|"menu, stock, slots"| SYS
  SYS -->|"sales report"| MG

Files

Viva questions & answers

3 of 14 questions free. Explain each answer in your own words before you move on.

  1. Concept

    What is Flask and why did you choose it over Django?

    Flask is a lightweight Python web framework that gives routing, request handling and Jinja2 templates without forcing a structure. For a small canteen app with seven tables it was easier to learn and explain than Django, and it let us write our own SQL, which we studied in the DBMS paper.

  2. Concept

    What is a primary key and a foreign key? Give examples from your tables.

    A primary key uniquely identifies each row, such as id in ORDERS. A foreign key refers to the primary key of another table, such as slotId in ORDERS pointing to PICKUP_SLOT. Foreign keys stop us from creating an order for a slot that does not exist.

  3. Concept

    What is SQL injection and how does your app prevent it?

    SQL injection happens when user input is pasted into an SQL string so it changes the query, for example to log in without a password. We always use parameterised queries with PyMySQL placeholders, so the input is sent as data and never executed as SQL.

+11 more questions

They and the answers unlock with the project. Try answering the ones above yourself first. Your examiner will.

For educational purposes only. Use this bundle to understand how the project works, then build and write your own. Submitting it verbatim is between you, your conscience and your external examiner.