"""Financial Analysis Dashboard - Main Application.""" import streamlit as st from dotenv import load_dotenv import os from styles import DARK_THEME_CSS from data import ( load_stock_data, load_company_profile, load_income_statement, calculate_technical_indicators, get_price_metrics, ) from charts import ( create_price_chart, create_rsi_chart, create_financial_chart, ) from ui import ( display_price_metrics, display_company_info, display_financial_metrics, display_income_statement, display_profitability_metrics, ) # ---- Configuration ---- load_dotenv() token = os.getenv("TOKEN") st.set_page_config( page_title="Financial Dashboard", page_icon="📈", layout="wide", initial_sidebar_state="expanded", menu_items={ "About": "A professional financial analysis dashboard with technical indicators" } ) # ---- Apply Dark Theme ---- st.markdown(DARK_THEME_CSS, unsafe_allow_html=True) # ---- Header ---- st.markdown("# 📈 Financial Analysis Dashboard") st.markdown("Real-time technical analysis with multiple indicators") # ---- Sidebar Configuration ---- with st.sidebar: st.markdown("## ⚙️ Settings") symbol = st.text_input("Stock Ticker", "AAPL", help="Enter a valid stock ticker symbol").upper() period = st.slider("Indicator Period", 5, 50, 20, help="Period for SMA, EMA, and RSI calculations") st.markdown("---") st.markdown("### About") st.info("This dashboard provides real-time technical analysis with comprehensive financial metrics.") def main(): """Main application logic.""" if st.button("�� Load Dashboard", key="load_btn", use_container_width=True): try: # Load data with st.spinner("Loading data..."): df = load_stock_data(symbol) profile_info = load_company_profile(symbol) income_stmt = load_income_statement(symbol) # Calculate technical indicators df = calculate_technical_indicators(df, period) # Display price metrics metrics = get_price_metrics(df) display_price_metrics(metrics) # Display company information display_company_info(profile_info) # Display financial metrics if not income_stmt.empty: display_financial_metrics(income_stmt) # Financial history chart st.markdown('