""" FocusTrack - Streamlit Dashboard Entry Point Run with: streamlit run app.py """ import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).parent)) import streamlit as st from ui_utils import DARK_CSS, LIGHT_CSS, get_db # ─── Page Config (must be first Streamlit call) ─────────────────────────────── st.set_page_config( page_title="FocusTrack", page_icon="🎯", layout="wide", initial_sidebar_state="expanded", ) # ─── Theme ──────────────────────────────────────────────────────────────────── db = get_db() theme = db.get_setting("theme", "dark") st.markdown(DARK_CSS if theme == "dark" else LIGHT_CSS, unsafe_allow_html=True) # ─── Sidebar ────────────────────────────────────────────────────────────────── with st.sidebar: # Logo st.markdown("""
🎯
FocusTrack
Productivity Tracker
""", unsafe_allow_html=True) # Navigation nav_items = { "🏠 Live Dashboard": "dashboard", "📊 Analytics": "analytics", "📋 Activity Log": "activity_log", "⚙️ Settings": "settings", } if "page" not in st.session_state: st.session_state.page = "dashboard" for label, key in nav_items.items(): is_active = st.session_state.page == key if st.button( label, key=f"nav_{key}", use_container_width=True, ): st.session_state.page = key st.rerun() # Tracker status badge st.markdown("
", unsafe_allow_html=True) tracker_status = db.get_setting("tracker_running", "true") status_map = { "true": ("● Tracking", "#10b981"), "paused": ("● Paused", "#f59e0b"), "false": ("● Stopped", "#f43f5e"), } s_label, s_color = status_map.get(tracker_status, ("● Unknown", "#6366f1")) st.markdown( f"
{s_label}
", unsafe_allow_html=True, ) # Privacy badge in sidebar st.markdown("""
🔒 100% private
All data stays on your device
""", unsafe_allow_html=True) # ─── Main Content ───────────────────────────────────────────────────────────── page = st.session_state.get("page", "dashboard") if page == "dashboard": from ui_pages.dashboard import render render() elif page == "analytics": from ui_pages.analytics import render render() elif page == "activity_log": from ui_pages.activity_log import render render() elif page == "settings": from ui_pages.settings import render render()