Nplcom / app.py
Jofax's picture
Update app.py
dd7b4b2 verified
import streamlit as st
import pandas as pd
from datetime import date
# 1. CORE CONFIG & STYLING
st.set_page_config(page_title="Sajha Pro 2026", page_icon="🇳🇵", layout="wide")
# 2. 2026 DATA ENGINE
npr_rate = 9.414 # Live Feb 2026
kurangi_deadline = date(2026, 4, 2)
site_deadline = date(2026, 6, 1)
# iBay Feb 2026 Rental Data
rentals = [
{"Title": "2BR Apartment (No Lift)", "Price": 16000, "Loc": "Machchangolhi", "ID": "6472479"},
{"Title": "1BR Apartment (AC)", "Price": 10500, "Loc": "Hulhumale P2", "ID": "6488093"},
{"Title": "Shared Room (Male)", "Price": 3500, "Loc": "Male City", "ID": "iBay-Shared"}
]
# 3. SIDEBAR NAVIGATION
with st.sidebar:
st.title("🇳🇵 Sajha Pro")
menu = st.radio("Updates", ["🏠 Dashboard", "🏢 Housing (iBay)", "🚌 Ramadan Transit", "⚖️ Legal & 100 Scenarios", "🏥 Health & Insurance", "🧾 Bill Splitter"])
st.markdown("---")
st.caption("Consular Support: +94 11-268-9656")
# --- 1. DASHBOARD ---
if menu == "🏠 Dashboard":
st.title("Sajha Connect Dashboard 🇲🇻")
st.write(f"Today: {date.today().strftime('%B %d, 2026')}")
c1, c2, c3 = st.columns(3)
c1.metric("MVR to NPR", f"{npr_rate}", "Live")
c2.metric("Kurangi Deadline", "Apr 2", f"{(kurangi_deadline - date.today()).days} Days")
c3.metric("Worksite Update", "June 1", "Employer Deadline")
st.error("🚨 **OPERATION KURANGI:** If you are undocumented, register before **April 2, 2026**. Biometrics are mandatory at the Ministry of Homeland Security.")
st.info("📢 **Consular News:** The Feb 9, 2026 camp at Kamana Maalam provided medical and passport aid to hundreds. Stay tuned for the next camp.")
# --- 2. HOUSING (iBay Integration) ---
elif menu == "🏢 Housing (iBay)":
st.header("🏠 Rental Finder (Feb 2026 Trends)")
cols = st.columns(2)
for i, r in enumerate(rentals):
with cols[i % 2]:
st.markdown(f"""
<div style="border:2px solid #e0e0e0; padding:20px; border-radius:15px; background:white; margin-bottom:15px;">
<h3 style="margin:0; color:#d32f2f;">{r['Title']}</h3>
<p><b>📍 {r['Loc']}</b> | <b>MVR {r['Price']:,}</b></p>
<small>Ref ID: {r['ID']} | Source: iBay.mv</small>
</div>
""", unsafe_allow_html=True)
# --- 3. RAMADAN TRANSIT ---
elif menu == "🚌 Ramadan Transit":
st.header("🚌 RTL Bus & Ferry Ramadan Schedule")
st.warning("⚠️ Peak Pause: Services halt during Iftar hours.")
transit = {
"Route": ["Male-Hulhumale Bus", "Male Internal Bus", "Hulhumale Internal", "Male-Airport Bus", "Hulhumale-Male Ferry"],
"Pause Window": ["5:00 PM - 7:00 PM", "6:00 PM - 9:00 PM", "5:15 PM - 7:15 PM", "5:00 PM - 6:40 PM", "STOPS after 3:00 PM"]
}
st.table(pd.DataFrame(transit))
# --- 4. LEGAL & 100 SCENARIOS ---
elif menu == "⚖️ Legal & 100 Scenarios":
st.header("⚖️ 100 Community Scenarios")
with st.expander("Is there a ban on Nepali cashiers?"):
st.write("Yes. Starting **Feb 5, 2027**, only Maldivians can work as cashiers. We recommend technical skill training now.")
with st.expander("What happens if my employer doesn't update my Worksite by June 1?"):
st.write("The employer's quota will be suspended, which may affect your work permit renewal.")
# --- 5. HEALTH & INSURANCE ---
elif menu == "🏥 Health & Insurance":
st.header("🏥 Expat Health Benefits 2026")
st.markdown("""
| Benefit Type | Coverage Limit |
| :--- | :--- |
| **Inpatient (Hospital stay)** | MVR 100,000 |
| **Outpatient (Consultation/Meds)** | MVR 2,000 |
| **Repatriation (Death)** | MVR 100,000 |
""")
st.info("🏥 Top Hospitals: IGMH (Public), ADK (Private), Hulhumale Hospital.")
# --- 6. BILL SPLITTER ---
elif menu == "🧾 Bill Splitter":
st.header("🧾 Shared Expense Splitter")
colA, colB = st.columns(2)
with colA:
rent = st.number_input("Rent (MVR)", value=12000)
elec = st.number_input("STELCO (Electricity)", value=1200)
with colB:
water = st.number_input("MWSC (Water)", value=400)
heads = st.number_input("Number of People", min_value=1, value=4)
st.success(f"### Total per person: MVR {(rent + elec + water) / heads:,.2f}")
if __name__ == "__main__":
pass