From 926f6791ed2d539a4114c5c62a2bd43b0e281f7b Mon Sep 17 00:00:00 2001 From: Anjali Date: Sat, 25 Oct 2025 23:34:42 +0530 Subject: [PATCH 1/3] Fix: Fix side bar brightness mode problem --- app.py | 192 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) diff --git a/app.py b/app.py index f25c1f1..5c969cd 100644 --- a/app.py +++ b/app.py @@ -6775,6 +6775,38 @@ def update_progress(progress, message=""): .main, .stApp { background: #181f2f; } + + /* Sidebar dark mode styling */ + .stSidebar { + background: #232a3d !important; + color: #f8fafc !important; + } + + .stSidebar .stMarkdown { + color: #f8fafc !important; + } + + .stSidebar label { + color: #f8fafc !important; + } + + .stSidebar .stExpander { + background: #232a3d !important; + border: 1px solid #324a7c !important; + } + + .stSidebar .stCheckbox label { + color: #f8fafc !important; + } + + .stSidebar .stRadio label { + color: #f8fafc !important; + } + + .stSidebar .stSelectbox label { + color: #f8fafc !important; + } + .metric-container, .prediction-card, .ensemble-card, .feature-card, .model-info, .ensemble-method, .method-comparison { background: #232a3d; border-radius: 16px; @@ -6839,6 +6871,166 @@ def update_progress(progress, message=""): .main, .stApp { background: #f4f8ff; } + + /* Sidebar light mode styling */ + .stSidebar { + background: #ffffff !important; + color: #232a3d !important; + } + + .stSidebar .stMarkdown { + color: #232a3d !important; + } + + .stSidebar label { + color: #232a3d !important; + } + + .stSidebar .stExpander { + background: #ffffff !important; + border: 1px solid #b3c7f7 !important; + } + + .stSidebar .stCheckbox label { + color: #232a3d !important; + } + + .stSidebar .stRadio label { + color: #232a3d !important; + } + + .stSidebar .stSelectbox label { + color: #232a3d !important; + } + + /* Additional sidebar elements for light mode */ + .stSidebar .stText { + color: #232a3d !important; + } + + .stSidebar .stMetric { + color: #232a3d !important; + } + + .stSidebar .stSelectbox > div > div { + background: #ffffff !important; + color: #232a3d !important; + border: 1px solid #b3c7f7 !important; + } + + .stSidebar .stSelectbox > div > div > div { + background: #ffffff !important; + color: #232a3d !important; + } + + .stSidebar .stCheckbox > div > label { + color: #232a3d !important; + } + + .stSidebar .stRadio > div > label { + color: #232a3d !important; + } + + .stSidebar .stNumberInput label { + color: #232a3d !important; + } + + .stSidebar .stSlider label { + color: #232a3d !important; + } + + .stSidebar .stProgress label { + color: #232a3d !important; + } + + .stSidebar .stInfo { + color: #232a3d !important; + } + + .stSidebar .stSuccess { + color: #232a3d !important; + } + + .stSidebar .stWarning { + color: #232a3d !important; + } + + .stSidebar .stError { + color: #232a3d !important; + } + + /* Force sidebar text visibility in light mode */ + .stSidebar * { + color: #232a3d !important; + } + + .stSidebar div { + color: #232a3d !important; + } + + .stSidebar span { + color: #232a3d !important; + } + + .stSidebar p { + color: #232a3d !important; + } + + .stSidebar h1, .stSidebar h2, .stSidebar h3, .stSidebar h4, .stSidebar h5, .stSidebar h6 { + color: #232a3d !important; + } + + /* Specific targeting for Streamlit components */ + .stSidebar [data-testid="stCheckbox"] label { + color: #232a3d !important; + } + + .stSidebar [data-testid="stRadio"] label { + color: #232a3d !important; + } + + .stSidebar [data-testid="stSelectbox"] label { + color: #232a3d !important; + } + + .stSidebar [data-testid="stExpander"] label { + color: #232a3d !important; + } + + .stSidebar [data-testid="stText"] { + color: #232a3d !important; + } + + .stSidebar [data-testid="stMetric"] { + color: #232a3d !important; + } + + /* Override any inherited light colors */ + .stSidebar .stMarkdown p { + color: #232a3d !important; + } + + .stSidebar .stMarkdown div { + color: #232a3d !important; + } + + .stSidebar .stMarkdown span { + color: #232a3d !important; + } + + /* Ensure form elements are visible */ + .stSidebar .stForm label { + color: #232a3d !important; + } + + .stSidebar .stForm div { + color: #232a3d !important; + } + + .stSidebar .stForm span { + color: #232a3d !important; + } + .metric-container, .prediction-card, .ensemble-card, .feature-card, .model-info, .ensemble-method, .method-comparison { background: #e3eafc; border-radius: 16px; From 48566e05c09df8e38394dc0dc45109f5a7dab8d1 Mon Sep 17 00:00:00 2001 From: Anjali Date: Sun, 26 Oct 2025 04:35:33 +0530 Subject: [PATCH 2/3] Fix:Fix side bar content invisibility --- app.py | 124 +++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 104 insertions(+), 20 deletions(-) diff --git a/app.py b/app.py index 5c969cd..c900f83 100644 --- a/app.py +++ b/app.py @@ -148,6 +148,52 @@ def navigate_to(page_name): --hover-glow: rgba(0, 212, 170, 0.3); } + /* Improved font styling */ + body, .stApp, .main { + font-family: 'Inter', 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif !important; + font-weight: 400 !important; + line-height: 1.6 !important; + letter-spacing: 0.01em !important; + } + + h1, h2, h3, h4, h5, h6 { + font-family: 'Inter', 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif !important; + font-weight: 600 !important; + line-height: 1.3 !important; + letter-spacing: -0.02em !important; + } + + .stMarkdown h1 { + font-size: 2.5rem !important; + font-weight: 700 !important; + margin-bottom: 1rem !important; + } + + .stMarkdown h2 { + font-size: 2rem !important; + font-weight: 600 !important; + margin-bottom: 0.8rem !important; + } + + .stMarkdown h3 { + font-size: 1.5rem !important; + font-weight: 600 !important; + margin-bottom: 0.6rem !important; + } + + .stMarkdown p { + font-size: 1rem !important; + line-height: 1.7 !important; + margin-bottom: 1rem !important; + } + + .stButton > button { + font-family: 'Inter', 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif !important; + font-weight: 500 !important; + font-size: 0.95rem !important; + letter-spacing: 0.02em !important; + } + /* Dark theme overrides */ @media (prefers-color-scheme: dark) { :root { @@ -735,29 +781,29 @@ def show_home_page(): """, unsafe_allow_html=True) # Quick Action Buttons - st.markdown("### 🚀 Quick Actions") + st.markdown("### Quick Actions") col_btn1, col_btn2, col_btn3, col_btn4 = st.columns(4) with col_btn1: - if st.button("🔍 Start Analysis", type="primary", use_container_width=True, help="Analyze SMS messages for threats"): + if st.button("Start Analysis", type="primary", use_container_width=True, help="Analyze SMS messages for threats"): navigate_to('analyzer') with col_btn2: - if st.button("📊 Analytics", use_container_width=True, help="View performance metrics"): + if st.button("Analytics", use_container_width=True, help="View performance metrics"): navigate_to('analytics') with col_btn3: - if st.button("⚡ Features", use_container_width=True, help="Explore all features"): + if st.button("Features", use_container_width=True, help="Explore all features"): navigate_to('features') with col_btn4: - if st.button("â„šī¸ About", use_container_width=True, help="Learn more about Spamlyser"): + if st.button("About", use_container_width=True, help="Learn more about Spamlyser"): navigate_to('about') st.markdown("---") # Feature Showcase - st.markdown("### 🌟 Why Choose Spamlyser Pro?") + st.markdown("### Why Choose Spamlyser Pro?") col1, col2 = st.columns(2) @@ -770,7 +816,7 @@ def show_home_page(): margin-bottom: 20px; box-shadow: 0 5px 15px rgba(255, 154, 158, 0.3); "> -

🤖 AI-Powered Detection

+

AI-Powered Detection

Uses state-of-the-art transformer models including BERT, RoBERTa, DistilBERT, and ALBERT for maximum accuracy in threat detection. @@ -786,7 +832,7 @@ def show_home_page(): margin-bottom: 20px; box-shadow: 0 5px 15px rgba(168, 237, 234, 0.3); "> -

⚡ Real-Time Analysis

+

Real-Time Analysis

Get instant results with lightning-fast processing. Analyze SMS messages in milliseconds with our optimized AI pipeline. @@ -819,7 +865,7 @@ def show_home_page(): margin-bottom: 20px; box-shadow: 0 5px 15px rgba(210, 153, 194, 0.3); "> -

📊 Smart Analytics

+

Smart Analytics

Track performance metrics, view detailed reports, and export results in multiple formats for comprehensive analysis. @@ -830,26 +876,26 @@ def show_home_page(): st.markdown("---") # Statistics Section - st.markdown("### 📈 Platform Statistics") + st.markdown("### Platform Statistics") metric_col1, metric_col2, metric_col3, metric_col4 = st.columns(4) with metric_col1: - st.metric("đŸŽ¯ Accuracy", "97.8%", "+2.1%") + st.metric("Accuracy", "97.8%", "+2.1%") with metric_col2: - st.metric("⚡ Speed", "< 100ms", "-15ms") + st.metric("Speed", "< 100ms", "-15ms") with metric_col3: - st.metric("đŸ›Ąī¸ Threats Blocked", "10M+", "+2.3M") + st.metric("Threats Blocked", "10M+", "+2.3M") with metric_col4: - st.metric("🤖 AI Models", "4", "+1") + st.metric("AI Models", "4", "+1") st.markdown("---") # How It Works Section - st.markdown("### đŸŽ¯ How Spamlyser Pro Works") + st.markdown("### How Spamlyser Pro Works") step_col1, step_col2, step_col3, step_col4 = st.columns(4) @@ -867,7 +913,7 @@ def show_home_page(): margin: 0 auto 15px auto; box-shadow: 0 5px 15px rgba(102, 126, 234, 0.4); "> - 📱 + 1

Step 1

Input SMS Message

@@ -888,7 +934,7 @@ def show_home_page(): margin: 0 auto 15px auto; box-shadow: 0 5px 15px rgba(255, 154, 158, 0.4); "> - 🤖 + 2

Step 2

AI Analysis

@@ -909,7 +955,7 @@ def show_home_page(): margin: 0 auto 15px auto; box-shadow: 0 5px 15px rgba(168, 237, 234, 0.4); "> - 🔍 + 3

Step 3

Threat Detection

@@ -930,7 +976,7 @@ def show_home_page(): margin: 0 auto 15px auto; box-shadow: 0 5px 15px rgba(255, 236, 210, 0.4); "> - 📊 + 4

Step 4

Results & Report

@@ -942,7 +988,7 @@ def show_home_page(): st.markdown("""

- đŸ’Ŧ Your Feedback Matters! + Your Feedback Matters!

Help us improve Spamlyser by sharing your thoughts and suggestions @@ -7031,6 +7077,44 @@ def update_progress(progress, message=""): color: #232a3d !important; } + /* Specific fix for Overall Statistics section */ + .stSidebar .stMetric { + background: #ffffff !important; + border: 1px solid #b3c7f7 !important; + color: #232a3d !important; + } + + .stSidebar .stMetric > div { + color: #232a3d !important; + } + + .stSidebar .stMetric label { + color: #232a3d !important; + } + + .stSidebar .stMetric div { + color: #232a3d !important; + } + + .stSidebar .stMetric span { + color: #232a3d !important; + } + + .stSidebar .stMetric p { + color: #232a3d !important; + } + + /* Force visibility for metric containers */ + .stSidebar [data-testid="metric-container"] { + background: #ffffff !important; + border: 1px solid #b3c7f7 !important; + color: #232a3d !important; + } + + .stSidebar [data-testid="metric-container"] * { + color: #232a3d !important; + } + .metric-container, .prediction-card, .ensemble-card, .feature-card, .model-info, .ensemble-method, .method-comparison { background: #e3eafc; border-radius: 16px; From dbcc9b8edc04762ae6fc2f5fdb2cd2a470367c3d Mon Sep 17 00:00:00 2001 From: Anjali Date: Tue, 28 Oct 2025 23:06:44 +0530 Subject: [PATCH 3/3] feat: enhance menu page --- app.py | 218 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 109 insertions(+), 109 deletions(-) diff --git a/app.py b/app.py index c900f83..2227422 100644 --- a/app.py +++ b/app.py @@ -89,7 +89,7 @@ def get_all_predictions(self, predictions): # --- Streamlit Page Configuration --- st.set_page_config( page_title="Spamlyser Pro - Ensemble Edition", - page_icon="đŸ›Ąī¸", + page_icon="", layout="wide", initial_sidebar_state="expanded" ) @@ -114,18 +114,18 @@ def navigate_to(page_name): # Page registry for navigation PAGES = { - 'home': '🏠 Home', - 'analyzer': '🔍 SMS Analyzer', - 'about': 'â„šī¸ About', - 'features': '⚡ Features', - 'analytics': '📊 Analytics', - 'models': '🤖 Models', - 'feedback': 'đŸ’Ŧ Feedback', - 'help': '❓ Help', - 'contact': '📞 Contact', - 'docs': '📚 Docs', - 'api': '🔌 API', - 'settings': 'âš™ī¸ Settings' + 'home': 'Home', + 'analyzer': 'SMS Analyzer', + 'about': 'About', + 'features': 'Features', + 'analytics': 'Analytics', + 'models': 'Models', + 'feedback': 'Feedback', + 'help': 'Help', + 'contact': 'Contact', + 'docs': 'Docs', + 'api': 'API', + 'settings': 'Settings' } # --- Custom CSS for Styling --- @@ -757,7 +757,7 @@ def show_home_page(): text-shadow: 0 0 30px rgba(255,255,255,0.3); font-weight: 700; "> - đŸ›Ąī¸ Spamlyser Pro + Spamlyser Pro

- đŸ›Ąī¸ Spamlyser Pro - Analyzer + Spamlyser Pro - Analyzer

Advanced Multi-Model SMS Threat Detection & Analysis Platform @@ -1147,7 +1147,7 @@ def show_analyzer_page(): """, unsafe_allow_html=True) # Analysis Mode Selection - st.markdown("### 🔍 Choose Analysis Mode") + st.markdown("### Choose Analysis Mode") analysis_mode = st.radio( "Select how you want to analyze messages:", ["Single Message Analysis", "Batch Processing (CSV)"], @@ -1155,10 +1155,10 @@ def show_analyzer_page(): ) if analysis_mode == "Single Message": - st.markdown("### 📝 Single Message Analysis") + st.markdown("### Single Message Analysis") # Existing single message analysis code will go here else: - st.markdown("### 📊 Batch Message Analysis") + st.markdown("### Batch Message Analysis") st.markdown(""" Upload a CSV file containing multiple messages for analysis. The file should have the following format: - Required column: `message` (The SMS text to analyze) @@ -1179,7 +1179,7 @@ def show_analyzer_page(): # Create containers for progress tracking progress_container = st.container() with progress_container: - st.markdown("### ⚡ Processing Status") + st.markdown("### Processing Status") progress_cols = st.columns([2, 1, 1]) with progress_cols[0]: progress_bar = st.progress(0) @@ -1199,7 +1199,7 @@ def show_analyzer_page(): # Read and validate CSV df = pd.read_csv(uploaded_file) if 'message' not in df.columns: - st.error("❌ Error: CSV file must contain a 'message' column!") + st.error("Error: CSV file must contain a 'message' column!") return # Create a callback for updating detailed metrics @@ -1215,7 +1215,7 @@ def update_metrics(progress): # Update progress and status progress_bar.progress(progress) processed_count = int(progress * len(df)) - status_text.markdown(f"✨ Processing message {processed_count} of {len(df)}...") + status_text.markdown(f"Processing message {processed_count} of {len(df)}...") # Calculate processing speed and time elapsed_time = (datetime.now() - start_time).total_seconds() @@ -1235,7 +1235,7 @@ def update_metrics(progress): spam_metric.metric("Spam", f"{spam_count} ({spam_count/processed_count*100:.1f}%)") ham_metric.metric("Ham", f"{ham_count} ({ham_count/processed_count*100:.1f}%)") confidence_metric.metric("Avg Confidence", f"{(total_confidence/processed_count):.2%}") # Show file statistics - st.info(f"📊 File Statistics:\n- Total messages: {len(df)}\n- File size: {uploaded_file.size/1024:.1f} KB") + st.info(f"File Statistics:\n- Total messages: {len(df)}\n- File size: {uploaded_file.size/1024:.1f} KB") # Batch processing options col1, col2 = st.columns(2) @@ -1256,7 +1256,7 @@ def update_metrics(progress): ) # Process button - if st.button("🚀 Start Batch Processing", type="primary", use_container_width=True): + if st.button("Start Batch Processing", type="primary", use_container_width=True): import time # Initialize processing @@ -1264,7 +1264,7 @@ def update_metrics(progress): processed = 0 results = [] - status_text.text("⚡ Initializing batch processing...") + status_text.text("Initializing batch processing...") time.sleep(1) # Simulate initialization # Initialize batch processor @@ -1362,9 +1362,9 @@ def update_progress(progress): mime = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" # Show completion message and download button - st.success("✅ Batch processing completed successfully!") + st.success("Batch processing completed successfully!") st.download_button( - "đŸ“Ĩ Download Analysis Report", + "Download Analysis Report", data=report, file_name=filename, mime=mime, @@ -1376,13 +1376,13 @@ def update_progress(progress): status_text.empty() # Show detailed analysis results - st.markdown("### 📊 Analysis Results") + st.markdown("### Analysis Results") # Convert results to DataFrame for analysis results_df = pd.DataFrame(results) # Create tabs for different views - tab1, tab2, tab3 = st.tabs(["📈 Overview", "🔍 Detailed Analysis", "âš ī¸ Risk Analysis"]) + tab1, tab2, tab3 = st.tabs(["Overview", "Detailed Analysis", "Risk Analysis"]) with tab1: # Summary metrics @@ -1476,7 +1476,7 @@ def update_progress(progress): st.plotly_chart(fig, use_container_width=True) # List high-risk messages - st.subheader("🚨 High-Risk Messages") + st.subheader("High-Risk Messages") high_risk_threshold = 3 # Messages with 3 or more risk indicators high_risk_messages = [] @@ -1495,7 +1495,7 @@ def update_progress(progress): st.info("No high-risk messages detected in this batch.") except Exception as e: - st.error(f"❌ Error processing file: {str(e)}") + st.error(f"Error processing file: {str(e)}") st.info("Please ensure your CSV file is properly formatted and try again.") # The rest of the current main functionality will go here @@ -1504,34 +1504,34 @@ def show_about_page(): st.markdown("""

- â„šī¸ About Spamlyser Pro + About Spamlyser Pro

""", unsafe_allow_html=True) st.markdown(""" - ## đŸ›Ąī¸ About Spamlyser Pro + ## About Spamlyser Pro **Spamlyser Pro** is a cutting-edge SMS threat detection system built using advanced machine learning techniques and ensemble methods. - ### đŸŽ¯ Mission + ### Mission To provide accurate, real-time SMS threat detection and help users identify potentially harmful messages before they cause damage. - ### 🤖 Technology Stack + ### Technology Stack - **Machine Learning Models**: DistilBERT, BERT, RoBERTa, ALBERT - **Framework**: Streamlit for web interface - **Backend**: Python with Transformers library - **Analytics**: Plotly for data visualization - ### 🏆 Features + ### Features - Multi-model ensemble predictions - Real-time threat analysis - Detailed performance metrics - Export functionality - User-friendly interface - ### 👨‍đŸ’ģ Developer - Built with â¤ī¸ by the Spamlyser Pro team using state-of-the-art AI technology. + ### Developer + Built with love by the Spamlyser Pro team using state-of-the-art AI technology. """) def show_features_page(): @@ -1553,7 +1553,7 @@ def show_features_page(): text-shadow: 0 0 30px rgba(255,255,255,0.3); font-weight: 700; "> - ⚡ Advanced Features + Advanced Features

-

🤖 Advanced AI Models

+

Advanced AI Models

Our ensemble of state-of-the-art transformer models provides unmatched accuracy in SMS threat detection.

@@ -1615,7 +1615,7 @@ def show_features_page(): margin-bottom: 20px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); "> -

