green-cafe-hub / app.py
Welly-code's picture
Update app.py
60d83ce verified
Raw
History Blame Contribute Delete
2.68 kB
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()