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()