🚀 BERT (Bidirectional Encoder)

+

BERT (Bidirectional Encoder)

Deep contextual understanding of SMS content with bidirectional attention mechanisms.

@@ -1637,7 +1637,7 @@ def show_features_page(): margin-bottom: 20px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); "> -

⚡ DistilBERT (Lightweight)

+

DistilBERT (Lightweight)

60% smaller, 60% faster than BERT while retaining 97% of performance.

@@ -1660,7 +1660,7 @@ def show_features_page(): margin-bottom: 20px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); "> -

đŸŽ¯ RoBERTa (Robustly Optimized)

+

RoBERTa (Robustly Optimized)

Enhanced BERT with improved training methodology and dynamic masking.

@@ -1682,7 +1682,7 @@ def show_features_page(): margin-bottom: 20px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); "> -

🧠 ALBERT (A Lite BERT)

+

ALBERT (A Lite BERT)

Parameter sharing and factorized embeddings for efficient processing.

@@ -1695,7 +1695,7 @@ def show_features_page():

""", unsafe_allow_html=True) - elif feature_category == "🔒 Security & Protection": + elif feature_category == "Security & Protection": st.markdown("""
-

🔒 Comprehensive Security Features

+

Comprehensive Security Features

Multi-layered protection against various types of SMS-based threats and attacks.

