# Architecture Diagrams This directory contains comprehensive architectural diagrams for the Student Success Prediction project, created using the Python `diagrams` library. ## 📋 Overview The diagrams visualize the complete system architecture from data analysis through production deployment, providing clear documentation for developers, stakeholders, and system administrators. ## 🎯 Diagram Categories ### 1. Data Flow Architecture (`01_data_flow_architecture.py`) - **Purpose**: Shows the complete data pipeline from raw data to model predictions - **Key Components**: Data sources, processing pipeline, model development, production system - **Audience**: Data scientists, developers, project managers ### 2. EDA Process Flow (`02_eda_process_flow.py`) - **Purpose**: Visualizes the exploratory data analysis workflow and key insights - **Key Components**: Data quality assessment, statistical analysis, visualization insights - **Audience**: Data analysts, researchers, stakeholders ### 3. ML Pipeline Architecture (`03_ml_pipeline_architecture.py`) - **Purpose**: Details the machine learning workflow from preprocessing to model deployment - **Key Components**: Preprocessing, training, validation, model persistence - **Audience**: ML engineers, data scientists, technical leads ### 4. Application Architecture (`04_application_architecture.py`) - **Purpose**: Shows the modular Streamlit application structure and components - **Key Components**: Authentication, UI components, configuration, utilities - **Audience**: Frontend developers, full-stack developers, architects ### 5. Deployment Architecture (`05_deployment_architecture.py`) - **Purpose**: Illustrates deployment options and infrastructure choices - **Key Components**: Streamlit Cloud, Docker containers, traditional servers - **Audience**: DevOps engineers, system administrators, deployment teams ### 6. Feature Engineering Pipeline (`06_feature_engineering_pipeline.py`) - **Purpose**: Details the feature transformation and encoding processes - **Key Components**: Categorical/numerical processing, encoding schemes, validation - **Audience**: Data engineers, ML engineers, data scientists ### 7. User Journey Flow (`07_user_journey_flow.py`) - **Purpose**: Maps how different user types interact with the application - **Key Components**: User roles, workflows, interface interactions - **Audience**: UX designers, product managers, business analysts ### 8. Security Architecture (`08_security_architecture.py`) - **Purpose**: Comprehensive security model and authentication flows - **Key Components**: Authentication, authorization, data protection, monitoring - **Audience**: Security engineers, compliance officers, architects ## 🚀 Quick Start ### Install Dependencies ```bash # Install diagrams library and dependencies pip install -r diagrams/requirements.txt ``` **Note**: You'll also need Graphviz installed on your system: - **Windows**: Download from https://graphviz.org/download/ or use `choco install graphviz` - **macOS**: `brew install graphviz` - **Linux**: `sudo apt-get install graphviz` (Ubuntu/Debian) or `sudo yum install graphviz` (RHEL/CentOS) ### Generate All Diagrams ```bash # Generate all diagrams at once python diagrams/generate_all_diagrams.py ``` ### Generate Individual Diagrams ```bash # Generate specific diagram cd diagrams python 01_data_flow_architecture.py ``` ## 📁 Output Files After generation, you'll find PNG image files in the `diagrams/` directory: ``` diagrams/ ├── 01_data_flow_architecture.png ├── 02_eda_process_flow.png ├── 03_ml_pipeline_architecture.png ├── 04_application_architecture.png ├── 05_deployment_architecture.png ├── 06_feature_engineering_pipeline.png ├── 07_user_journey_flow.png ├── 08_security_architecture.png └── ... (source .py files) ``` ## 🎨 Customization ### Modifying Diagrams 1. **Edit Source Files**: Modify the `.py` files to change diagram content 2. **Update Styling**: Adjust colors, layouts, and visual elements 3. **Add Components**: Include new services or modify existing ones 4. **Change Layout**: Modify `direction` parameter ("TB", "LR", "BT", "RL") ### Example Customization ```python # Change diagram direction from top-bottom to left-right with Diagram("My Custom Diagram", filename="diagrams/custom_diagram", show=False, direction="LR"): # Changed from "TB" # ... diagram components ``` ### Adding New Diagrams 1. Create a new `.py` file in the `diagrams/` directory 2. Follow the existing naming convention: `09_my_new_diagram.py` 3. Add the new script to `generate_all_diagrams.py` 4. Use consistent styling and component types ## 🔧 Troubleshooting ### Common Issues **Graphviz not found error**: ```bash # Ensure Graphviz is installed and in PATH dot -V # Should show version info ``` **Import errors**: ```bash # Reinstall diagrams library pip uninstall diagrams pip install diagrams==0.23.4 ``` **Permission errors**: ```bash # Ensure write permissions in diagrams directory chmod 755 diagrams/ ``` **Large diagram files**: - Reduce number of components - Simplify cluster structures - Use abbreviated labels ### Performance Tips 1. **Batch Generation**: Use `generate_all_diagrams.py` for efficiency 2. **Selective Updates**: Only regenerate changed diagrams during development 3. **Output Format**: PNG is default; SVG available for scalability 4. **Caching**: Generated images are cached until source files change ## 📊 Integration ### Documentation Integration Include diagrams in documentation: ```markdown ![Data Flow Architecture](diagrams/01_data_flow_architecture.png) ``` ### Presentation Use - High-resolution PNG files suitable for presentations - SVG format available for scalable graphics - Consistent styling across all diagrams ### Version Control - Include source `.py` files in version control - Consider excluding generated `.png` files (large binary files) - Use CI/CD to regenerate diagrams automatically ## 🤝 Contributing When adding new diagrams: 1. **Follow Naming Convention**: `##_descriptive_name.py` 2. **Add Documentation**: Update this README with diagram description 3. **Consistent Styling**: Use similar component types and colors 4. **Test Generation**: Verify diagram generates without errors 5. **Update Master Script**: Add new diagram to `generate_all_diagrams.py` ## 📚 Resources - **Diagrams Library**: https://diagrams.mingrammer.com/ - **Graphviz Documentation**: https://graphviz.org/documentation/ - **Icon Reference**: https://diagrams.mingrammer.com/docs/nodes/overview - **Styling Guide**: https://diagrams.mingrammer.com/docs/guides/diagram ## 📄 License These diagrams are part of the Student Success Prediction project and follow the same license terms.