CanteenHub - Multi-User Collaborative Canteen & Food Ordering System

A zero-framework PHP application built to replace informal Mattermost/chat lunch ordering threads. Anyone on the team can log in, start a food session, join any colleague's session, and place their own orders with automatic bill calculation upon food arrival.


Key Features

  1. User Authentication (Zero Framework):

    • Login (/login) & Register (/register) with secure password hashing (password_hash()).
    • Pre-seeded test accounts (Password: password):
      • dea (Dea - Coordinator)
      • alex (Alex Turner)
      • sarah (Sarah Jenkins)
      • budi (Budi Santoso)
      • michael (Michael Chen)
    • 1-click Quick Demo Account switcher on login page.
  2. Session Creation by Anyone:

    • Any team member can click " Start a Food Session" to coordinate canteen lunch, boba/coffee runs, or snack orders.
    • Hosts paste today's menu choices directly from chat (no prices needed upfront).
  3. Self-Ordering from Any Session:

    • Logged-in colleagues browse all active sessions on the dashboard.
    • Multi-Select Interactive Menu: Click multiple items, adjust quantities (+ / -), and add specific notes ("no spicy", "extra egg").
    • The app automatically assigns the order to the authenticated coworker.
  4. Grouped Canteen Placement & Bill Settlement:

    • 1-Click "Copy Canteen Text" aggregates quantities into a formatted WhatsApp/chat message.
    • When food arrives with the receipt, the host enters the final prices per item.
    • The app automatically computes every coworker's personal bill!
    • 1-Click "Copy Mattermost Breakdown" generates a ready-to-paste markdown table tagging @coworker with their exact individual bill and payment status (Unpaid / Paid).

How to Run

Option 1: PHP Built-in Server (php -S)

php -S localhost:8000 -t public

Visit: http://localhost:8000


Option 2: Docker Compose

docker compose up -d --build

Visit: http://localhost:8080

To stop:

docker compose down

Option 3: Apache

Point your Apache VirtualHost DocumentRoot to public/ directory (rewrites handled by public/.htaccess).

S
Description
No description provided
Readme
84 KiB
Languages
PHP 92.9%
CSS 6.6%
Dockerfile 0.5%