Spaces:
Running
Running
| import streamlit as st | |
| import pandas as pd | |
| from supabase import create_client, Client | |
| # --- CONFIGURATION (Your Specific IDs) --- | |
| URL = "https://eoazyzszahatchuxxnui.supabase.co" | |
| KEY = st.secrets["SUPABASE_KEY"] # Read from HF secrets | |
| supabase: Client = create_client(URL, KEY) | |
| st.set_page_config(page_title="Green Cafe Hub", layout="wide") | |
| st.title("β Green Cafe | Waiter Command Center") | |
| if 'waiter_name' not in st.session_state: | |
| st.session_state.waiter_name = "" | |
| with st.sidebar: | |
| st.header("Waiter Login") | |
| st.session_state.waiter_name = st.text_input("Enter Your Name", value=st.session_state.waiter_name) | |
| if not st.session_state.waiter_name: | |
| st.warning("Please enter your name to claim orders.") | |
| def update_order(order_id, new_status, waiter=None): | |
| data = {"status": new_status} | |
| if waiter: | |
| data["assigned_waiter"] = waiter | |
| supabase.table("orders").update(data).eq("id", order_id).execute() | |
| # --- KANBAN BOARD --- | |
| cols = st.columns(3) | |
| statuses = [("pending", "π New Orders"), ("preparing", "π₯ Preparing"), ("ready", "π Ready to Serve")] | |
| for i, (stat, label) in enumerate(statuses): | |
| with cols[i]: | |
| st.subheader(label) | |
| res = supabase.table("orders").select("*").eq("status", stat).order("created_at").execute() | |
| orders = res.data | |
| for order in orders: | |
| with st.container(border=True): | |
| st.write(f"**Table {order['table_number']}** | {order['customer_name']}") | |
| st.write(f"π± {order['customer_phone']}") | |
| st.write(f"π {order['items']}") | |
| if order.get('assigned_waiter'): | |
| st.caption(f"π€ Assigned to: {order['assigned_waiter']}") | |
| if stat == "pending" and not order.get('assigned_waiter'): | |
| if st.button(f"Claim Order", key=f"claim_{order['id']}"): | |
| if st.session_state.waiter_name: | |
| update_order(order['id'], "preparing", st.session_state.waiter_name) | |
| st.rerun() | |
| else: | |
| st.sidebar.error("β οΈ Enter your name in the sidebar first!") | |
| if stat == "preparing": | |
| if st.button("Mark Ready β ", key=f"ready_{order['id']}"): | |
| update_order(order['id'], "ready") | |
| st.rerun() | |
| if stat == "ready": | |
| if st.button("Delivered π", key=f"done_{order['id']}"): | |
| update_order(order['id'], "delivered") | |
| st.rerun() |