@@ -1716,21 +1716,21 @@ def show_features_page(): with threat_col1: threats = [ { - "icon": "đŸŽŖ", + "icon": "", "name": "Phishing Detection", "description": "Identifies attempts to steal personal information through deceptive messages", "accuracy": "98.5%", "color": "#e74c3c" }, { - "icon": "💰", + "icon": "", "name": "Financial Fraud", "description": "Detects scams targeting bank accounts, credit cards, and financial data", "accuracy": "97.9%", "color": "#f39c12" }, { - "icon": "đŸĻ ", + "icon": "", "name": "Malware Links", "description": "Scans for malicious URLs that could download harmful software", "accuracy": "99.2%", @@ -1771,21 +1771,21 @@ def show_features_page(): with threat_col2: threats2 = [ { - "icon": "🎭", + "icon": "", "name": "Social Engineering", "description": "Identifies psychological manipulation tactics used in SMS attacks", "accuracy": "96.7%", "color": "#2ecc71" }, { - "icon": "📱", + "icon": "", "name": "SIM Swapping Alerts", "description": "Detects messages related to unauthorized SIM card transfers", "accuracy": "98.1%", "color": "#3498db" }, { - "icon": "🔐", + "icon": "", "name": "Identity Theft", "description": "Prevents attempts to gather personal identifying information", "accuracy": "97.3%", @@ -1823,7 +1823,7 @@ def show_features_page():
""", unsafe_allow_html=True) - elif feature_category == "📊 Analytics & Reporting": + elif feature_category == "Analytics & Reporting": st.markdown("""
-

📊 Advanced Analytics & Reporting

+

Advanced Analytics & Reporting

Comprehensive insights and detailed reports to track performance and understand threat patterns.

@@ -1841,12 +1841,12 @@ def show_features_page(): # Analytics features with interactive elements analytics_features = [ - {"name": "Real-time Dashboard", "icon": "📈", "desc": "Live monitoring of threat detection performance"}, - {"name": "Historical Analysis", "icon": "📊", "desc": "Trend analysis and pattern recognition over time"}, - {"name": "Model Performance", "icon": "đŸŽ¯", "desc": "Individual and ensemble model accuracy tracking"}, - {"name": "Threat Intelligence", "icon": "🧠", "desc": "Insights into emerging threat types and patterns"}, - {"name": "Export Capabilities", "icon": "📤", "desc": "Multiple format exports (CSV, JSON, PDF reports)"}, - {"name": "Custom Reports", "icon": "📋", "desc": "Tailored reporting for specific business needs"} + {"name": "Real-time Dashboard", "icon": "", "desc": "Live monitoring of threat detection performance"}, + {"name": "Historical Analysis", "icon": "", "desc": "Trend analysis and pattern recognition over time"}, + {"name": "Model Performance", "icon": "", "desc": "Individual and ensemble model accuracy tracking"}, + {"name": "Threat Intelligence", "icon": "", "desc": "Insights into emerging threat types and patterns"}, + {"name": "Export Capabilities", "icon": "", "desc": "Multiple format exports (CSV, JSON, PDF reports)"}, + {"name": "Custom Reports", "icon": "", "desc": "Tailored reporting for specific business needs"} ] for i in range(0, len(analytics_features), 2): @@ -1894,7 +1894,7 @@ def show_features_page():
""", unsafe_allow_html=True) - elif feature_category == "⚡ Performance & Speed": + elif feature_category == "Performance & Speed": st.markdown("""
-

⚡ Lightning-Fast Performance

+

Lightning-Fast Performance

Optimized for speed without compromising accuracy. Built for real-time threat detection at scale.

@@ -1914,20 +1914,20 @@ def show_features_page(): perf_col1, perf_col2, perf_col3, perf_col4 = st.columns(4) with perf_col1: - st.metric("⚡ Analysis Speed", "< 50ms", "−25ms") + st.metric("Analysis Speed", "< 50ms", "−25ms") with perf_col2: - st.metric("đŸŽ¯ Accuracy", "97.8%", "+2.1%") + st.metric("Accuracy", "97.8%", "+2.1%") with perf_col3: - st.metric("📊 Throughput", "1000/sec", "+200/sec") + st.metric("Throughput", "1000/sec", "+200/sec") with perf_col4: - st.metric("🧠 Memory Usage", "2.1GB", "−0.5GB") + st.metric("Memory Usage", "2.1GB", "−0.5GB") # Performance features st.markdown("---") performance_details = [ { - "title": "🚀 Optimized Inference Pipeline", + "title": "Optimized Inference Pipeline", "details": [ "GPU acceleration with CUDA support", "Batch processing for multiple SMS analysis", @@ -1936,7 +1936,7 @@ def show_features_page(): ] }, { - "title": "âš–ī¸ Smart Load Balancing", + "title": "Smart Load Balancing", "details": [ "Intelligent model routing based on message complexity", "Dynamic resource allocation", @@ -1945,7 +1945,7 @@ def show_features_page(): ] }, { - "title": "🔄 Real-time Processing", + "title": "Real-time Processing", "details": [ "Stream processing architecture", "Zero-downtime updates", @@ -1958,7 +1958,7 @@ def show_features_page(): for detail in performance_details: with st.expander(detail['title'], expanded=False): for item in detail['details']: - st.markdown(f"✅ {item}") + st.markdown(f"â€ĸ {item}") else: # Tools & Integration st.markdown(""" @@ -1969,7 +1969,7 @@ def show_features_page(): margin: 20px 0; color: #333; "> -

đŸ› ī¸ Tools & Integration Capabilities

+

Tools & Integration Capabilities

Seamlessly integrate with your existing systems and workflows with our comprehensive API and tools.

@@ -1989,7 +1989,7 @@ def show_features_page(): margin-bottom: 20px; box-shadow: 0 5px 15px rgba(102, 126, 234, 0.2); "> -

🔌 REST API

+

REST API

  • RESTful endpoints for all features
  • JSON request/response format
  • @@ -2009,7 +2009,7 @@ def show_features_page(): margin-bottom: 20px; box-shadow: 0 5px 15px rgba(78, 205, 196, 0.2); "> -

    📱 Mobile Integration

    +

    Mobile Integration

    • iOS and Android SDK support
    • Real-time SMS scanning
    • @@ -2030,7 +2030,7 @@ def show_features_page(): margin-bottom: 20px; box-shadow: 0 5px 15px rgba(255, 107, 107, 0.2); "> -

      â˜ī¸ Cloud Deployment

      +

      Cloud Deployment

      • AWS, Azure, GCP compatible
      • Docker containerization
      • @@ -2050,7 +2050,7 @@ def show_features_page(): margin-bottom: 20px; box-shadow: 0 5px 15px rgba(254, 202, 87, 0.2); "> -

        🔧 Enterprise Tools

        +

        Enterprise Tools

        • Custom model training
        • On-premise deployment
        • @@ -2084,15 +2084,15 @@ def show_features_page(): action_col1, action_col2, action_col3 = st.columns(3) with action_col1: - if st.button("🔍 Try SMS Analyzer", type="primary", use_container_width=True): + if st.button("Try SMS Analyzer", type="primary", use_container_width=True): navigate_to('analyzer') with action_col2: - if st.button("📊 View Analytics", use_container_width=True): + if st.button("View Analytics", use_container_width=True): navigate_to('analytics') with action_col3: - if st.button("🏠 Back to Home", use_container_width=True): + if st.button("Back to Home", use_container_width=True): navigate_to('home') def show_models_page(): @@ -2114,7 +2114,7 @@ def show_models_page(): text-shadow: 0 0 30px rgba(255,255,255,0.3); font-weight: 700; "> - 🤖 AI Models + AI Models

          -

          🚀 BERT: The Foundation Model

          +

          BERT: The Foundation Model

          Bidirectional Encoder Representations from Transformers - the revolutionary model that changed NLP forever.

          @@ -2175,7 +2175,7 @@ def show_models_page(): box-shadow: 0 5px 15px rgba(0,0,0,0.1); border-left: 5px solid #667eea; "> -

          đŸ”Ŧ Technical Architecture

          +

          Technical Architecture

          • Architecture: 12-layer Transformer encoder
          • Parameters: 110M parameters
          • @@ -2196,7 +2196,7 @@ def show_models_page(): box-shadow: 0 5px 15px rgba(0,0,0,0.1); border-left: 5px solid #4ecdc4; "> -

            đŸŽ¯ SMS Detection Capabilities

            +

            SMS Detection Capabilities

            • Contextual Understanding: Bidirectional context analysis
            • Semantic Analysis: Deep meaning comprehension
            • @@ -2209,10 +2209,10 @@ def show_models_page(): with col2: # Performance metrics for BERT - st.metric("đŸŽ¯ Accuracy", "97.2%", "+0.8%") - st.metric("⚡ Speed", "120ms", "Standard") - st.metric("🧠 Memory", "440MB", "Base Model") - st.metric("đŸ”Ĩ F1-Score", "96.8%", "+1.2%") + st.metric("Accuracy", "97.2%", "+0.8%") + st.metric("Speed", "120ms", "Standard") + st.metric("Memory", "440MB", "Base Model") + st.metric("F1-Score", "96.8%", "+1.2%") st.markdown("""
              -

              🏆 Best For

              +

              Best For

              â€ĸ High accuracy requirements
              â€ĸ Complex threat analysis
              @@ -2233,7 +2233,7 @@ def show_models_page():

              """, unsafe_allow_html=True) - elif model_category == "⚡ DistilBERT - Lightweight Champion": + elif model_category == "DistilBERT - Lightweight Champion": st.markdown("""
              -

              ⚡ DistilBERT: Speed Meets Intelligence

              +

              DistilBERT: Speed Meets Intelligence

              A distilled version of BERT that's 60% smaller, 60% faster, while retaining 97% of performance.

              @@ -2261,7 +2261,7 @@ def show_models_page(): box-shadow: 0 5px 15px rgba(0,0,0,0.1); border-left: 5px solid #ff6b6b; "> -

              đŸƒâ€â™‚ī¸ Optimization Features

              +

              Optimization Features

              • Knowledge Distillation: Learned from BERT teacher model
              • Layer Reduction: 6 layers instead of 12
              • @@ -2281,7 +2281,7 @@ def show_models_page(): box-shadow: 0 5px 15px rgba(0,0,0,0.1); border-left: 5px solid #feca57; "> -

                🚀 Performance Advantages

                +

                Performance Advantages

                • Speed Boost: 2x faster inference than BERT
                • Memory Efficient: 60% less memory usage
                • @@ -2308,7 +2308,7 @@ def show_models_page(): color: white; text-align: center; "> -

                  🏆 Best For

                  +

                  Best For

                  â€ĸ Real-time applications
                  â€ĸ Mobile deployments
                  @@ -2393,7 +2393,7 @@ def show_models_page(): color: #333; text-align: center; "> -

                  🏆 Best For

                  +

                  Best For

                  â€ĸ Highest accuracy needs
                  â€ĸ Complex threat patterns
                  @@ -2478,7 +2478,7 @@ def show_models_page(): color: white; text-align: center; "> -

                  🏆 Best For

                  +

                  Best For

                  â€ĸ Memory constraints
                  â€ĸ Balanced performance
                  @@ -2764,7 +2764,7 @@ def show_models_page(): navigate_to('features') with action_col3: - if st.button("🏠 Back to Home", use_container_width=True): + if st.button("Back to Home", use_container_width=True): navigate_to('home') def show_contact_page(): @@ -3152,7 +3152,7 @@ def show_contact_page(): navigate_to('analyzer') with action_col3: - if st.button("🏠 Back to Home", use_container_width=True): + if st.button("Back to Home", use_container_width=True): navigate_to('home') # Add bottom padding for proper spacing @@ -3680,7 +3680,7 @@ def show_api_page(): navigate_to('analyzer') with action_col3: - if st.button("🏠 Back to Home", use_container_width=True): + if st.button("Back to Home", use_container_width=True): navigate_to('home') # Add bottom padding for proper spacing @@ -4119,7 +4119,7 @@ def show_about_page(): navigate_to('api') with action_col3: - if st.button("🏠 Back to Home", use_container_width=True): + if st.button("Back to Home", use_container_width=True): navigate_to('home') # Add bottom padding for proper spacing @@ -4543,7 +4543,7 @@ def show_analytics_page(): navigate_to('analyzer') with action_col3: - if st.button("🏠 Back to Home", use_container_width=True): + if st.button("Back to Home", use_container_width=True): navigate_to('home') # Add bottom padding for proper spacing @@ -4996,11 +4996,11 @@ def show_help_page(): navigate_to('analyzer') with action_col2: - if st.button("🤖 AI Models", use_container_width=True): + if st.button("AI Models", use_container_width=True): navigate_to('models') with action_col3: - if st.button("🏠 Back to Home", use_container_width=True): + if st.button("Back to Home", use_container_width=True): navigate_to('home') # Add bottom padding for proper spacing @@ -6225,7 +6225,7 @@ def show_settings_page(): navigate_to('docs') with action_col4: - if st.button("🏠 Back to Home", use_container_width=True): + if st.button("Back to Home", use_container_width=True): navigate_to('home') # Settings Summary @@ -6556,7 +6556,7 @@ def show_feedback_page(): st.markdown("


                  ", unsafe_allow_html=True) col1, col2, col3 = st.columns(3) with col1: - if st.button("🏠 Back to Home", use_container_width=True): + if st.button("Back to Home", use_container_width=True): navigate_to('home') with col2: if st.button("🔍 Try SMS Analysis", use_container_width=True): @@ -6601,7 +6601,7 @@ def show_feedback_page(): st.markdown("""

                  - đŸ›Ąī¸ Spamlyser Pro - SMS Analyzer + Spamlyser Pro - SMS Analyzer

                  Advanced Multi-Model SMS Threat Detection & Analysis Platform