Files
canteenhub/README.md
T

61 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`)
```bash
php -S localhost:8000 -t public
```
Visit: `http://localhost:8000`
---
### Option 2: Docker Compose
```bash
docker compose up -d --build
```
Visit: `http://localhost:8080`
To stop:
```bash
docker compose down
```
---
### Option 3: Apache
Point your Apache VirtualHost `DocumentRoot` to `public/` directory (rewrites handled by [`public/.htaccess`](file:///home/supanadit/Workspaces/Scalar/PHP/order-system/public/.htaccess)).