import gradio as gr from datetime import datetime # ---------------- FAKE DATA ---------------- users = { "You": {"pin": "1234", "balance": 8000.0}, "Maria": {"pin": "1111", "balance": 3500.0}, "John": {"pin": "2222", "balance": 2000.0} } history = [] session = {"user": None} # ---------------- FUNCTIONS ---------------- def login(user, pin): if user in users and users[user]["pin"] == pin: session["user"] = user return f"Welcome {user}", dashboard() return "Invalid login", "" def dashboard(): u = session["user"] if not u: return "Not logged in" return f""" 💳 Wallet Dashboard 👤 User: {u} 💰 Balance: ₱{users[u]['balance']:,.2f} """ def add_money(amount): u = session["user"] try: amount = float(amount) except: return dashboard(), "Invalid amount", "\n".join(history) users[u]["balance"] += amount history.insert(0, f"{datetime.now().strftime('%H:%M')} - +₱{amount} added") return dashboard(), "Money added successfully", "\n".join(history) def send_money(receiver, amount): sender = session["user"] if receiver not in users: return dashboard(), "User not found", "\n".join(history) try: amount = float(amount) except: return dashboard(), "Invalid amount", "\n".join(history) if users[sender]["balance"] < amount: return dashboard(), "Insufficient balance", "\n".join(history) users[sender]["balance"] -= amount users[receiver]["balance"] += amount history.insert( 0, f"{datetime.now().strftime('%H:%M')} - {sender} sent ₱{amount} to {receiver}" ) return dashboard(), "Transfer successful", "\n".join(history) # ---------------- UI STYLE ---------------- css = """ body { background-color: #0b1220; color: white; font-family: Arial; } .gr-button { background: #00c2a8 !important; color: white !important; border-radius: 10px !important; font-weight: bold; } .gr-textbox, .gr-dropdown { border-radius: 10px !important; } """ # ---------------- APP ---------------- with gr.Blocks(css=css, title="Fintech Wallet Demo") as app: gr.Markdown("# 💳 Fintech Wallet App (Demo Only)") gr.Markdown("⚠️ Educational project — no real banking system") # LOGIN gr.Markdown("## 🔐 Login") user = gr.Dropdown(list(users.keys()), label="User") pin = gr.Textbox(label="PIN", type="password") login_btn = gr.Button("Login") login_out = gr.Textbox() dashboard_box = gr.Textbox(label="Dashboard") login_btn.click(login, [user, pin], [login_out, dashboard_box]) # SEND MONEY gr.Markdown("## 💸 Send Money") receiver = gr.Dropdown(list(users.keys()), label="Receiver") send_amount = gr.Number(label="Amount") send_btn = gr.Button("Send") send_out = gr.Textbox() send_btn.click(send_money, [receiver, send_amount], [dashboard_box, send_out, gr.Textbox()]) # ADD MONEY gr.Markdown("## ➕ Add Money") add_amount = gr.Number(label="Amount") add_btn = gr.Button("Add Funds") add_out = gr.Textbox() add_btn.click(add_money, add_amount, [dashboard_box, add_out, gr.Textbox()]) # HISTORY gr.Markdown("## 📜 Transaction History") history_box = gr.Textbox(lines=12) app.launch()