File size: 4,370 Bytes
499b5b5 dd7b4b2 499b5b5 dd7b4b2 499b5b5 dd7b4b2 4302692 dd7b4b2 4302692 dd7b4b2 4302692 ebc95e2 4302692 dd7b4b2 25d52df dd7b4b2 4302692 dd7b4b2 ebc95e2 dd7b4b2 25d52df dd7b4b2 4302692 dd7b4b2 4302692 dd7b4b2 ebc95e2 dd7b4b2 ebc95e2 dd7b4b2 4302692 dd7b4b2 499b5b5 df0e2a7 dd7b4b2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | 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 |