Spaces:
Sleeping
Sleeping
| 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() |