""" Shannon Equation for Dummies — Streamlit Application Main entry point with sidebar navigation. Designed for containerized deployment (Docker), multi-user, 24/7 operation. Run with: streamlit run app.py --server.port 8080 --server.address 0.0.0.0 """ import streamlit as st # ────────────────────────────────────────────────────────────────────────────── # Page Configuration (must be first Streamlit call) # ────────────────────────────────────────────────────────────────────────────── st.set_page_config( page_title="Shannon's Equation for Dummies", page_icon="📡", layout="wide", initial_sidebar_state="expanded", ) # ────────────────────────────────────────────────────────────────────────────── # Custom CSS for a modern, clean look # ────────────────────────────────────────────────────────────────────────────── st.markdown(""" """, unsafe_allow_html=True) # ────────────────────────────────────────────────────────────────────────────── # Sidebar Navigation # ────────────────────────────────────────────────────────────────────────────── with st.sidebar: st.markdown("## 📡 Shannon for Dummies") st.caption("Educational Application — AP Feb 2021") st.divider() page = st.radio( "Navigation", options=["animation", "orbits", "sat_types", "theory", "real_world", "contributions"], format_func=lambda x: { "animation": "📡 Satellite Link Animation", "orbits": "🌍 GEO / MEO / LEO Orbits", "sat_types": "🛰️ Satellite Missions & Types", "theory": "🧮 Theoretical Exploration", "real_world": "🛰️ Real World Link Budget", "contributions": "💬 Community Contributions", }[x], label_visibility="collapsed", ) st.divider() st.markdown( "**About**\n\n" "Exploration from Claude Shannon's initial theory " "to its practical application to satellite communications.\n\n" "Built with [Streamlit](https://streamlit.io) · " "[Plotly](https://plotly.com)" ) st.caption("© 2021-2026 · Shannon Equation for Dummies") # ────────────────────────────────────────────────────────────────────────────── # Page Routing # ────────────────────────────────────────────────────────────────────────────── if page == "animation": from views.satellite_animation import render render() elif page == "orbits": from views.orbits_animation import render render() elif page == "sat_types": from views.satellite_types import render render() elif page == "theory": from views.theory import render render() elif page == "real_world": from views.real_world import render render() elif page == "contributions": from views.contributions import render render()