# Architecture Overview ## C4 Model - System Context Diagram ```mermaid graph TB subgraph System MB["🧠 Magic Bus
Compass 360"] end subgraph Users Youth["👥 Youth Users
Learning & Feedback"] Admin["👨‍💼 Admin Users
System Management"] Stakeholder["🎯 Stakeholders
Decision Making"] end subgraph External Azure["☁️ Azure Blob Storage
APAC Datasets"] Email["📧 Email Service
Survey Distribution"] end Youth -->|Register, Learn, Feedback| MB Admin -->|Configure, Monitor| MB Stakeholder -->|View Insights| MB MB -->|Read Data| Azure MB -->|Send Surveys| Email ``` ## C4 Model - Container Diagram ```mermaid graph TB subgraph "Client Layer" Web["🌐 Web Application
(Streamlit)
- 6 Pages
- Multi-role UI
- Responsive"] end subgraph "Application Layer" Auth["🔐 Auth Module
- User Management
- Role Control
- Session Mgmt"] Youth["👤 Youth Service
- Profile Management
- Progress Tracking
- Feedback"] Admin["⚙️ Admin Service
- Module Config
- Survey Mgmt
- System Health"] DI["📊 Decision Intelligence
- Feature Compute
- KPI Generation
- Analytics"] end subgraph "Data Layer" DB["🗄️ SQLite Database
- 9 Tables
- 50 Users
- 16 Modules"] Cache["💾 Cache Layer
- Feature Cache
- Dataset Cache
- Session Cache"] end subgraph "External Services" Azure["☁️ Azure Blob
- 25+ Datasets
- APAC Region
- Read-Only"] end Web -->|API Calls| Auth Web -->|API Calls| Youth Web -->|API Calls| Admin Web -->|API Calls| DI Auth -->|Query| DB Youth -->|Query/Update| DB Admin -->|Query/Update| DB DI -->|Query| DB DI -->|Cache| Cache DI -->|Read| Azure Auth -->|Store/Verify| Cache ``` ## C4 Model - Component Diagram (Detail View) ```mermaid graph TB subgraph "Frontend - Streamlit Pages" Login["Login Page
- Email/Password
- Register Link"] Register["Register Page
- Form Validation
- Profile Setup"] Youth["Youth Dashboard
- Profile View
- Progress Tracker
- Feedback Form"] Admin["Admin Portal
- User List
- Module Manager
- Survey Panel"] DI["DI Dashboard
- 7 Tabs
- Charts
- Exports"] Confirm["Confirmation
- Success Messages
- Navigation"] end subgraph "Backend Services" AuthSvc["Auth Service
- validate_credentials()
- create_session()
- get_user_role()"] YouthSvc["Youth Service
- get_profile()
- update_progress()
- submit_feedback()"] AdminSvc["Admin Service
- list_users()
- create_module()
- send_surveys()"] DISvc["DI Service
- compute_features()
- get_kpis()
- build_heatmap()"] end subgraph "Data Access Layer" SQLite["SQLite Driver
- execute_query()
- insert_record()
- update_record()"] AzureConn["Azure Connector
- get_dataset()
- list_blobs()
- handle_errors()"] FeatureEng["Feature Engineer
- compute_all_features()
- load_from_sqlite()
- aggregate_metrics()"] end Login -->|Login| AuthSvc Register -->|Register| AuthSvc Youth -->|Get Profile| YouthSvc Youth -->|Submit Feedback| YouthSvc Admin -->|List/Create| AdminSvc DI -->|Compute| DISvc AuthSvc -->|Query| SQLite YouthSvc -->|Query/Update| SQLite AdminSvc -->|Query/Update| SQLite DISvc -->|Query Features| FeatureEng FeatureEng -->|Load Data| SQLite FeatureEng -->|Read| AzureConn AzureConn -->|Connect| Azure["Azure Blob
Storage"] ``` ## C4 Model - Code Level (Detailed) ```mermaid graph LR subgraph "mb/pages" Page0["0_login.py
Entry point"] Page1["1_register.py
Registration logic"] Page2Y["2_youth_dashboard.py
Youth UI"] Page3["3_magicbus_admin.py
Admin UI"] Page4["4_decision_intelligence_azure.py
DI Dashboard"] end subgraph "mb/data_sources" Connector["azure_blob_connector.py
AzureBlobConnector class
- get_dataset()
- list_available_datasets()
- get_health_report()"] Engineer["azure_feature_engineer.py
AzureFeatureEngineer class
- compute_all_features()
- compute_student_daily_features()
- compute_dropout_risk()"] Dashboard["azure_decision_dashboard.py
AzureDecisionDashboard class
- get_executive_overview()
- get_sector_heatmap()
- generate_proposal_insights()"] end subgraph "config" Settings["settings.py
Environment config"] Secrets["secrets.py
Key management"] end Page4 -->|Uses| Dashboard Dashboard -->|Uses| Engineer Engineer -->|Uses| Connector Dashboard -->|Config| Settings Connector -->|Config| Settings ``` ## Data Flow Architecture ### Request Flow - Youth Dashboard ```mermaid sequenceDiagram participant Browser participant Streamlit participant YouthService participant SQLite participant Cache Browser->>Streamlit: Click Youth Dashboard Streamlit->>Streamlit: Check Session Streamlit->>YouthService: get_user_profile(user_id) YouthService->>Cache: Check Cache alt Cache Hit Cache-->>YouthService: Cached Profile else Cache Miss YouthService->>SQLite: SELECT from mb_users SQLite-->>YouthService: Profile Data YouthService->>Cache: Store in Cache end YouthService-->>Streamlit: Profile Object Streamlit->>Streamlit: Render UI Streamlit-->>Browser: Display Dashboard ``` ### Request Flow - Decision Intelligence ```mermaid sequenceDiagram participant Admin participant DI_Dashboard participant FeatureEngineer participant AzureConnector participant SQLite participant Azure Admin->>DI_Dashboard: Click "Refresh Features" DI_Dashboard->>FeatureEngineer: compute_all_features() FeatureEngineer->>AzureConnector: get_dataset("students") AzureConnector->>Azure: Request Data alt Azure Available Azure-->>AzureConnector: CSV Data else Azure Unavailable AzureConnector->>SQLite: Fallback Load SQLite-->>AzureConnector: SQLite Data end AzureConnector-->>FeatureEngineer: DataFrame FeatureEngineer->>FeatureEngineer: Compute 6 Features FeatureEngineer-->>DI_Dashboard: Features Dict DI_Dashboard->>DI_Dashboard: Generate KPIs DI_Dashboard-->>Admin: Display Dashboard ``` ## Technology Stack Architecture ```mermaid graph TB subgraph "Presentation" Streamlit["Streamlit 1.28.1
- Session Management
- State Management
- Interactive Widgets"] Plotly["Plotly 5.18
- Charts
- Heatmaps
- Visualizations"] end subgraph "Application Logic" Python["Python 3.11
- Core Logic
- Data Processing
- Algorithms"] Pandas["Pandas 2.1.4
- Data Manipulation
- Feature Engineering
- Aggregations"] NumPy["NumPy
- Numerical Computing
- Array Operations"] end subgraph "Data Storage" SQLite["SQLite 3
- Relational Storage
- ACID Compliance
- Transaction Support"] AzureSDK["Azure SDK
- Blob Storage
- Authentication
- Connection Pooling"] end subgraph "Infrastructure" Windows["Windows/Linux
- Host OS
- Port 8501"] Azure_Cloud["Azure Cloud
- Blob Storage
- APAC Region"] end Streamlit -->|Renders| Plotly Streamlit -->|Calls| Python Python -->|Uses| Pandas Python -->|Uses| NumPy Python -->|Queries| SQLite Python -->|Connects| AzureSDK SQLite -->|Runs on| Windows AzureSDK -->|Connects to| Azure_Cloud ``` ## Integration Points ### Database Integration ```mermaid graph TB subgraph "Read Operations" R1["mb_users
- Get profile
- List all users"] R2["learning_modules
- List modules
- Get assignments"] R3["student_daily_features
- Engagement metrics
- Progress data"] end subgraph "Write Operations" W1["youth_feedback_surveys
- Save feedback
- Store responses"] W2["learning_modules
- Update progress
- Mark complete"] W3["survey_distribution_logs
- Track sends
- Log opens"] end subgraph "Queries" Q["Feature Engineer
- Compute dropout risk
- Calculate sector fit
- Aggregate funnel"] end R1 -->|Source| Q R2 -->|Source| Q R3 -->|Source| Q W1 -->|Target| DB["SQLite
Database"] W2 -->|Target| DB W3 -->|Target| DB Q -->|Update| DB ``` ### Azure Integration ```mermaid graph TB subgraph "Azure Blob Storage" Container["Container: usethisone
Folder: apac"] DS1["students.csv"] DS2["learning_modules.csv"] DS3["quiz_attempts.csv"] DS4["...more datasets"] end subgraph "Azure Connector" Auth["Authentication
- Connection String
- Access Keys"] Reader["Data Reader
- Download Blobs
- Parse CSV"] Cache_AZ["Caching
- In-Memory
- TTL"] end subgraph "Feature Engineer" FE["Feature Pipeline
- Load Data
- Transform
- Compute Features"] end Container -->|Contains| DS1 Container -->|Contains| DS2 Container -->|Contains| DS3 Container -->|Contains| DS4 Auth -->|Connects| Container Reader -->|Reads| Container Reader -->|Caches| Cache_AZ FE -->|Reads| Cache_AZ ``` ## Performance Considerations ### Caching Strategy ```mermaid graph LR subgraph "Cache Layers" L1["L1: Session Cache
- User Profile
- TTL: 5 min
- Per Session"] L2["L2: Feature Cache
- Computed Features
- TTL: 1 hour
- Shared"] L3["L3: Dataset Cache
- Raw Data
- TTL: 24 hours
- Blob Storage"] end Request["Incoming Request"] Request -->|Check| L1 L1 -->|Miss| L2 L2 -->|Miss| L3 L3 -->|Miss| Compute["Compute from Source"] Compute -->|Store| L3 L3 -->|Store| L2 L2 -->|Store| L1 L1 -->|Return| Response["Send to User"] ``` ### Scalability Considerations | Component | Current Capacity | Bottleneck | Solution | |-----------|-----------------|-----------|----------| | Users | 50 | Session Management | Implement session store | | Features | 6 | Computation Time | Parallel processing | | Queries | 100 RPS | SQLite Locks | Move to PostgreSQL | | Azure Reads | 25+ datasets | Authentication | Use Service Principal | --- ## Deployment Architecture ### Development ``` Local Machine (Windows) ├── .venv (Python 3.11) ├── SQLite (data/mb_compass.db) ├── Streamlit (port 8501) └── Code (Git) ``` ### Production ``` Server/Cloud ├── Docker Container (Python 3.11) ├── PostgreSQL (Persistent Storage) ├── Streamlit Server (gunicorn + nginx) ├── Azure Blob (Read-Only) └── CI/CD Pipeline (GitHub Actions) ``` --- **Last Updated**: January 29, 2026