Quellcode durchsuchen

[#1] Add Cover page, TOC, Index, Global Index, and HTML portal to deliverables

Lange François vor 2 Wochen
Ursprung
Commit
8504f88ab0

BIN
Project.pdf


BIN
Retro Planning.pdf


BIN
delivery.zip


BIN
docs/Backup_Procedure.pdf


BIN
docs/Data_Ingestion.pdf


BIN
docs/Env_Configuration.pdf


BIN
docs/Final_Report.pdf


+ 709 - 0
docs/Global_Index.md

@@ -0,0 +1,709 @@
+# Global Project Index
+
+This document provides a unified cross-reference index of all key technical terms and concepts across the LocalFoodAI documentation suite. Click on any document link to open it at the specific page in your viewer.
+
+## Index of Terms
+
+### AI
+
+- **Local Food AI - Architecture Map**: Page 2, Page 3, Page 4, Page 5 | [Open PDF at Page 2](architecture.pdf#page=3)
+- **Database Backup and Restore Procedure**: Page 1, Page 2, Page 3, Page 4, Page 5 | [Open PDF at Page 1](Backup_Procedure.pdf#page=2)
+- **Data Ingestion Pipeline**: Page 2, Page 3 | [Open PDF at Page 2](Data_Ingestion.pdf#page=3)
+- **Disaster Recovery & Backup Plan**: Page 1, Page 2, Page 3, Page 5 | [Open PDF at Page 1](disaster_recovery_plan.pdf#page=2)
+- **Distributed Deployment Guide**: Page 2, Page 3, Page 5 | [Open PDF at Page 2](distributed_deployment.pdf#page=3)
+- **Docker Connection & Health Check Guide**: Page 1, Page 2, Page 3, Page 4 | [Open PDF at Page 1](docker_connection.pdf#page=2)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 1, Page 2, Page 3, Page 4, Page 5 | [Open PDF at Page 1](Env_Configuration.pdf#page=2)
+- **Final Project Report (Living Document)**: Page 2, Page 4 | [Open PDF at Page 2](Final_Report.pdf#page=3)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 1, Page 2, Page 3, Page 4, Page 5, Page 6 | [Open PDF at Page 1](Installation_Guide.pdf#page=2)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 1, Page 2, Page 3, Page 4, Page 5, Page 6, Page 7, Page 9 | [Open PDF at Page 1](Operator_Installation_Guide.pdf#page=2)
+- **Local Food AI - Capstone Technical Presentation**: Page 1, Page 2, Page 3, Page 4, Page 5, Page 6, Page 7 | [Open PDF at Page 1](Presentation_Technical.pdf#page=2)
+- **Local Food AI - Clinician User Manual Presentation**: Page 1, Page 2, Page 3, Page 4, Page 5, Page 6 | [Open PDF at Page 1](Presentation_User.pdf#page=2)
+- **Capstone Project Report & File Documentation**: Page 2, Page 3, Page 4, Page 5, Page 6, Page 7, Page 8, Page 9, Page 10 | [Open PDF at Page 2](project_report.pdf#page=3)
+- **Recommendations for Future Agile Projects**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](Recommendations.pdf#page=3)
+- **Local Food AI: Retro Planning**: Page 2, Page 3 | [Open PDF at Page 2](retro_planning.pdf#page=3)
+- **Scrum Artifacts**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Artifacts.pdf#page=3)
+- **Daily Scrums**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Daily.pdf#page=3)
+- **Sprint Plans**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Plan.pdf#page=3)
+- **Sprint Retrospectives**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Retro.pdf#page=3)
+- **Sprint Reviews**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Review.pdf#page=3)
+- **Scrum Wiki Master List & Index Portal**: Page 1, Page 2, Page 3, Page 4 | [Open PDF at Page 1](Scrum_Wiki.pdf#page=2)
+- **Infrastructure Stop & Start Operational Procedures**: Page 1, Page 2, Page 3, Page 4, Page 5 | [Open PDF at Page 1](Start_Stop_Procedures.pdf#page=2)
+- **Taiga Agile Audit Report**: Page 1, Page 2, Page 3, Page 4, Page 5, Page 6 | [Open PDF at Page 1](taiga_audit_report.pdf#page=2)
+- **Local Food AI - Capstone Technical Document**: Page 1, Page 2, Page 3, Page 4, Page 5, Page 6, Page 7 | [Open PDF at Page 1](Technical_Document.pdf#page=2)
+- **Sprint 8 Legacy Test Cases**: Page 2, Page 3 | [Open PDF at Page 2](Test_Cases_Sprint8.pdf#page=3)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 1, Page 2, Page 3, Page 4, Page 5 | [Open PDF at Page 1](Uninstall_Guide.pdf#page=2)
+- **Local Food AI - Network Connection URL Directory**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](URL_Formats.pdf#page=3)
+- **Local Food AI - User Description & Functional Guide**: Page 1, Page 2, Page 3, Page 4 | [Open PDF at Page 1](User_Description.pdf#page=2)
+- **Local Food AI - Clinician User Manual**: Page 2, Page 3, Page 4, Page 5 | [Open PDF at Page 2](User_Guide.pdf#page=3)
+- **Documentation Home**: Page 2, Page 3 | [Open PDF at Page 2](Wiki_Home.pdf#page=3)
+- **WSL Deployment Runbook**: Page 2, Page 3 | [Open PDF at Page 2](WSL_Deployment.pdf#page=3)
+- **Zabbix Telemetry & Monitoring Guide**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](zabbix_monitoring.pdf#page=3)
+
+### Airflow
+
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 2, Page 3 | [Open PDF at Page 2](Uninstall_Guide.pdf#page=3)
+
+### Allergens
+
+- **Local Food AI - Architecture Map**: Page 3, Page 5 | [Open PDF at Page 3](architecture.pdf#page=4)
+- **Database Backup and Restore Procedure**: Page 5 | [Open PDF at Page 5](Backup_Procedure.pdf#page=6)
+- **Data Ingestion Pipeline**: Page 3 | [Open PDF at Page 3](Data_Ingestion.pdf#page=4)
+- **Disaster Recovery & Backup Plan**: Page 5 | [Open PDF at Page 5](disaster_recovery_plan.pdf#page=6)
+- **Distributed Deployment Guide**: Page 5 | [Open PDF at Page 5](distributed_deployment.pdf#page=6)
+- **Docker Connection & Health Check Guide**: Page 4 | [Open PDF at Page 4](docker_connection.pdf#page=5)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 5 | [Open PDF at Page 5](Env_Configuration.pdf#page=6)
+- **Final Project Report (Living Document)**: Page 4 | [Open PDF at Page 4](Final_Report.pdf#page=5)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 6 | [Open PDF at Page 6](Installation_Guide.pdf#page=7)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 9 | [Open PDF at Page 9](Operator_Installation_Guide.pdf#page=10)
+- **Local Food AI - Capstone Technical Presentation**: Page 3, Page 7 | [Open PDF at Page 3](Presentation_Technical.pdf#page=4)
+- **Local Food AI - Clinician User Manual Presentation**: Page 6 | [Open PDF at Page 6](Presentation_User.pdf#page=7)
+- **Capstone Project Report & File Documentation**: Page 10 | [Open PDF at Page 10](project_report.pdf#page=11)
+- **Recommendations for Future Agile Projects**: Page 4 | [Open PDF at Page 4](Recommendations.pdf#page=5)
+- **Local Food AI: Retro Planning**: Page 3 | [Open PDF at Page 3](retro_planning.pdf#page=4)
+- **Scrum Artifacts**: Page 3 | [Open PDF at Page 3](Scrum_Artifacts.pdf#page=4)
+- **Daily Scrums**: Page 3 | [Open PDF at Page 3](Scrum_Daily.pdf#page=4)
+- **Sprint Plans**: Page 3 | [Open PDF at Page 3](Scrum_Plan.pdf#page=4)
+- **Sprint Retrospectives**: Page 3 | [Open PDF at Page 3](Scrum_Retro.pdf#page=4)
+- **Sprint Reviews**: Page 3 | [Open PDF at Page 3](Scrum_Review.pdf#page=4)
+- **Scrum Wiki Master List & Index Portal**: Page 4 | [Open PDF at Page 4](Scrum_Wiki.pdf#page=5)
+- **Infrastructure Stop & Start Operational Procedures**: Page 5 | [Open PDF at Page 5](Start_Stop_Procedures.pdf#page=6)
+- **Taiga Agile Audit Report**: Page 6 | [Open PDF at Page 6](taiga_audit_report.pdf#page=7)
+- **Local Food AI - Capstone Technical Document**: Page 7 | [Open PDF at Page 7](Technical_Document.pdf#page=8)
+- **Sprint 8 Legacy Test Cases**: Page 3 | [Open PDF at Page 3](Test_Cases_Sprint8.pdf#page=4)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 5 | [Open PDF at Page 5](Uninstall_Guide.pdf#page=6)
+- **Local Food AI - Network Connection URL Directory**: Page 4 | [Open PDF at Page 4](URL_Formats.pdf#page=5)
+- **Local Food AI - User Description & Functional Guide**: Page 4 | [Open PDF at Page 4](User_Description.pdf#page=5)
+- **Local Food AI - Clinician User Manual**: Page 3, Page 5 | [Open PDF at Page 3](User_Guide.pdf#page=4)
+- **Documentation Home**: Page 3 | [Open PDF at Page 3](Wiki_Home.pdf#page=4)
+- **WSL Deployment Runbook**: Page 3 | [Open PDF at Page 3](WSL_Deployment.pdf#page=4)
+- **Zabbix Telemetry & Monitoring Guide**: Page 4 | [Open PDF at Page 4](zabbix_monitoring.pdf#page=5)
+
+### Backup
+
+- **Local Food AI - Architecture Map**: Page 5 | [Open PDF at Page 5](architecture.pdf#page=6)
+- **Database Backup and Restore Procedure**: Page 1, Page 2, Page 3, Page 5 | [Open PDF at Page 1](Backup_Procedure.pdf#page=2)
+- **Data Ingestion Pipeline**: Page 3 | [Open PDF at Page 3](Data_Ingestion.pdf#page=4)
+- **Disaster Recovery & Backup Plan**: Page 1, Page 2, Page 5 | [Open PDF at Page 1](disaster_recovery_plan.pdf#page=2)
+- **Distributed Deployment Guide**: Page 5 | [Open PDF at Page 5](distributed_deployment.pdf#page=6)
+- **Docker Connection & Health Check Guide**: Page 4 | [Open PDF at Page 4](docker_connection.pdf#page=5)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 5 | [Open PDF at Page 5](Env_Configuration.pdf#page=6)
+- **Final Project Report (Living Document)**: Page 2, Page 4 | [Open PDF at Page 2](Final_Report.pdf#page=3)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 5, Page 6 | [Open PDF at Page 5](Installation_Guide.pdf#page=6)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 7, Page 9 | [Open PDF at Page 7](Operator_Installation_Guide.pdf#page=8)
+- **Local Food AI - Capstone Technical Presentation**: Page 7 | [Open PDF at Page 7](Presentation_Technical.pdf#page=8)
+- **Local Food AI - Clinician User Manual Presentation**: Page 6 | [Open PDF at Page 6](Presentation_User.pdf#page=7)
+- **Capstone Project Report & File Documentation**: Page 2, Page 5, Page 9, Page 10 | [Open PDF at Page 2](project_report.pdf#page=3)
+- **Recommendations for Future Agile Projects**: Page 4 | [Open PDF at Page 4](Recommendations.pdf#page=5)
+- **Local Food AI: Retro Planning**: Page 3 | [Open PDF at Page 3](retro_planning.pdf#page=4)
+- **Scrum Artifacts**: Page 3 | [Open PDF at Page 3](Scrum_Artifacts.pdf#page=4)
+- **Daily Scrums**: Page 3 | [Open PDF at Page 3](Scrum_Daily.pdf#page=4)
+- **Sprint Plans**: Page 3 | [Open PDF at Page 3](Scrum_Plan.pdf#page=4)
+- **Sprint Retrospectives**: Page 3 | [Open PDF at Page 3](Scrum_Retro.pdf#page=4)
+- **Sprint Reviews**: Page 3 | [Open PDF at Page 3](Scrum_Review.pdf#page=4)
+- **Scrum Wiki Master List & Index Portal**: Page 4 | [Open PDF at Page 4](Scrum_Wiki.pdf#page=5)
+- **Infrastructure Stop & Start Operational Procedures**: Page 5 | [Open PDF at Page 5](Start_Stop_Procedures.pdf#page=6)
+- **Taiga Agile Audit Report**: Page 4, Page 6 | [Open PDF at Page 4](taiga_audit_report.pdf#page=5)
+- **Local Food AI - Capstone Technical Document**: Page 7 | [Open PDF at Page 7](Technical_Document.pdf#page=8)
+- **Sprint 8 Legacy Test Cases**: Page 3 | [Open PDF at Page 3](Test_Cases_Sprint8.pdf#page=4)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 1, Page 3, Page 5 | [Open PDF at Page 1](Uninstall_Guide.pdf#page=2)
+- **Local Food AI - Network Connection URL Directory**: Page 4 | [Open PDF at Page 4](URL_Formats.pdf#page=5)
+- **Local Food AI - User Description & Functional Guide**: Page 4 | [Open PDF at Page 4](User_Description.pdf#page=5)
+- **Local Food AI - Clinician User Manual**: Page 5 | [Open PDF at Page 5](User_Guide.pdf#page=6)
+- **Documentation Home**: Page 3 | [Open PDF at Page 3](Wiki_Home.pdf#page=4)
+- **WSL Deployment Runbook**: Page 3 | [Open PDF at Page 3](WSL_Deployment.pdf#page=4)
+- **Zabbix Telemetry & Monitoring Guide**: Page 4 | [Open PDF at Page 4](zabbix_monitoring.pdf#page=5)
+
+### Clinical
+
+- **Local Food AI - Architecture Map**: Page 2, Page 5 | [Open PDF at Page 2](architecture.pdf#page=3)
+- **Database Backup and Restore Procedure**: Page 2, Page 5 | [Open PDF at Page 2](Backup_Procedure.pdf#page=3)
+- **Data Ingestion Pipeline**: Page 3 | [Open PDF at Page 3](Data_Ingestion.pdf#page=4)
+- **Disaster Recovery & Backup Plan**: Page 5 | [Open PDF at Page 5](disaster_recovery_plan.pdf#page=6)
+- **Distributed Deployment Guide**: Page 5 | [Open PDF at Page 5](distributed_deployment.pdf#page=6)
+- **Docker Connection & Health Check Guide**: Page 4 | [Open PDF at Page 4](docker_connection.pdf#page=5)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 5 | [Open PDF at Page 5](Env_Configuration.pdf#page=6)
+- **Final Project Report (Living Document)**: Page 2, Page 4 | [Open PDF at Page 2](Final_Report.pdf#page=3)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 6 | [Open PDF at Page 6](Installation_Guide.pdf#page=7)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 9 | [Open PDF at Page 9](Operator_Installation_Guide.pdf#page=10)
+- **Local Food AI - Capstone Technical Presentation**: Page 2, Page 7 | [Open PDF at Page 2](Presentation_Technical.pdf#page=3)
+- **Local Food AI - Clinician User Manual Presentation**: Page 1, Page 2, Page 3, Page 6 | [Open PDF at Page 1](Presentation_User.pdf#page=2)
+- **Capstone Project Report & File Documentation**: Page 3, Page 10 | [Open PDF at Page 3](project_report.pdf#page=4)
+- **Recommendations for Future Agile Projects**: Page 4 | [Open PDF at Page 4](Recommendations.pdf#page=5)
+- **Local Food AI: Retro Planning**: Page 3 | [Open PDF at Page 3](retro_planning.pdf#page=4)
+- **Scrum Artifacts**: Page 3 | [Open PDF at Page 3](Scrum_Artifacts.pdf#page=4)
+- **Daily Scrums**: Page 3 | [Open PDF at Page 3](Scrum_Daily.pdf#page=4)
+- **Sprint Plans**: Page 3 | [Open PDF at Page 3](Scrum_Plan.pdf#page=4)
+- **Sprint Retrospectives**: Page 3 | [Open PDF at Page 3](Scrum_Retro.pdf#page=4)
+- **Sprint Reviews**: Page 3 | [Open PDF at Page 3](Scrum_Review.pdf#page=4)
+- **Scrum Wiki Master List & Index Portal**: Page 2, Page 4 | [Open PDF at Page 2](Scrum_Wiki.pdf#page=3)
+- **Infrastructure Stop & Start Operational Procedures**: Page 5 | [Open PDF at Page 5](Start_Stop_Procedures.pdf#page=6)
+- **Taiga Agile Audit Report**: Page 4, Page 5, Page 6 | [Open PDF at Page 4](taiga_audit_report.pdf#page=5)
+- **Local Food AI - Capstone Technical Document**: Page 2, Page 5, Page 6, Page 7 | [Open PDF at Page 2](Technical_Document.pdf#page=3)
+- **Sprint 8 Legacy Test Cases**: Page 3 | [Open PDF at Page 3](Test_Cases_Sprint8.pdf#page=4)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 5 | [Open PDF at Page 5](Uninstall_Guide.pdf#page=6)
+- **Local Food AI - Network Connection URL Directory**: Page 4 | [Open PDF at Page 4](URL_Formats.pdf#page=5)
+- **Local Food AI - User Description & Functional Guide**: Page 1, Page 2, Page 3, Page 4 | [Open PDF at Page 1](User_Description.pdf#page=2)
+- **Local Food AI - Clinician User Manual**: Page 1, Page 2, Page 3, Page 5 | [Open PDF at Page 1](User_Guide.pdf#page=2)
+- **Documentation Home**: Page 3 | [Open PDF at Page 3](Wiki_Home.pdf#page=4)
+- **WSL Deployment Runbook**: Page 3 | [Open PDF at Page 3](WSL_Deployment.pdf#page=4)
+- **Zabbix Telemetry & Monitoring Guide**: Page 2, Page 4 | [Open PDF at Page 2](zabbix_monitoring.pdf#page=3)
+
+### Database
+
+- **Local Food AI - Architecture Map**: Page 1, Page 2, Page 3, Page 4, Page 5 | [Open PDF at Page 1](architecture.pdf#page=2)
+- **Database Backup and Restore Procedure**: Page 2, Page 3, Page 4, Page 5 | [Open PDF at Page 2](Backup_Procedure.pdf#page=3)
+- **Data Ingestion Pipeline**: Page 2, Page 3 | [Open PDF at Page 2](Data_Ingestion.pdf#page=3)
+- **Disaster Recovery & Backup Plan**: Page 1, Page 2, Page 3, Page 5 | [Open PDF at Page 1](disaster_recovery_plan.pdf#page=2)
+- **Distributed Deployment Guide**: Page 2, Page 3, Page 5 | [Open PDF at Page 2](distributed_deployment.pdf#page=3)
+- **Docker Connection & Health Check Guide**: Page 1, Page 2, Page 3, Page 4 | [Open PDF at Page 1](docker_connection.pdf#page=2)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 1, Page 2, Page 4, Page 5 | [Open PDF at Page 1](Env_Configuration.pdf#page=2)
+- **Final Project Report (Living Document)**: Page 2, Page 4 | [Open PDF at Page 2](Final_Report.pdf#page=3)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 5, Page 6 | [Open PDF at Page 5](Installation_Guide.pdf#page=6)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 1, Page 3, Page 4, Page 5, Page 6, Page 7, Page 9 | [Open PDF at Page 1](Operator_Installation_Guide.pdf#page=2)
+- **Local Food AI - Capstone Technical Presentation**: Page 1, Page 2, Page 3, Page 4, Page 5, Page 6, Page 7 | [Open PDF at Page 1](Presentation_Technical.pdf#page=2)
+- **Local Food AI - Clinician User Manual Presentation**: Page 2, Page 3, Page 4, Page 5, Page 6 | [Open PDF at Page 2](Presentation_User.pdf#page=3)
+- **Capstone Project Report & File Documentation**: Page 2, Page 3, Page 4, Page 6, Page 7, Page 9, Page 10 | [Open PDF at Page 2](project_report.pdf#page=3)
+- **Recommendations for Future Agile Projects**: Page 3, Page 4 | [Open PDF at Page 3](Recommendations.pdf#page=4)
+- **Local Food AI: Retro Planning**: Page 2, Page 3 | [Open PDF at Page 2](retro_planning.pdf#page=3)
+- **Scrum Artifacts**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Artifacts.pdf#page=3)
+- **Daily Scrums**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Daily.pdf#page=3)
+- **Sprint Plans**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Plan.pdf#page=3)
+- **Sprint Retrospectives**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Retro.pdf#page=3)
+- **Sprint Reviews**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Review.pdf#page=3)
+- **Scrum Wiki Master List & Index Portal**: Page 3, Page 4 | [Open PDF at Page 3](Scrum_Wiki.pdf#page=4)
+- **Infrastructure Stop & Start Operational Procedures**: Page 1, Page 2, Page 3, Page 4, Page 5 | [Open PDF at Page 1](Start_Stop_Procedures.pdf#page=2)
+- **Taiga Agile Audit Report**: Page 3, Page 4, Page 5, Page 6 | [Open PDF at Page 3](taiga_audit_report.pdf#page=4)
+- **Local Food AI - Capstone Technical Document**: Page 2, Page 3, Page 6, Page 7 | [Open PDF at Page 2](Technical_Document.pdf#page=3)
+- **Sprint 8 Legacy Test Cases**: Page 2, Page 3 | [Open PDF at Page 2](Test_Cases_Sprint8.pdf#page=3)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 2, Page 4, Page 5 | [Open PDF at Page 2](Uninstall_Guide.pdf#page=3)
+- **Local Food AI - Network Connection URL Directory**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](URL_Formats.pdf#page=3)
+- **Local Food AI - User Description & Functional Guide**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](User_Description.pdf#page=3)
+- **Local Food AI - Clinician User Manual**: Page 3, Page 4, Page 5 | [Open PDF at Page 3](User_Guide.pdf#page=4)
+- **Documentation Home**: Page 2, Page 3 | [Open PDF at Page 2](Wiki_Home.pdf#page=3)
+- **WSL Deployment Runbook**: Page 2, Page 3 | [Open PDF at Page 2](WSL_Deployment.pdf#page=3)
+- **Zabbix Telemetry & Monitoring Guide**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](zabbix_monitoring.pdf#page=3)
+
+### Docker
+
+- **Local Food AI - Architecture Map**: Page 3, Page 5 | [Open PDF at Page 3](architecture.pdf#page=4)
+- **Database Backup and Restore Procedure**: Page 3, Page 5 | [Open PDF at Page 3](Backup_Procedure.pdf#page=4)
+- **Data Ingestion Pipeline**: Page 2, Page 3 | [Open PDF at Page 2](Data_Ingestion.pdf#page=3)
+- **Disaster Recovery & Backup Plan**: Page 2, Page 3, Page 5 | [Open PDF at Page 2](disaster_recovery_plan.pdf#page=3)
+- **Distributed Deployment Guide**: Page 1, Page 3, Page 5 | [Open PDF at Page 1](distributed_deployment.pdf#page=2)
+- **Docker Connection & Health Check Guide**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](docker_connection.pdf#page=3)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 5 | [Open PDF at Page 5](Env_Configuration.pdf#page=6)
+- **Final Project Report (Living Document)**: Page 2, Page 4 | [Open PDF at Page 2](Final_Report.pdf#page=3)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 1, Page 2, Page 3, Page 4, Page 6 | [Open PDF at Page 1](Installation_Guide.pdf#page=2)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 1, Page 5, Page 9 | [Open PDF at Page 1](Operator_Installation_Guide.pdf#page=2)
+- **Local Food AI - Capstone Technical Presentation**: Page 2, Page 4, Page 5, Page 7 | [Open PDF at Page 2](Presentation_Technical.pdf#page=3)
+- **Local Food AI - Clinician User Manual Presentation**: Page 6 | [Open PDF at Page 6](Presentation_User.pdf#page=7)
+- **Capstone Project Report & File Documentation**: Page 2, Page 6, Page 9, Page 10 | [Open PDF at Page 2](project_report.pdf#page=3)
+- **Recommendations for Future Agile Projects**: Page 4 | [Open PDF at Page 4](Recommendations.pdf#page=5)
+- **Local Food AI: Retro Planning**: Page 3 | [Open PDF at Page 3](retro_planning.pdf#page=4)
+- **Scrum Artifacts**: Page 3 | [Open PDF at Page 3](Scrum_Artifacts.pdf#page=4)
+- **Daily Scrums**: Page 3 | [Open PDF at Page 3](Scrum_Daily.pdf#page=4)
+- **Sprint Plans**: Page 3 | [Open PDF at Page 3](Scrum_Plan.pdf#page=4)
+- **Sprint Retrospectives**: Page 3 | [Open PDF at Page 3](Scrum_Retro.pdf#page=4)
+- **Sprint Reviews**: Page 3 | [Open PDF at Page 3](Scrum_Review.pdf#page=4)
+- **Scrum Wiki Master List & Index Portal**: Page 4 | [Open PDF at Page 4](Scrum_Wiki.pdf#page=5)
+- **Infrastructure Stop & Start Operational Procedures**: Page 3, Page 4, Page 5 | [Open PDF at Page 3](Start_Stop_Procedures.pdf#page=4)
+- **Taiga Agile Audit Report**: Page 3, Page 4, Page 5, Page 6 | [Open PDF at Page 3](taiga_audit_report.pdf#page=4)
+- **Local Food AI - Capstone Technical Document**: Page 3, Page 4, Page 6, Page 7 | [Open PDF at Page 3](Technical_Document.pdf#page=4)
+- **Sprint 8 Legacy Test Cases**: Page 3 | [Open PDF at Page 3](Test_Cases_Sprint8.pdf#page=4)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 1, Page 2, Page 3, Page 5 | [Open PDF at Page 1](Uninstall_Guide.pdf#page=2)
+- **Local Food AI - Network Connection URL Directory**: Page 4 | [Open PDF at Page 4](URL_Formats.pdf#page=5)
+- **Local Food AI - User Description & Functional Guide**: Page 4 | [Open PDF at Page 4](User_Description.pdf#page=5)
+- **Local Food AI - Clinician User Manual**: Page 5 | [Open PDF at Page 5](User_Guide.pdf#page=6)
+- **Documentation Home**: Page 3 | [Open PDF at Page 3](Wiki_Home.pdf#page=4)
+- **WSL Deployment Runbook**: Page 2, Page 3 | [Open PDF at Page 2](WSL_Deployment.pdf#page=3)
+- **Zabbix Telemetry & Monitoring Guide**: Page 2, Page 4 | [Open PDF at Page 2](zabbix_monitoring.pdf#page=3)
+
+### Firewall
+
+- **Local Food AI - Architecture Map**: Page 5 | [Open PDF at Page 5](architecture.pdf#page=6)
+- **Database Backup and Restore Procedure**: Page 5 | [Open PDF at Page 5](Backup_Procedure.pdf#page=6)
+- **Data Ingestion Pipeline**: Page 3 | [Open PDF at Page 3](Data_Ingestion.pdf#page=4)
+- **Disaster Recovery & Backup Plan**: Page 5 | [Open PDF at Page 5](disaster_recovery_plan.pdf#page=6)
+- **Distributed Deployment Guide**: Page 2, Page 5 | [Open PDF at Page 2](distributed_deployment.pdf#page=3)
+- **Docker Connection & Health Check Guide**: Page 4 | [Open PDF at Page 4](docker_connection.pdf#page=5)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 5 | [Open PDF at Page 5](Env_Configuration.pdf#page=6)
+- **Final Project Report (Living Document)**: Page 4 | [Open PDF at Page 4](Final_Report.pdf#page=5)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 6 | [Open PDF at Page 6](Installation_Guide.pdf#page=7)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 9 | [Open PDF at Page 9](Operator_Installation_Guide.pdf#page=10)
+- **Local Food AI - Capstone Technical Presentation**: Page 7 | [Open PDF at Page 7](Presentation_Technical.pdf#page=8)
+- **Local Food AI - Clinician User Manual Presentation**: Page 6 | [Open PDF at Page 6](Presentation_User.pdf#page=7)
+- **Capstone Project Report & File Documentation**: Page 10 | [Open PDF at Page 10](project_report.pdf#page=11)
+- **Recommendations for Future Agile Projects**: Page 4 | [Open PDF at Page 4](Recommendations.pdf#page=5)
+- **Local Food AI: Retro Planning**: Page 3 | [Open PDF at Page 3](retro_planning.pdf#page=4)
+- **Scrum Artifacts**: Page 3 | [Open PDF at Page 3](Scrum_Artifacts.pdf#page=4)
+- **Daily Scrums**: Page 3 | [Open PDF at Page 3](Scrum_Daily.pdf#page=4)
+- **Sprint Plans**: Page 3 | [Open PDF at Page 3](Scrum_Plan.pdf#page=4)
+- **Sprint Retrospectives**: Page 3 | [Open PDF at Page 3](Scrum_Retro.pdf#page=4)
+- **Sprint Reviews**: Page 3 | [Open PDF at Page 3](Scrum_Review.pdf#page=4)
+- **Scrum Wiki Master List & Index Portal**: Page 4 | [Open PDF at Page 4](Scrum_Wiki.pdf#page=5)
+- **Infrastructure Stop & Start Operational Procedures**: Page 5 | [Open PDF at Page 5](Start_Stop_Procedures.pdf#page=6)
+- **Taiga Agile Audit Report**: Page 6 | [Open PDF at Page 6](taiga_audit_report.pdf#page=7)
+- **Local Food AI - Capstone Technical Document**: Page 7 | [Open PDF at Page 7](Technical_Document.pdf#page=8)
+- **Sprint 8 Legacy Test Cases**: Page 3 | [Open PDF at Page 3](Test_Cases_Sprint8.pdf#page=4)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 5 | [Open PDF at Page 5](Uninstall_Guide.pdf#page=6)
+- **Local Food AI - Network Connection URL Directory**: Page 4 | [Open PDF at Page 4](URL_Formats.pdf#page=5)
+- **Local Food AI - User Description & Functional Guide**: Page 4 | [Open PDF at Page 4](User_Description.pdf#page=5)
+- **Local Food AI - Clinician User Manual**: Page 5 | [Open PDF at Page 5](User_Guide.pdf#page=6)
+- **Documentation Home**: Page 3 | [Open PDF at Page 3](Wiki_Home.pdf#page=4)
+- **WSL Deployment Runbook**: Page 3 | [Open PDF at Page 3](WSL_Deployment.pdf#page=4)
+- **Zabbix Telemetry & Monitoring Guide**: Page 4 | [Open PDF at Page 4](zabbix_monitoring.pdf#page=5)
+
+### LLM
+
+- **Local Food AI - Architecture Map**: Page 4, Page 5 | [Open PDF at Page 4](architecture.pdf#page=5)
+- **Database Backup and Restore Procedure**: Page 4, Page 5 | [Open PDF at Page 4](Backup_Procedure.pdf#page=5)
+- **Data Ingestion Pipeline**: Page 2, Page 3 | [Open PDF at Page 2](Data_Ingestion.pdf#page=3)
+- **Disaster Recovery & Backup Plan**: Page 3, Page 5 | [Open PDF at Page 3](disaster_recovery_plan.pdf#page=4)
+- **Distributed Deployment Guide**: Page 2, Page 4, Page 5 | [Open PDF at Page 2](distributed_deployment.pdf#page=3)
+- **Docker Connection & Health Check Guide**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](docker_connection.pdf#page=3)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 2, Page 4, Page 5 | [Open PDF at Page 2](Env_Configuration.pdf#page=3)
+- **Final Project Report (Living Document)**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](Final_Report.pdf#page=3)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 4, Page 5, Page 6 | [Open PDF at Page 4](Installation_Guide.pdf#page=5)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 8, Page 9 | [Open PDF at Page 8](Operator_Installation_Guide.pdf#page=9)
+- **Local Food AI - Capstone Technical Presentation**: Page 1, Page 2, Page 3, Page 6, Page 7 | [Open PDF at Page 1](Presentation_Technical.pdf#page=2)
+- **Local Food AI - Clinician User Manual Presentation**: Page 2, Page 4, Page 5, Page 6 | [Open PDF at Page 2](Presentation_User.pdf#page=3)
+- **Capstone Project Report & File Documentation**: Page 9, Page 10 | [Open PDF at Page 9](project_report.pdf#page=10)
+- **Recommendations for Future Agile Projects**: Page 3, Page 4 | [Open PDF at Page 3](Recommendations.pdf#page=4)
+- **Local Food AI: Retro Planning**: Page 2, Page 3 | [Open PDF at Page 2](retro_planning.pdf#page=3)
+- **Scrum Artifacts**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Artifacts.pdf#page=3)
+- **Daily Scrums**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Daily.pdf#page=3)
+- **Sprint Plans**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Plan.pdf#page=3)
+- **Sprint Retrospectives**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Retro.pdf#page=3)
+- **Sprint Reviews**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Review.pdf#page=3)
+- **Scrum Wiki Master List & Index Portal**: Page 3, Page 4 | [Open PDF at Page 3](Scrum_Wiki.pdf#page=4)
+- **Infrastructure Stop & Start Operational Procedures**: Page 4, Page 5 | [Open PDF at Page 4](Start_Stop_Procedures.pdf#page=5)
+- **Taiga Agile Audit Report**: Page 4, Page 5, Page 6 | [Open PDF at Page 4](taiga_audit_report.pdf#page=5)
+- **Local Food AI - Capstone Technical Document**: Page 1, Page 2, Page 3, Page 5, Page 6, Page 7 | [Open PDF at Page 1](Technical_Document.pdf#page=2)
+- **Sprint 8 Legacy Test Cases**: Page 2, Page 3 | [Open PDF at Page 2](Test_Cases_Sprint8.pdf#page=3)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 4, Page 5 | [Open PDF at Page 4](Uninstall_Guide.pdf#page=5)
+- **Local Food AI - Network Connection URL Directory**: Page 3, Page 4 | [Open PDF at Page 3](URL_Formats.pdf#page=4)
+- **Local Food AI - User Description & Functional Guide**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](User_Description.pdf#page=3)
+- **Local Food AI - Clinician User Manual**: Page 2, Page 4, Page 5 | [Open PDF at Page 2](User_Guide.pdf#page=3)
+- **Documentation Home**: Page 2, Page 3 | [Open PDF at Page 2](Wiki_Home.pdf#page=3)
+- **WSL Deployment Runbook**: Page 2, Page 3 | [Open PDF at Page 2](WSL_Deployment.pdf#page=3)
+- **Zabbix Telemetry & Monitoring Guide**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](zabbix_monitoring.pdf#page=3)
+
+### Minerals
+
+- **Local Food AI - Architecture Map**: Page 3, Page 5 | [Open PDF at Page 3](architecture.pdf#page=4)
+- **Database Backup and Restore Procedure**: Page 5 | [Open PDF at Page 5](Backup_Procedure.pdf#page=6)
+- **Data Ingestion Pipeline**: Page 3 | [Open PDF at Page 3](Data_Ingestion.pdf#page=4)
+- **Disaster Recovery & Backup Plan**: Page 5 | [Open PDF at Page 5](disaster_recovery_plan.pdf#page=6)
+- **Distributed Deployment Guide**: Page 5 | [Open PDF at Page 5](distributed_deployment.pdf#page=6)
+- **Docker Connection & Health Check Guide**: Page 4 | [Open PDF at Page 4](docker_connection.pdf#page=5)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 5 | [Open PDF at Page 5](Env_Configuration.pdf#page=6)
+- **Final Project Report (Living Document)**: Page 4 | [Open PDF at Page 4](Final_Report.pdf#page=5)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 6 | [Open PDF at Page 6](Installation_Guide.pdf#page=7)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 9 | [Open PDF at Page 9](Operator_Installation_Guide.pdf#page=10)
+- **Local Food AI - Capstone Technical Presentation**: Page 3, Page 7 | [Open PDF at Page 3](Presentation_Technical.pdf#page=4)
+- **Local Food AI - Clinician User Manual Presentation**: Page 6 | [Open PDF at Page 6](Presentation_User.pdf#page=7)
+- **Capstone Project Report & File Documentation**: Page 10 | [Open PDF at Page 10](project_report.pdf#page=11)
+- **Recommendations for Future Agile Projects**: Page 4 | [Open PDF at Page 4](Recommendations.pdf#page=5)
+- **Local Food AI: Retro Planning**: Page 3 | [Open PDF at Page 3](retro_planning.pdf#page=4)
+- **Scrum Artifacts**: Page 3 | [Open PDF at Page 3](Scrum_Artifacts.pdf#page=4)
+- **Daily Scrums**: Page 3 | [Open PDF at Page 3](Scrum_Daily.pdf#page=4)
+- **Sprint Plans**: Page 3 | [Open PDF at Page 3](Scrum_Plan.pdf#page=4)
+- **Sprint Retrospectives**: Page 3 | [Open PDF at Page 3](Scrum_Retro.pdf#page=4)
+- **Sprint Reviews**: Page 3 | [Open PDF at Page 3](Scrum_Review.pdf#page=4)
+- **Scrum Wiki Master List & Index Portal**: Page 4 | [Open PDF at Page 4](Scrum_Wiki.pdf#page=5)
+- **Infrastructure Stop & Start Operational Procedures**: Page 5 | [Open PDF at Page 5](Start_Stop_Procedures.pdf#page=6)
+- **Taiga Agile Audit Report**: Page 6 | [Open PDF at Page 6](taiga_audit_report.pdf#page=7)
+- **Local Food AI - Capstone Technical Document**: Page 7 | [Open PDF at Page 7](Technical_Document.pdf#page=8)
+- **Sprint 8 Legacy Test Cases**: Page 3 | [Open PDF at Page 3](Test_Cases_Sprint8.pdf#page=4)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 5 | [Open PDF at Page 5](Uninstall_Guide.pdf#page=6)
+- **Local Food AI - Network Connection URL Directory**: Page 4 | [Open PDF at Page 4](URL_Formats.pdf#page=5)
+- **Local Food AI - User Description & Functional Guide**: Page 4 | [Open PDF at Page 4](User_Description.pdf#page=5)
+- **Local Food AI - Clinician User Manual**: Page 5 | [Open PDF at Page 5](User_Guide.pdf#page=6)
+- **Documentation Home**: Page 3 | [Open PDF at Page 3](Wiki_Home.pdf#page=4)
+- **WSL Deployment Runbook**: Page 3 | [Open PDF at Page 3](WSL_Deployment.pdf#page=4)
+- **Zabbix Telemetry & Monitoring Guide**: Page 4 | [Open PDF at Page 4](zabbix_monitoring.pdf#page=5)
+
+### MySQL
+
+- **Local Food AI - Architecture Map**: Page 3, Page 5 | [Open PDF at Page 3](architecture.pdf#page=4)
+- **Database Backup and Restore Procedure**: Page 1, Page 2, Page 3, Page 5 | [Open PDF at Page 1](Backup_Procedure.pdf#page=2)
+- **Data Ingestion Pipeline**: Page 3 | [Open PDF at Page 3](Data_Ingestion.pdf#page=4)
+- **Disaster Recovery & Backup Plan**: Page 1, Page 2, Page 3, Page 5 | [Open PDF at Page 1](disaster_recovery_plan.pdf#page=2)
+- **Distributed Deployment Guide**: Page 2, Page 3, Page 5 | [Open PDF at Page 2](distributed_deployment.pdf#page=3)
+- **Docker Connection & Health Check Guide**: Page 1, Page 2, Page 3, Page 4 | [Open PDF at Page 1](docker_connection.pdf#page=2)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 1, Page 2, Page 3, Page 5 | [Open PDF at Page 1](Env_Configuration.pdf#page=2)
+- **Final Project Report (Living Document)**: Page 2, Page 4 | [Open PDF at Page 2](Final_Report.pdf#page=3)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 6 | [Open PDF at Page 6](Installation_Guide.pdf#page=7)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 3, Page 9 | [Open PDF at Page 3](Operator_Installation_Guide.pdf#page=4)
+- **Local Food AI - Capstone Technical Presentation**: Page 3, Page 5, Page 7 | [Open PDF at Page 3](Presentation_Technical.pdf#page=4)
+- **Local Food AI - Clinician User Manual Presentation**: Page 6 | [Open PDF at Page 6](Presentation_User.pdf#page=7)
+- **Capstone Project Report & File Documentation**: Page 2, Page 3, Page 4, Page 5, Page 6, Page 7, Page 10 | [Open PDF at Page 2](project_report.pdf#page=3)
+- **Recommendations for Future Agile Projects**: Page 4 | [Open PDF at Page 4](Recommendations.pdf#page=5)
+- **Local Food AI: Retro Planning**: Page 3 | [Open PDF at Page 3](retro_planning.pdf#page=4)
+- **Scrum Artifacts**: Page 3 | [Open PDF at Page 3](Scrum_Artifacts.pdf#page=4)
+- **Daily Scrums**: Page 3 | [Open PDF at Page 3](Scrum_Daily.pdf#page=4)
+- **Sprint Plans**: Page 3 | [Open PDF at Page 3](Scrum_Plan.pdf#page=4)
+- **Sprint Retrospectives**: Page 3 | [Open PDF at Page 3](Scrum_Retro.pdf#page=4)
+- **Sprint Reviews**: Page 3 | [Open PDF at Page 3](Scrum_Review.pdf#page=4)
+- **Scrum Wiki Master List & Index Portal**: Page 4 | [Open PDF at Page 4](Scrum_Wiki.pdf#page=5)
+- **Infrastructure Stop & Start Operational Procedures**: Page 1, Page 3, Page 4, Page 5 | [Open PDF at Page 1](Start_Stop_Procedures.pdf#page=2)
+- **Taiga Agile Audit Report**: Page 4, Page 6 | [Open PDF at Page 4](taiga_audit_report.pdf#page=5)
+- **Local Food AI - Capstone Technical Document**: Page 2, Page 3, Page 4, Page 5, Page 6, Page 7 | [Open PDF at Page 2](Technical_Document.pdf#page=3)
+- **Sprint 8 Legacy Test Cases**: Page 3 | [Open PDF at Page 3](Test_Cases_Sprint8.pdf#page=4)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 2, Page 3, Page 5 | [Open PDF at Page 2](Uninstall_Guide.pdf#page=3)
+- **Local Food AI - Network Connection URL Directory**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](URL_Formats.pdf#page=3)
+- **Local Food AI - User Description & Functional Guide**: Page 4 | [Open PDF at Page 4](User_Description.pdf#page=5)
+- **Local Food AI - Clinician User Manual**: Page 5 | [Open PDF at Page 5](User_Guide.pdf#page=6)
+- **Documentation Home**: Page 3 | [Open PDF at Page 3](Wiki_Home.pdf#page=4)
+- **WSL Deployment Runbook**: Page 3 | [Open PDF at Page 3](WSL_Deployment.pdf#page=4)
+- **Zabbix Telemetry & Monitoring Guide**: Page 4 | [Open PDF at Page 4](zabbix_monitoring.pdf#page=5)
+
+### Nginx
+
+- **Local Food AI - Architecture Map**: Page 5 | [Open PDF at Page 5](architecture.pdf#page=6)
+- **Database Backup and Restore Procedure**: Page 5 | [Open PDF at Page 5](Backup_Procedure.pdf#page=6)
+- **Data Ingestion Pipeline**: Page 3 | [Open PDF at Page 3](Data_Ingestion.pdf#page=4)
+- **Disaster Recovery & Backup Plan**: Page 3, Page 5 | [Open PDF at Page 3](disaster_recovery_plan.pdf#page=4)
+- **Distributed Deployment Guide**: Page 2, Page 3, Page 5 | [Open PDF at Page 2](distributed_deployment.pdf#page=3)
+- **Docker Connection & Health Check Guide**: Page 4 | [Open PDF at Page 4](docker_connection.pdf#page=5)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 5 | [Open PDF at Page 5](Env_Configuration.pdf#page=6)
+- **Final Project Report (Living Document)**: Page 2, Page 4 | [Open PDF at Page 2](Final_Report.pdf#page=3)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 6 | [Open PDF at Page 6](Installation_Guide.pdf#page=7)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 9 | [Open PDF at Page 9](Operator_Installation_Guide.pdf#page=10)
+- **Local Food AI - Capstone Technical Presentation**: Page 5, Page 7 | [Open PDF at Page 5](Presentation_Technical.pdf#page=6)
+- **Local Food AI - Clinician User Manual Presentation**: Page 6 | [Open PDF at Page 6](Presentation_User.pdf#page=7)
+- **Capstone Project Report & File Documentation**: Page 2, Page 6, Page 9, Page 10 | [Open PDF at Page 2](project_report.pdf#page=3)
+- **Recommendations for Future Agile Projects**: Page 4 | [Open PDF at Page 4](Recommendations.pdf#page=5)
+- **Local Food AI: Retro Planning**: Page 3 | [Open PDF at Page 3](retro_planning.pdf#page=4)
+- **Scrum Artifacts**: Page 3 | [Open PDF at Page 3](Scrum_Artifacts.pdf#page=4)
+- **Daily Scrums**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Daily.pdf#page=3)
+- **Sprint Plans**: Page 3 | [Open PDF at Page 3](Scrum_Plan.pdf#page=4)
+- **Sprint Retrospectives**: Page 3 | [Open PDF at Page 3](Scrum_Retro.pdf#page=4)
+- **Sprint Reviews**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Review.pdf#page=3)
+- **Scrum Wiki Master List & Index Portal**: Page 4 | [Open PDF at Page 4](Scrum_Wiki.pdf#page=5)
+- **Infrastructure Stop & Start Operational Procedures**: Page 1, Page 3, Page 5 | [Open PDF at Page 1](Start_Stop_Procedures.pdf#page=2)
+- **Taiga Agile Audit Report**: Page 6 | [Open PDF at Page 6](taiga_audit_report.pdf#page=7)
+- **Local Food AI - Capstone Technical Document**: Page 2, Page 6, Page 7 | [Open PDF at Page 2](Technical_Document.pdf#page=3)
+- **Sprint 8 Legacy Test Cases**: Page 3 | [Open PDF at Page 3](Test_Cases_Sprint8.pdf#page=4)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 2, Page 3, Page 5 | [Open PDF at Page 2](Uninstall_Guide.pdf#page=3)
+- **Local Food AI - Network Connection URL Directory**: Page 2, Page 4 | [Open PDF at Page 2](URL_Formats.pdf#page=3)
+- **Local Food AI - User Description & Functional Guide**: Page 4 | [Open PDF at Page 4](User_Description.pdf#page=5)
+- **Local Food AI - Clinician User Manual**: Page 5 | [Open PDF at Page 5](User_Guide.pdf#page=6)
+- **Documentation Home**: Page 3 | [Open PDF at Page 3](Wiki_Home.pdf#page=4)
+- **WSL Deployment Runbook**: Page 3 | [Open PDF at Page 3](WSL_Deployment.pdf#page=4)
+- **Zabbix Telemetry & Monitoring Guide**: Page 4 | [Open PDF at Page 4](zabbix_monitoring.pdf#page=5)
+
+### Ollama
+
+- **Local Food AI - Architecture Map**: Page 3, Page 4, Page 5 | [Open PDF at Page 3](architecture.pdf#page=4)
+- **Database Backup and Restore Procedure**: Page 4, Page 5 | [Open PDF at Page 4](Backup_Procedure.pdf#page=5)
+- **Data Ingestion Pipeline**: Page 2, Page 3 | [Open PDF at Page 2](Data_Ingestion.pdf#page=3)
+- **Disaster Recovery & Backup Plan**: Page 3, Page 5 | [Open PDF at Page 3](disaster_recovery_plan.pdf#page=4)
+- **Distributed Deployment Guide**: Page 4, Page 5 | [Open PDF at Page 4](distributed_deployment.pdf#page=5)
+- **Docker Connection & Health Check Guide**: Page 1, Page 2, Page 3, Page 4 | [Open PDF at Page 1](docker_connection.pdf#page=2)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 2, Page 4, Page 5 | [Open PDF at Page 2](Env_Configuration.pdf#page=3)
+- **Final Project Report (Living Document)**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](Final_Report.pdf#page=3)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 5, Page 6 | [Open PDF at Page 5](Installation_Guide.pdf#page=6)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 1, Page 3, Page 4, Page 5, Page 6, Page 7, Page 8, Page 9 | [Open PDF at Page 1](Operator_Installation_Guide.pdf#page=2)
+- **Local Food AI - Capstone Technical Presentation**: Page 3, Page 6, Page 7 | [Open PDF at Page 3](Presentation_Technical.pdf#page=4)
+- **Local Food AI - Clinician User Manual Presentation**: Page 5, Page 6 | [Open PDF at Page 5](Presentation_User.pdf#page=6)
+- **Capstone Project Report & File Documentation**: Page 2, Page 3, Page 5, Page 6, Page 9, Page 10 | [Open PDF at Page 2](project_report.pdf#page=3)
+- **Recommendations for Future Agile Projects**: Page 3, Page 4 | [Open PDF at Page 3](Recommendations.pdf#page=4)
+- **Local Food AI: Retro Planning**: Page 2, Page 3 | [Open PDF at Page 2](retro_planning.pdf#page=3)
+- **Scrum Artifacts**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Artifacts.pdf#page=3)
+- **Daily Scrums**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Daily.pdf#page=3)
+- **Sprint Plans**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Plan.pdf#page=3)
+- **Sprint Retrospectives**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Retro.pdf#page=3)
+- **Sprint Reviews**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Review.pdf#page=3)
+- **Scrum Wiki Master List & Index Portal**: Page 3, Page 4 | [Open PDF at Page 3](Scrum_Wiki.pdf#page=4)
+- **Infrastructure Stop & Start Operational Procedures**: Page 1, Page 3, Page 4, Page 5 | [Open PDF at Page 1](Start_Stop_Procedures.pdf#page=2)
+- **Taiga Agile Audit Report**: Page 4, Page 5, Page 6 | [Open PDF at Page 4](taiga_audit_report.pdf#page=5)
+- **Local Food AI - Capstone Technical Document**: Page 2, Page 5, Page 6, Page 7 | [Open PDF at Page 2](Technical_Document.pdf#page=3)
+- **Sprint 8 Legacy Test Cases**: Page 2, Page 3 | [Open PDF at Page 2](Test_Cases_Sprint8.pdf#page=3)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 2, Page 3, Page 4, Page 5 | [Open PDF at Page 2](Uninstall_Guide.pdf#page=3)
+- **Local Food AI - Network Connection URL Directory**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](URL_Formats.pdf#page=3)
+- **Local Food AI - User Description & Functional Guide**: Page 3, Page 4 | [Open PDF at Page 3](User_Description.pdf#page=4)
+- **Local Food AI - Clinician User Manual**: Page 4, Page 5 | [Open PDF at Page 4](User_Guide.pdf#page=5)
+- **Documentation Home**: Page 2, Page 3 | [Open PDF at Page 2](Wiki_Home.pdf#page=3)
+- **WSL Deployment Runbook**: Page 2, Page 3 | [Open PDF at Page 2](WSL_Deployment.pdf#page=3)
+- **Zabbix Telemetry & Monitoring Guide**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](zabbix_monitoring.pdf#page=3)
+
+### RAG
+
+- **Local Food AI - Architecture Map**: Page 2, Page 3, Page 5 | [Open PDF at Page 2](architecture.pdf#page=3)
+- **Database Backup and Restore Procedure**: Page 2, Page 5 | [Open PDF at Page 2](Backup_Procedure.pdf#page=3)
+- **Data Ingestion Pipeline**: Page 3 | [Open PDF at Page 3](Data_Ingestion.pdf#page=4)
+- **Disaster Recovery & Backup Plan**: Page 5 | [Open PDF at Page 5](disaster_recovery_plan.pdf#page=6)
+- **Distributed Deployment Guide**: Page 5 | [Open PDF at Page 5](distributed_deployment.pdf#page=6)
+- **Docker Connection & Health Check Guide**: Page 4 | [Open PDF at Page 4](docker_connection.pdf#page=5)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 5 | [Open PDF at Page 5](Env_Configuration.pdf#page=6)
+- **Final Project Report (Living Document)**: Page 4 | [Open PDF at Page 4](Final_Report.pdf#page=5)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 6 | [Open PDF at Page 6](Installation_Guide.pdf#page=7)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 3, Page 4, Page 9 | [Open PDF at Page 3](Operator_Installation_Guide.pdf#page=4)
+- **Local Food AI - Capstone Technical Presentation**: Page 1, Page 2, Page 3, Page 7 | [Open PDF at Page 1](Presentation_Technical.pdf#page=2)
+- **Local Food AI - Clinician User Manual Presentation**: Page 3, Page 6 | [Open PDF at Page 3](Presentation_User.pdf#page=4)
+- **Capstone Project Report & File Documentation**: Page 2, Page 3, Page 7, Page 10 | [Open PDF at Page 2](project_report.pdf#page=3)
+- **Recommendations for Future Agile Projects**: Page 4 | [Open PDF at Page 4](Recommendations.pdf#page=5)
+- **Local Food AI: Retro Planning**: Page 3 | [Open PDF at Page 3](retro_planning.pdf#page=4)
+- **Scrum Artifacts**: Page 3 | [Open PDF at Page 3](Scrum_Artifacts.pdf#page=4)
+- **Daily Scrums**: Page 3 | [Open PDF at Page 3](Scrum_Daily.pdf#page=4)
+- **Sprint Plans**: Page 3 | [Open PDF at Page 3](Scrum_Plan.pdf#page=4)
+- **Sprint Retrospectives**: Page 3 | [Open PDF at Page 3](Scrum_Retro.pdf#page=4)
+- **Sprint Reviews**: Page 3 | [Open PDF at Page 3](Scrum_Review.pdf#page=4)
+- **Scrum Wiki Master List & Index Portal**: Page 4 | [Open PDF at Page 4](Scrum_Wiki.pdf#page=5)
+- **Infrastructure Stop & Start Operational Procedures**: Page 5 | [Open PDF at Page 5](Start_Stop_Procedures.pdf#page=6)
+- **Taiga Agile Audit Report**: Page 5, Page 6 | [Open PDF at Page 5](taiga_audit_report.pdf#page=6)
+- **Local Food AI - Capstone Technical Document**: Page 2, Page 5, Page 7 | [Open PDF at Page 2](Technical_Document.pdf#page=3)
+- **Sprint 8 Legacy Test Cases**: Page 2, Page 3 | [Open PDF at Page 2](Test_Cases_Sprint8.pdf#page=3)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 5 | [Open PDF at Page 5](Uninstall_Guide.pdf#page=6)
+- **Local Food AI - Network Connection URL Directory**: Page 4 | [Open PDF at Page 4](URL_Formats.pdf#page=5)
+- **Local Food AI - User Description & Functional Guide**: Page 2, Page 4 | [Open PDF at Page 2](User_Description.pdf#page=3)
+- **Local Food AI - Clinician User Manual**: Page 3, Page 5 | [Open PDF at Page 3](User_Guide.pdf#page=4)
+- **Documentation Home**: Page 3 | [Open PDF at Page 3](Wiki_Home.pdf#page=4)
+- **WSL Deployment Runbook**: Page 3 | [Open PDF at Page 3](WSL_Deployment.pdf#page=4)
+- **Zabbix Telemetry & Monitoring Guide**: Page 2, Page 4 | [Open PDF at Page 2](zabbix_monitoring.pdf#page=3)
+
+### SMTP
+
+- **Local Food AI - Architecture Map**: Page 5 | [Open PDF at Page 5](architecture.pdf#page=6)
+- **Database Backup and Restore Procedure**: Page 5 | [Open PDF at Page 5](Backup_Procedure.pdf#page=6)
+- **Data Ingestion Pipeline**: Page 3 | [Open PDF at Page 3](Data_Ingestion.pdf#page=4)
+- **Disaster Recovery & Backup Plan**: Page 5 | [Open PDF at Page 5](disaster_recovery_plan.pdf#page=6)
+- **Distributed Deployment Guide**: Page 5 | [Open PDF at Page 5](distributed_deployment.pdf#page=6)
+- **Docker Connection & Health Check Guide**: Page 4 | [Open PDF at Page 4](docker_connection.pdf#page=5)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 3, Page 4, Page 5 | [Open PDF at Page 3](Env_Configuration.pdf#page=4)
+- **Final Project Report (Living Document)**: Page 4 | [Open PDF at Page 4](Final_Report.pdf#page=5)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 6 | [Open PDF at Page 6](Installation_Guide.pdf#page=7)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 2, Page 3, Page 7, Page 9 | [Open PDF at Page 2](Operator_Installation_Guide.pdf#page=3)
+- **Local Food AI - Capstone Technical Presentation**: Page 5, Page 7 | [Open PDF at Page 5](Presentation_Technical.pdf#page=6)
+- **Local Food AI - Clinician User Manual Presentation**: Page 6 | [Open PDF at Page 6](Presentation_User.pdf#page=7)
+- **Capstone Project Report & File Documentation**: Page 4, Page 10 | [Open PDF at Page 4](project_report.pdf#page=5)
+- **Recommendations for Future Agile Projects**: Page 4 | [Open PDF at Page 4](Recommendations.pdf#page=5)
+- **Local Food AI: Retro Planning**: Page 3 | [Open PDF at Page 3](retro_planning.pdf#page=4)
+- **Scrum Artifacts**: Page 3 | [Open PDF at Page 3](Scrum_Artifacts.pdf#page=4)
+- **Daily Scrums**: Page 3 | [Open PDF at Page 3](Scrum_Daily.pdf#page=4)
+- **Sprint Plans**: Page 3 | [Open PDF at Page 3](Scrum_Plan.pdf#page=4)
+- **Sprint Retrospectives**: Page 3 | [Open PDF at Page 3](Scrum_Retro.pdf#page=4)
+- **Sprint Reviews**: Page 3 | [Open PDF at Page 3](Scrum_Review.pdf#page=4)
+- **Scrum Wiki Master List & Index Portal**: Page 4 | [Open PDF at Page 4](Scrum_Wiki.pdf#page=5)
+- **Infrastructure Stop & Start Operational Procedures**: Page 5 | [Open PDF at Page 5](Start_Stop_Procedures.pdf#page=6)
+- **Taiga Agile Audit Report**: Page 6 | [Open PDF at Page 6](taiga_audit_report.pdf#page=7)
+- **Local Food AI - Capstone Technical Document**: Page 7 | [Open PDF at Page 7](Technical_Document.pdf#page=8)
+- **Sprint 8 Legacy Test Cases**: Page 3 | [Open PDF at Page 3](Test_Cases_Sprint8.pdf#page=4)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 5 | [Open PDF at Page 5](Uninstall_Guide.pdf#page=6)
+- **Local Food AI - Network Connection URL Directory**: Page 4 | [Open PDF at Page 4](URL_Formats.pdf#page=5)
+- **Local Food AI - User Description & Functional Guide**: Page 4 | [Open PDF at Page 4](User_Description.pdf#page=5)
+- **Local Food AI - Clinician User Manual**: Page 5 | [Open PDF at Page 5](User_Guide.pdf#page=6)
+- **Documentation Home**: Page 3 | [Open PDF at Page 3](Wiki_Home.pdf#page=4)
+- **WSL Deployment Runbook**: Page 3 | [Open PDF at Page 3](WSL_Deployment.pdf#page=4)
+- **Zabbix Telemetry & Monitoring Guide**: Page 4 | [Open PDF at Page 4](zabbix_monitoring.pdf#page=5)
+
+### Security
+
+- **Local Food AI - Architecture Map**: Page 5 | [Open PDF at Page 5](architecture.pdf#page=6)
+- **Database Backup and Restore Procedure**: Page 5 | [Open PDF at Page 5](Backup_Procedure.pdf#page=6)
+- **Data Ingestion Pipeline**: Page 3 | [Open PDF at Page 3](Data_Ingestion.pdf#page=4)
+- **Disaster Recovery & Backup Plan**: Page 5 | [Open PDF at Page 5](disaster_recovery_plan.pdf#page=6)
+- **Distributed Deployment Guide**: Page 5 | [Open PDF at Page 5](distributed_deployment.pdf#page=6)
+- **Docker Connection & Health Check Guide**: Page 4 | [Open PDF at Page 4](docker_connection.pdf#page=5)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 3, Page 5 | [Open PDF at Page 3](Env_Configuration.pdf#page=4)
+- **Final Project Report (Living Document)**: Page 2, Page 4 | [Open PDF at Page 2](Final_Report.pdf#page=3)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 6 | [Open PDF at Page 6](Installation_Guide.pdf#page=7)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 6, Page 9 | [Open PDF at Page 6](Operator_Installation_Guide.pdf#page=7)
+- **Local Food AI - Capstone Technical Presentation**: Page 1, Page 2, Page 4, Page 5, Page 7 | [Open PDF at Page 1](Presentation_Technical.pdf#page=2)
+- **Local Food AI - Clinician User Manual Presentation**: Page 1, Page 4, Page 6 | [Open PDF at Page 1](Presentation_User.pdf#page=2)
+- **Capstone Project Report & File Documentation**: Page 4, Page 10 | [Open PDF at Page 4](project_report.pdf#page=5)
+- **Recommendations for Future Agile Projects**: Page 4 | [Open PDF at Page 4](Recommendations.pdf#page=5)
+- **Local Food AI: Retro Planning**: Page 3 | [Open PDF at Page 3](retro_planning.pdf#page=4)
+- **Scrum Artifacts**: Page 3 | [Open PDF at Page 3](Scrum_Artifacts.pdf#page=4)
+- **Daily Scrums**: Page 3 | [Open PDF at Page 3](Scrum_Daily.pdf#page=4)
+- **Sprint Plans**: Page 3 | [Open PDF at Page 3](Scrum_Plan.pdf#page=4)
+- **Sprint Retrospectives**: Page 3 | [Open PDF at Page 3](Scrum_Retro.pdf#page=4)
+- **Sprint Reviews**: Page 3 | [Open PDF at Page 3](Scrum_Review.pdf#page=4)
+- **Scrum Wiki Master List & Index Portal**: Page 4 | [Open PDF at Page 4](Scrum_Wiki.pdf#page=5)
+- **Infrastructure Stop & Start Operational Procedures**: Page 5 | [Open PDF at Page 5](Start_Stop_Procedures.pdf#page=6)
+- **Taiga Agile Audit Report**: Page 3, Page 6 | [Open PDF at Page 3](taiga_audit_report.pdf#page=4)
+- **Local Food AI - Capstone Technical Document**: Page 4, Page 7 | [Open PDF at Page 4](Technical_Document.pdf#page=5)
+- **Sprint 8 Legacy Test Cases**: Page 3 | [Open PDF at Page 3](Test_Cases_Sprint8.pdf#page=4)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 5 | [Open PDF at Page 5](Uninstall_Guide.pdf#page=6)
+- **Local Food AI - Network Connection URL Directory**: Page 4 | [Open PDF at Page 4](URL_Formats.pdf#page=5)
+- **Local Food AI - User Description & Functional Guide**: Page 4 | [Open PDF at Page 4](User_Description.pdf#page=5)
+- **Local Food AI - Clinician User Manual**: Page 1, Page 2, Page 5 | [Open PDF at Page 1](User_Guide.pdf#page=2)
+- **Documentation Home**: Page 3 | [Open PDF at Page 3](Wiki_Home.pdf#page=4)
+- **WSL Deployment Runbook**: Page 3 | [Open PDF at Page 3](WSL_Deployment.pdf#page=4)
+- **Zabbix Telemetry & Monitoring Guide**: Page 4 | [Open PDF at Page 4](zabbix_monitoring.pdf#page=5)
+
+### Streamlit
+
+- **Local Food AI - Architecture Map**: Page 3, Page 5 | [Open PDF at Page 3](architecture.pdf#page=4)
+- **Database Backup and Restore Procedure**: Page 5 | [Open PDF at Page 5](Backup_Procedure.pdf#page=6)
+- **Data Ingestion Pipeline**: Page 3 | [Open PDF at Page 3](Data_Ingestion.pdf#page=4)
+- **Disaster Recovery & Backup Plan**: Page 3, Page 5 | [Open PDF at Page 3](disaster_recovery_plan.pdf#page=4)
+- **Distributed Deployment Guide**: Page 2, Page 5 | [Open PDF at Page 2](distributed_deployment.pdf#page=3)
+- **Docker Connection & Health Check Guide**: Page 3, Page 4 | [Open PDF at Page 3](docker_connection.pdf#page=4)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 5 | [Open PDF at Page 5](Env_Configuration.pdf#page=6)
+- **Final Project Report (Living Document)**: Page 2, Page 4 | [Open PDF at Page 2](Final_Report.pdf#page=3)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 6 | [Open PDF at Page 6](Installation_Guide.pdf#page=7)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 3, Page 5, Page 7, Page 9 | [Open PDF at Page 3](Operator_Installation_Guide.pdf#page=4)
+- **Local Food AI - Capstone Technical Presentation**: Page 5, Page 7 | [Open PDF at Page 5](Presentation_Technical.pdf#page=6)
+- **Local Food AI - Clinician User Manual Presentation**: Page 6 | [Open PDF at Page 6](Presentation_User.pdf#page=7)
+- **Capstone Project Report & File Documentation**: Page 2, Page 3, Page 9, Page 10 | [Open PDF at Page 2](project_report.pdf#page=3)
+- **Recommendations for Future Agile Projects**: Page 4 | [Open PDF at Page 4](Recommendations.pdf#page=5)
+- **Local Food AI: Retro Planning**: Page 3 | [Open PDF at Page 3](retro_planning.pdf#page=4)
+- **Scrum Artifacts**: Page 3 | [Open PDF at Page 3](Scrum_Artifacts.pdf#page=4)
+- **Daily Scrums**: Page 3 | [Open PDF at Page 3](Scrum_Daily.pdf#page=4)
+- **Sprint Plans**: Page 3 | [Open PDF at Page 3](Scrum_Plan.pdf#page=4)
+- **Sprint Retrospectives**: Page 3 | [Open PDF at Page 3](Scrum_Retro.pdf#page=4)
+- **Sprint Reviews**: Page 3 | [Open PDF at Page 3](Scrum_Review.pdf#page=4)
+- **Scrum Wiki Master List & Index Portal**: Page 4 | [Open PDF at Page 4](Scrum_Wiki.pdf#page=5)
+- **Infrastructure Stop & Start Operational Procedures**: Page 1, Page 3, Page 5 | [Open PDF at Page 1](Start_Stop_Procedures.pdf#page=2)
+- **Taiga Agile Audit Report**: Page 6 | [Open PDF at Page 6](taiga_audit_report.pdf#page=7)
+- **Local Food AI - Capstone Technical Document**: Page 2, Page 5, Page 6, Page 7 | [Open PDF at Page 2](Technical_Document.pdf#page=3)
+- **Sprint 8 Legacy Test Cases**: Page 3 | [Open PDF at Page 3](Test_Cases_Sprint8.pdf#page=4)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 5 | [Open PDF at Page 5](Uninstall_Guide.pdf#page=6)
+- **Local Food AI - Network Connection URL Directory**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](URL_Formats.pdf#page=3)
+- **Local Food AI - User Description & Functional Guide**: Page 4 | [Open PDF at Page 4](User_Description.pdf#page=5)
+- **Local Food AI - Clinician User Manual**: Page 5 | [Open PDF at Page 5](User_Guide.pdf#page=6)
+- **Documentation Home**: Page 3 | [Open PDF at Page 3](Wiki_Home.pdf#page=4)
+- **WSL Deployment Runbook**: Page 3 | [Open PDF at Page 3](WSL_Deployment.pdf#page=4)
+- **Zabbix Telemetry & Monitoring Guide**: Page 4 | [Open PDF at Page 4](zabbix_monitoring.pdf#page=5)
+
+### Telemetry
+
+- **Local Food AI - Architecture Map**: Page 4, Page 5 | [Open PDF at Page 4](architecture.pdf#page=5)
+- **Database Backup and Restore Procedure**: Page 4, Page 5 | [Open PDF at Page 4](Backup_Procedure.pdf#page=5)
+- **Data Ingestion Pipeline**: Page 2, Page 3 | [Open PDF at Page 2](Data_Ingestion.pdf#page=3)
+- **Disaster Recovery & Backup Plan**: Page 3, Page 4, Page 5 | [Open PDF at Page 3](disaster_recovery_plan.pdf#page=4)
+- **Distributed Deployment Guide**: Page 4, Page 5 | [Open PDF at Page 4](distributed_deployment.pdf#page=5)
+- **Docker Connection & Health Check Guide**: Page 1, Page 2, Page 3, Page 4 | [Open PDF at Page 1](docker_connection.pdf#page=2)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 2, Page 4, Page 5 | [Open PDF at Page 2](Env_Configuration.pdf#page=3)
+- **Final Project Report (Living Document)**: Page 3, Page 4 | [Open PDF at Page 3](Final_Report.pdf#page=4)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 5, Page 6 | [Open PDF at Page 5](Installation_Guide.pdf#page=6)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 1, Page 6, Page 7, Page 8, Page 9 | [Open PDF at Page 1](Operator_Installation_Guide.pdf#page=2)
+- **Local Food AI - Capstone Technical Presentation**: Page 1, Page 2, Page 5, Page 6, Page 7 | [Open PDF at Page 1](Presentation_Technical.pdf#page=2)
+- **Local Food AI - Clinician User Manual Presentation**: Page 5, Page 6 | [Open PDF at Page 5](Presentation_User.pdf#page=6)
+- **Capstone Project Report & File Documentation**: Page 2, Page 4, Page 9, Page 10 | [Open PDF at Page 2](project_report.pdf#page=3)
+- **Recommendations for Future Agile Projects**: Page 3, Page 4 | [Open PDF at Page 3](Recommendations.pdf#page=4)
+- **Local Food AI: Retro Planning**: Page 2, Page 3 | [Open PDF at Page 2](retro_planning.pdf#page=3)
+- **Scrum Artifacts**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Artifacts.pdf#page=3)
+- **Daily Scrums**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Daily.pdf#page=3)
+- **Sprint Plans**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Plan.pdf#page=3)
+- **Sprint Retrospectives**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Retro.pdf#page=3)
+- **Sprint Reviews**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Review.pdf#page=3)
+- **Scrum Wiki Master List & Index Portal**: Page 3, Page 4 | [Open PDF at Page 3](Scrum_Wiki.pdf#page=4)
+- **Infrastructure Stop & Start Operational Procedures**: Page 4, Page 5 | [Open PDF at Page 4](Start_Stop_Procedures.pdf#page=5)
+- **Taiga Agile Audit Report**: Page 3, Page 4, Page 5, Page 6 | [Open PDF at Page 3](taiga_audit_report.pdf#page=4)
+- **Local Food AI - Capstone Technical Document**: Page 2, Page 6, Page 7 | [Open PDF at Page 2](Technical_Document.pdf#page=3)
+- **Sprint 8 Legacy Test Cases**: Page 2, Page 3 | [Open PDF at Page 2](Test_Cases_Sprint8.pdf#page=3)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 4, Page 5 | [Open PDF at Page 4](Uninstall_Guide.pdf#page=5)
+- **Local Food AI - Network Connection URL Directory**: Page 3, Page 4 | [Open PDF at Page 3](URL_Formats.pdf#page=4)
+- **Local Food AI - User Description & Functional Guide**: Page 3, Page 4 | [Open PDF at Page 3](User_Description.pdf#page=4)
+- **Local Food AI - Clinician User Manual**: Page 4, Page 5 | [Open PDF at Page 4](User_Guide.pdf#page=5)
+- **Documentation Home**: Page 2, Page 3 | [Open PDF at Page 2](Wiki_Home.pdf#page=3)
+- **WSL Deployment Runbook**: Page 2, Page 3 | [Open PDF at Page 2](WSL_Deployment.pdf#page=3)
+- **Zabbix Telemetry & Monitoring Guide**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](zabbix_monitoring.pdf#page=3)
+
+### Vitamins
+
+- **Local Food AI - Architecture Map**: Page 3, Page 5 | [Open PDF at Page 3](architecture.pdf#page=4)
+- **Database Backup and Restore Procedure**: Page 5 | [Open PDF at Page 5](Backup_Procedure.pdf#page=6)
+- **Data Ingestion Pipeline**: Page 3 | [Open PDF at Page 3](Data_Ingestion.pdf#page=4)
+- **Disaster Recovery & Backup Plan**: Page 5 | [Open PDF at Page 5](disaster_recovery_plan.pdf#page=6)
+- **Distributed Deployment Guide**: Page 5 | [Open PDF at Page 5](distributed_deployment.pdf#page=6)
+- **Docker Connection & Health Check Guide**: Page 4 | [Open PDF at Page 4](docker_connection.pdf#page=5)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 5 | [Open PDF at Page 5](Env_Configuration.pdf#page=6)
+- **Final Project Report (Living Document)**: Page 4 | [Open PDF at Page 4](Final_Report.pdf#page=5)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 6 | [Open PDF at Page 6](Installation_Guide.pdf#page=7)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 9 | [Open PDF at Page 9](Operator_Installation_Guide.pdf#page=10)
+- **Local Food AI - Capstone Technical Presentation**: Page 3, Page 7 | [Open PDF at Page 3](Presentation_Technical.pdf#page=4)
+- **Local Food AI - Clinician User Manual Presentation**: Page 6 | [Open PDF at Page 6](Presentation_User.pdf#page=7)
+- **Capstone Project Report & File Documentation**: Page 10 | [Open PDF at Page 10](project_report.pdf#page=11)
+- **Recommendations for Future Agile Projects**: Page 4 | [Open PDF at Page 4](Recommendations.pdf#page=5)
+- **Local Food AI: Retro Planning**: Page 3 | [Open PDF at Page 3](retro_planning.pdf#page=4)
+- **Scrum Artifacts**: Page 3 | [Open PDF at Page 3](Scrum_Artifacts.pdf#page=4)
+- **Daily Scrums**: Page 3 | [Open PDF at Page 3](Scrum_Daily.pdf#page=4)
+- **Sprint Plans**: Page 3 | [Open PDF at Page 3](Scrum_Plan.pdf#page=4)
+- **Sprint Retrospectives**: Page 3 | [Open PDF at Page 3](Scrum_Retro.pdf#page=4)
+- **Sprint Reviews**: Page 3 | [Open PDF at Page 3](Scrum_Review.pdf#page=4)
+- **Scrum Wiki Master List & Index Portal**: Page 4 | [Open PDF at Page 4](Scrum_Wiki.pdf#page=5)
+- **Infrastructure Stop & Start Operational Procedures**: Page 5 | [Open PDF at Page 5](Start_Stop_Procedures.pdf#page=6)
+- **Taiga Agile Audit Report**: Page 6 | [Open PDF at Page 6](taiga_audit_report.pdf#page=7)
+- **Local Food AI - Capstone Technical Document**: Page 7 | [Open PDF at Page 7](Technical_Document.pdf#page=8)
+- **Sprint 8 Legacy Test Cases**: Page 3 | [Open PDF at Page 3](Test_Cases_Sprint8.pdf#page=4)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 5 | [Open PDF at Page 5](Uninstall_Guide.pdf#page=6)
+- **Local Food AI - Network Connection URL Directory**: Page 4 | [Open PDF at Page 4](URL_Formats.pdf#page=5)
+- **Local Food AI - User Description & Functional Guide**: Page 4 | [Open PDF at Page 4](User_Description.pdf#page=5)
+- **Local Food AI - Clinician User Manual**: Page 5 | [Open PDF at Page 5](User_Guide.pdf#page=6)
+- **Documentation Home**: Page 3 | [Open PDF at Page 3](Wiki_Home.pdf#page=4)
+- **WSL Deployment Runbook**: Page 3 | [Open PDF at Page 3](WSL_Deployment.pdf#page=4)
+- **Zabbix Telemetry & Monitoring Guide**: Page 4 | [Open PDF at Page 4](zabbix_monitoring.pdf#page=5)
+
+### WSL
+
+- **Local Food AI - Architecture Map**: Page 3, Page 5 | [Open PDF at Page 3](architecture.pdf#page=4)
+- **Database Backup and Restore Procedure**: Page 5 | [Open PDF at Page 5](Backup_Procedure.pdf#page=6)
+- **Data Ingestion Pipeline**: Page 3 | [Open PDF at Page 3](Data_Ingestion.pdf#page=4)
+- **Disaster Recovery & Backup Plan**: Page 3, Page 5 | [Open PDF at Page 3](disaster_recovery_plan.pdf#page=4)
+- **Distributed Deployment Guide**: Page 2, Page 3, Page 5 | [Open PDF at Page 2](distributed_deployment.pdf#page=3)
+- **Docker Connection & Health Check Guide**: Page 1, Page 2, Page 4 | [Open PDF at Page 1](docker_connection.pdf#page=2)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 5 | [Open PDF at Page 5](Env_Configuration.pdf#page=6)
+- **Final Project Report (Living Document)**: Page 4 | [Open PDF at Page 4](Final_Report.pdf#page=5)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 1, Page 2, Page 3, Page 4, Page 6 | [Open PDF at Page 1](Installation_Guide.pdf#page=2)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 1, Page 3, Page 4, Page 5, Page 6, Page 7, Page 9 | [Open PDF at Page 1](Operator_Installation_Guide.pdf#page=2)
+- **Local Food AI - Capstone Technical Presentation**: Page 7 | [Open PDF at Page 7](Presentation_Technical.pdf#page=8)
+- **Local Food AI - Clinician User Manual Presentation**: Page 6 | [Open PDF at Page 6](Presentation_User.pdf#page=7)
+- **Capstone Project Report & File Documentation**: Page 3, Page 4, Page 5, Page 6, Page 7, Page 8, Page 10 | [Open PDF at Page 3](project_report.pdf#page=4)
+- **Recommendations for Future Agile Projects**: Page 2, Page 4 | [Open PDF at Page 2](Recommendations.pdf#page=3)
+- **Local Food AI: Retro Planning**: Page 3 | [Open PDF at Page 3](retro_planning.pdf#page=4)
+- **Scrum Artifacts**: Page 3 | [Open PDF at Page 3](Scrum_Artifacts.pdf#page=4)
+- **Daily Scrums**: Page 3 | [Open PDF at Page 3](Scrum_Daily.pdf#page=4)
+- **Sprint Plans**: Page 3 | [Open PDF at Page 3](Scrum_Plan.pdf#page=4)
+- **Sprint Retrospectives**: Page 3 | [Open PDF at Page 3](Scrum_Retro.pdf#page=4)
+- **Sprint Reviews**: Page 3 | [Open PDF at Page 3](Scrum_Review.pdf#page=4)
+- **Scrum Wiki Master List & Index Portal**: Page 3, Page 4 | [Open PDF at Page 3](Scrum_Wiki.pdf#page=4)
+- **Infrastructure Stop & Start Operational Procedures**: Page 5 | [Open PDF at Page 5](Start_Stop_Procedures.pdf#page=6)
+- **Taiga Agile Audit Report**: Page 2, Page 4, Page 6 | [Open PDF at Page 2](taiga_audit_report.pdf#page=3)
+- **Local Food AI - Capstone Technical Document**: Page 7 | [Open PDF at Page 7](Technical_Document.pdf#page=8)
+- **Sprint 8 Legacy Test Cases**: Page 3 | [Open PDF at Page 3](Test_Cases_Sprint8.pdf#page=4)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 1, Page 2, Page 3, Page 4, Page 5 | [Open PDF at Page 1](Uninstall_Guide.pdf#page=2)
+- **Local Food AI - Network Connection URL Directory**: Page 4 | [Open PDF at Page 4](URL_Formats.pdf#page=5)
+- **Local Food AI - User Description & Functional Guide**: Page 4 | [Open PDF at Page 4](User_Description.pdf#page=5)
+- **Local Food AI - Clinician User Manual**: Page 5 | [Open PDF at Page 5](User_Guide.pdf#page=6)
+- **Documentation Home**: Page 3 | [Open PDF at Page 3](Wiki_Home.pdf#page=4)
+- **WSL Deployment Runbook**: Page 2, Page 3 | [Open PDF at Page 2](WSL_Deployment.pdf#page=3)
+- **Zabbix Telemetry & Monitoring Guide**: Page 4 | [Open PDF at Page 4](zabbix_monitoring.pdf#page=5)
+
+### Zabbix
+
+- **Local Food AI - Architecture Map**: Page 3, Page 4, Page 5 | [Open PDF at Page 3](architecture.pdf#page=4)
+- **Database Backup and Restore Procedure**: Page 4, Page 5 | [Open PDF at Page 4](Backup_Procedure.pdf#page=5)
+- **Data Ingestion Pipeline**: Page 2, Page 3 | [Open PDF at Page 2](Data_Ingestion.pdf#page=3)
+- **Disaster Recovery & Backup Plan**: Page 3, Page 4, Page 5 | [Open PDF at Page 3](disaster_recovery_plan.pdf#page=4)
+- **Distributed Deployment Guide**: Page 2, Page 3, Page 4, Page 5 | [Open PDF at Page 2](distributed_deployment.pdf#page=3)
+- **Docker Connection & Health Check Guide**: Page 1, Page 2, Page 3, Page 4 | [Open PDF at Page 1](docker_connection.pdf#page=2)
+- **Local Food AI - Environment Variables Configuration Runbook**: Page 1, Page 3, Page 4, Page 5 | [Open PDF at Page 1](Env_Configuration.pdf#page=2)
+- **Final Project Report (Living Document)**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](Final_Report.pdf#page=3)
+- **Local Food AI - Detailed Installation and Deployment Guide**: Page 5, Page 6 | [Open PDF at Page 5](Installation_Guide.pdf#page=6)
+- **Local Food AI - Detailed Operator Installation Guide**: Page 1, Page 2, Page 3, Page 4, Page 6, Page 7, Page 8, Page 9 | [Open PDF at Page 1](Operator_Installation_Guide.pdf#page=2)
+- **Local Food AI - Capstone Technical Presentation**: Page 2, Page 5, Page 6, Page 7 | [Open PDF at Page 2](Presentation_Technical.pdf#page=3)
+- **Local Food AI - Clinician User Manual Presentation**: Page 5, Page 6 | [Open PDF at Page 5](Presentation_User.pdf#page=6)
+- **Capstone Project Report & File Documentation**: Page 2, Page 3, Page 4, Page 6, Page 9, Page 10 | [Open PDF at Page 2](project_report.pdf#page=3)
+- **Recommendations for Future Agile Projects**: Page 3, Page 4 | [Open PDF at Page 3](Recommendations.pdf#page=4)
+- **Local Food AI: Retro Planning**: Page 2, Page 3 | [Open PDF at Page 2](retro_planning.pdf#page=3)
+- **Scrum Artifacts**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Artifacts.pdf#page=3)
+- **Daily Scrums**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Daily.pdf#page=3)
+- **Sprint Plans**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Plan.pdf#page=3)
+- **Sprint Retrospectives**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Retro.pdf#page=3)
+- **Sprint Reviews**: Page 2, Page 3 | [Open PDF at Page 2](Scrum_Review.pdf#page=3)
+- **Scrum Wiki Master List & Index Portal**: Page 3, Page 4 | [Open PDF at Page 3](Scrum_Wiki.pdf#page=4)
+- **Infrastructure Stop & Start Operational Procedures**: Page 1, Page 3, Page 4, Page 5 | [Open PDF at Page 1](Start_Stop_Procedures.pdf#page=2)
+- **Taiga Agile Audit Report**: Page 3, Page 4, Page 5, Page 6 | [Open PDF at Page 3](taiga_audit_report.pdf#page=4)
+- **Local Food AI - Capstone Technical Document**: Page 2, Page 3, Page 5, Page 6, Page 7 | [Open PDF at Page 2](Technical_Document.pdf#page=3)
+- **Sprint 8 Legacy Test Cases**: Page 2, Page 3 | [Open PDF at Page 2](Test_Cases_Sprint8.pdf#page=3)
+- **Local Food AI - Uninstallation & Teardown Guide**: Page 2, Page 3, Page 4, Page 5 | [Open PDF at Page 2](Uninstall_Guide.pdf#page=3)
+- **Local Food AI - Network Connection URL Directory**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](URL_Formats.pdf#page=3)
+- **Local Food AI - User Description & Functional Guide**: Page 3, Page 4 | [Open PDF at Page 3](User_Description.pdf#page=4)
+- **Local Food AI - Clinician User Manual**: Page 4, Page 5 | [Open PDF at Page 4](User_Guide.pdf#page=5)
+- **Documentation Home**: Page 2, Page 3 | [Open PDF at Page 2](Wiki_Home.pdf#page=3)
+- **WSL Deployment Runbook**: Page 2, Page 3 | [Open PDF at Page 2](WSL_Deployment.pdf#page=3)
+- **Zabbix Telemetry & Monitoring Guide**: Page 2, Page 3, Page 4 | [Open PDF at Page 2](zabbix_monitoring.pdf#page=3)

BIN
docs/Global_Index.pdf


BIN
docs/Operator_Installation_Guide.pdf


BIN
docs/Presentation_Technical.pdf


BIN
docs/Presentation_User.pdf


BIN
docs/Recommendations.pdf


BIN
docs/Scrum_Artifacts.pdf


BIN
docs/Scrum_Daily.pdf


BIN
docs/Scrum_Plan.pdf


BIN
docs/Scrum_Retro.pdf


BIN
docs/Scrum_Review.pdf


BIN
docs/Scrum_Wiki.pdf


BIN
docs/Start_Stop_Procedures.pdf


BIN
docs/Technical_Document.pdf


BIN
docs/Test_Cases_Sprint8.pdf


BIN
docs/URL_Formats.pdf


BIN
docs/Uninstall_Guide.pdf


BIN
docs/User_Description.pdf


BIN
docs/User_Guide.pdf


BIN
docs/WSL_Deployment.pdf


BIN
docs/Wiki_Home.pdf


BIN
docs/architecture.pdf


BIN
docs/disaster_recovery_plan.pdf


BIN
docs/distributed_deployment.pdf


BIN
docs/docker_connection.pdf


BIN
docs/project_report.pdf


BIN
docs/retro_planning.pdf


BIN
docs/taiga_audit_report.pdf


BIN
docs/zabbix_monitoring.pdf


+ 602 - 0
index.html

@@ -0,0 +1,602 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Local Food AI Documentation Portal</title>
+    <style>
+        body {
+            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
+            background-color: #f4f7f6;
+            margin: 0;
+            padding: 0;
+            color: #333;
+        }
+        .header {
+            background: linear-gradient(135deg, #1b263b, #0d1b2a);
+            color: white;
+            padding: 40px 20px;
+            text-align: center;
+            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
+        }
+        .header h1 {
+            margin: 0;
+            font-size: 28pt;
+            font-weight: 600;
+        }
+        .header p {
+            margin: 10px 0 0 0;
+            font-size: 14pt;
+            color: #a3b18a;
+        }
+        .container {
+            max-width: 1200px;
+            margin: 40px auto;
+            padding: 0 20px;
+        }
+        .class-meta {
+            background-color: white;
+            padding: 20px;
+            border-radius: 8px;
+            margin-bottom: 30px;
+            box-shadow: 0 2px 4px rgba(0,0,0,0.05);
+            display: flex;
+            justify-content: space-around;
+            flex-wrap: wrap;
+            font-size: 11pt;
+        }
+        .class-meta div {
+            margin: 10px;
+        }
+        .grid {
+            display: grid;
+            grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
+            gap: 25px;
+        }
+        .card {
+            background-color: white;
+            border-radius: 8px;
+            box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05);
+            transition: transform 0.2s ease, box-shadow 0.2s ease;
+            overflow: hidden;
+            border: 1px solid #e9ecef;
+        }
+        .card:hover {
+            transform: translateY(-5px);
+            box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
+        }
+        .card-body {
+            padding: 25px;
+            display: flex;
+            flex-direction: column;
+            height: 180px;
+            justify-content: space-between;
+        }
+        .card-title {
+            margin: 0 0 10px 0;
+            font-size: 15pt;
+            color: #1b263b;
+        }
+        .card-text {
+            font-size: 10pt;
+            color: #666;
+            margin: 0 0 20px 0;
+            line-height: 1.5;
+        }
+        .card-links {
+            display: flex;
+            gap: 10px;
+        }
+        .btn {
+            display: inline-block;
+            padding: 10px 15px;
+            font-size: 9.5pt;
+            text-decoration: none;
+            border-radius: 5px;
+            text-align: center;
+            font-weight: 600;
+            flex: 1;
+        }
+        .btn-primary {
+            background-color: #0077b6;
+            color: white;
+        }
+        .btn-primary:hover {
+            background-color: #0096c7;
+        }
+        .btn-secondary {
+            background-color: #eaeef1;
+            color: #495057;
+        }
+        .btn-secondary:hover {
+            background-color: #dee2e6;
+        }
+        .footer {
+            text-align: center;
+            padding: 40px;
+            font-size: 10pt;
+            color: #888;
+        }
+    </style>
+</head>
+<body>
+    <div class="header">
+        <h1>Local Food AI</h1>
+        <p>Unified Project Documentation Portal</p>
+    </div>
+    <div class="container">
+        <div class="class-meta">
+            <div><strong>Class Course:</strong> B1AI</div>
+            <div><strong>Student Author:</strong> François LANGE</div>
+            <div><strong>Academic Year:</strong> 2025/2026</div>
+        </div>
+        <div class="grid">
+            
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Backup Procedure</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Backup_Procedure.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Backup_Procedure.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Data Ingestion</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Data_Ingestion.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Data_Ingestion.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Env Configuration</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Env_Configuration.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Env_Configuration.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Final Report</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Final_Report.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Final_Report.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Global Index</h3>
+                    <p class="card-text">Unified global term index cross-referencing keywords across all documentation files.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Global_Index.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Global_Index.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Installation Guide</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Installation_Guide.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Installation_Guide.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Operator Installation Guide</h3>
+                    <p class="card-text">Naked OS installation guide covering package installations, python dependencies, and native system configs.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Operator_Installation_Guide.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Operator_Installation_Guide.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Presentation Technical</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Presentation_Technical.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Presentation_Technical.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Presentation User</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Presentation_User.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Presentation_User.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Recommendations</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Recommendations.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Recommendations.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Scrum Artifacts</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Scrum_Artifacts.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Scrum_Artifacts.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Scrum Daily</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Scrum_Daily.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Scrum_Daily.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Scrum Plan</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Scrum_Plan.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Scrum_Plan.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Scrum Retro</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Scrum_Retro.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Scrum_Retro.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Scrum Review</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Scrum_Review.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Scrum_Review.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Scrum Wiki</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Scrum_Wiki.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Scrum_Wiki.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Start Stop Procedures</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Start_Stop_Procedures.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Start_Stop_Procedures.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Technical Document</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Technical_Document.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Technical_Document.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Test Cases Sprint8</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Test_Cases_Sprint8.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Test_Cases_Sprint8.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Url Formats</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/URL_Formats.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/URL_Formats.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Uninstall Guide</h3>
+                    <p class="card-text">Clean uninstallation workflow to remove all database, cache, airflow, and container resources from physical hosts.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Uninstall_Guide.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Uninstall_Guide.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">User Description</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/User_Description.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/User_Description.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">User Guide</h3>
+                    <p class="card-text">User manual outlining Streamlit login, meal planning, plate building, and chat assistant instructions.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/User_Guide.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/User_Guide.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Wsl Deployment</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/WSL_Deployment.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/WSL_Deployment.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Wiki Home</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/Wiki_Home.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/Wiki_Home.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Architecture</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/architecture.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/architecture.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Disaster Recovery Plan</h3>
+                    <p class="card-text">Recovery policies, backup strategies, and restore drills to ensure zero data loss during infrastructure outages.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/disaster_recovery_plan.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/disaster_recovery_plan.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Distributed Deployment</h3>
+                    <p class="card-text">Installation topology guide for deploying the application stack across multiple hypervisors (WSL, Hyper-V, VirtualBox) or physical servers.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/distributed_deployment.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/distributed_deployment.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Docker Connection</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/docker_connection.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/docker_connection.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Project Report</h3>
+                    <p class="card-text">Comprehensive sprint report detailing system catalog, directory mappings, and final scrum delivery notes.</p>
+                </div>
+                <div class="card-links">
+                    <a href="Project.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/project_report.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Retro Planning</h3>
+                    <p class="card-text">Timeline planning showing daily milestones, task allocations, and sprint scheduling sheets.</p>
+                </div>
+                <div class="card-links">
+                    <a href="Retro Planning.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/retro_planning.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Taiga Audit Report</h3>
+                    <p class="card-text">Project documentation deliverable covering specifications and guides.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/taiga_audit_report.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/taiga_audit_report.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">Zabbix Monitoring</h3>
+                    <p class="card-text">SNMP trap configurations, alert channels, and Zabbix server integration mappings.</p>
+                </div>
+                <div class="card-links">
+                    <a href="docs/zabbix_monitoring.pdf" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="docs/zabbix_monitoring.md" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        
+        </div>
+    </div>
+    <div class="footer">
+        &copy; 2026 François LANGE (Class B1AI). All rights reserved.
+    </div>
+</body>
+</html>

+ 597 - 118
scripts/generate_pdfs.py

@@ -1,19 +1,355 @@
-#ident "@(#)$Format:LocalFoodAI_lanfr144:generate_pdfs.py:%an:%ae:%ad:%cn:%ce:%cd:%H:%D:%N$"
 import os
 import glob
 import re
-from markdown_pdf import MarkdownPdf
-from markdown_pdf import Section
+import fitz
+import shutil
+import subprocess
+from datetime import datetime
+from markdown_pdf import MarkdownPdf, Section
+
+# List of key technical terms to search and index across all documents
+KEY_TERMS = [
+    "AI", "MySQL", "Zabbix", "Docker", "Streamlit", "Nginx", "Airflow", 
+    "RAG", "Allergens", "Vitamins", "Minerals", "Clinical", "WSL", "Ollama",
+    "LLM", "Database", "Security", "Telemetry", "Backup", "Firewall", "SMTP"
+]
+
+def clean_header_text(text):
+    # Remove markdown links: [text](url) -> text
+    text = re.sub(r'\[([^\]]+)\]\([^)]+\)', r'\1', text)
+    # Remove bold/italic/code formatting
+    text = re.sub(r'[*_`]', '', text)
+    return text.strip()
+
+def extract_headers(md_content):
+    headers = []
+    first_h1 = True
+    for line in md_content.splitlines():
+        if line.startswith('#'):
+            match = re.match(r'^(#{1,3})\s+(.+)$', line)
+            if match:
+                level = len(match.group(1))
+                t = match.group(2).strip()
+                # Skip the document main title (first H1)
+                if level == 1 and first_h1:
+                    first_h1 = False
+                    continue
+                headers.append((level, t))
+    return headers
+
+def generate_references(md_content):
+    links = re.findall(r'\[([^\]]+)\]\((https?://[^\)]+)\)', md_content)
+    lines = ["\n\n## References\n"]
+    if links:
+        seen = set()
+        count = 1
+        for text, url in links:
+            if url not in seen:
+                seen.add(url)
+                clean_text = re.sub(r'[*_`]', '', text)
+                lines.append(f"{count}. **{clean_text}**: {url}")
+                count += 1
+                if count > 10:
+                    break
+    else:
+        lines.append("1. **OpenFoodFacts Dataset & API Catalog**: Detailed food ingredients database. (https://world.openfoodfacts.org/)")
+        lines.append("2. **Ollama Local LLM Inference Engine**: Lightweight instruction-following llama3.2 runtimes. (https://ollama.com/)")
+        lines.append("3. **Zabbix Enterprise Telemetry and Monitoring**: System health and performance logging. (https://www.zabbix.com/)")
+    return "\n".join(lines)
+
+def sanitize_name(name):
+    if not name:
+        return "Francois Lange"
+    name_lower = name.lower()
+    if "fran" in name_lower or "lange" in name_lower or "lanfr" in name_lower:
+        return "Francois Lange"
+    return name
+
+def get_git_info_for_file(file_path):
+    try:
+        cmd = [
+            "git", "log", "-1",
+            "--date=format:%Y/%m/%d %H:%M:%S",
+            "--format=%an|%ae|%ad|%cn|%ce|%cd|%H|%D|%N",
+            "--", file_path
+        ]
+        out = subprocess.check_output(cmd, stderr=subprocess.DEVNULL).decode('utf-8', errors='ignore').strip()
+        if out:
+            parts = out.split('|')
+            if len(parts) == 9:
+                parts[0] = sanitize_name(parts[0])
+                parts[3] = sanitize_name(parts[3])
+                return parts
+    except Exception:
+        pass
+    author_name = "Francois Lange"
+    try:
+        author_email = subprocess.check_output(["git", "config", "user.email"], stderr=subprocess.DEVNULL).decode('utf-8', errors='ignore').strip() or "lanfr144@school.lu"
+    except Exception:
+        author_email = "lanfr144@school.lu"
+    now_str = datetime.now().strftime("%Y/%m/%d %H:%M:%S")
+    return [author_name, author_email, now_str, author_name, author_email, now_str, "Not Committed Yet", "local", "none"]
+
+def compile_pdf_document(md_file, title, md_content, toc_content, index_content, references_content, root_dir, user_css):
+    pdf = MarkdownPdf(optimize=True, plugins={"mermaid": {}})
+    base_name = os.path.basename(md_file)
+    
+    # 1. Section 1: Cover Page
+    cover_html = f"""
+<div style="text-align: center; font-family: 'Helvetica', 'Arial', sans-serif; padding-top: 150px; padding-bottom: 150px;">
+    <h1 style="font-size: 28pt; font-weight: bold; margin-bottom: 20px; color: #000000; line-height: 1.2;">{title}</h1>
+    <p style="font-size: 14pt; color: #666666; margin-top: 10px; margin-bottom: 150px; letter-spacing: 1px; text-transform: uppercase;">Project Deliverable</p>
+    <div style="border-top: 2px solid #eaeaea; width: 80%; margin: 0 auto 50px auto;"></div>
+    <table style="margin: 0 auto; text-align: left; font-size: 12pt; border: none; width: 60%; line-height: 2.0; border-collapse: collapse;">
+        <tr style="border: none;"><td style="font-weight: bold; color: #555555; padding: 5px; border: none; width: 40%;">Course Class:</td><td style="color: #111111; padding: 5px; border: none;">B1AI</td></tr>
+        <tr style="border: none;"><td style="font-weight: bold; color: #555555; padding: 5px; border: none;">Author:</td><td style="color: #111111; padding: 5px; border: none;">François LANGE</td></tr>
+        <tr style="border: none;"><td style="font-weight: bold; color: #555555; padding: 5px; border: none;">Date:</td><td style="color: #111111; padding: 5px; border: none;">2026/06/19</td></tr>
+    </table>
+</div>
+"""
+    pdf.add_section(Section(cover_html, paper_size="A4", root=root_dir, borders=(36, 60, -36, -36)), user_css=user_css)
+    
+    # 2. Section 2: Blank Page
+    blank_content = "<div style='height: 1000px;'>&nbsp;</div>"
+    pdf.add_section(Section(blank_content, paper_size="A4", root=root_dir, borders=(36, 60, -36, -36)), user_css=user_css)
+    
+    # 3. Section 3: Printed Table of Contents
+    pdf.add_section(Section(toc_content, paper_size="A4", root=root_dir, borders=(36, 60, -36, -36)), user_css=user_css)
+    
+    # 4. Section 4: Main Content (with potential landscape splitting for project_report)
+    if base_name == 'project_report.md':
+        parts = md_content.split('## 2. Project File Catalog & Documentation')
+        if len(parts) == 2:
+            portrait_part1 = parts[0]
+            remaining = parts[1]
+            parts2 = remaining.split('## 3. Directory Structure Map')
+            if len(parts2) == 2:
+                landscape_part = '## 2. Project File Catalog & Documentation' + parts2[0]
+                portrait_part2 = '## 3. Directory Structure Map' + parts2[1]
+                
+                pdf.add_section(Section(portrait_part1, paper_size="A4", root=root_dir, borders=(36, 60, -36, -36)), user_css=user_css)
+                pdf.add_section(Section(landscape_part, paper_size="A4-L", root=root_dir, borders=(36, 60, -36, -36)), user_css=user_css)
+                pdf.add_section(Section(portrait_part2 + "\n" + references_content, paper_size="A4", root=root_dir, borders=(36, 60, -36, -36)), user_css=user_css)
+            else:
+                pdf.add_section(Section(md_content + "\n" + references_content, paper_size="A4", root=root_dir, borders=(36, 60, -36, -36)), user_css=user_css)
+        else:
+            pdf.add_section(Section(md_content + "\n" + references_content, paper_size="A4", root=root_dir, borders=(36, 60, -36, -36)), user_css=user_css)
+    else:
+        pdf.add_section(Section(md_content + "\n" + references_content, paper_size="A4", root=root_dir, borders=(36, 60, -36, -36)), user_css=user_css)
+        
+    # 5. Section 5: Printed Index
+    pdf.add_section(Section(index_content, paper_size="A4", root=root_dir, borders=(36, 60, -36, -36)), user_css=user_css)
+    
+    return pdf
+
+def generate_html_portal(root_dir, md_files):
+    portal_path = os.path.join(root_dir, 'index.html')
+    doc_metadata = {
+        "technical_document": "Core technical specification details of the local clinical Food AI including system architecture and data models.",
+        "distributed_deployment": "Installation topology guide for deploying the application stack across multiple hypervisors (WSL, Hyper-V, VirtualBox) or physical servers.",
+        "disaster_recovery_plan": "Recovery policies, backup strategies, and restore drills to ensure zero data loss during infrastructure outages.",
+        "Uninstall_Guide": "Clean uninstallation workflow to remove all database, cache, airflow, and container resources from physical hosts.",
+        "Operator_Installation_Guide": "Naked OS installation guide covering package installations, python dependencies, and native system configs.",
+        "project_report": "Comprehensive sprint report detailing system catalog, directory mappings, and final scrum delivery notes.",
+        "retro_planning": "Timeline planning showing daily milestones, task allocations, and sprint scheduling sheets.",
+        "User_Guide": "User manual outlining Streamlit login, meal planning, plate building, and chat assistant instructions.",
+        "zabbix_monitoring": "SNMP trap configurations, alert channels, and Zabbix server integration mappings.",
+        "Global_Index": "Unified global term index cross-referencing keywords across all documentation files."
+    }
+    
+    cards_html = []
+    for md_file in sorted(md_files):
+        base = os.path.basename(md_file).replace('.md', '')
+        if "Header_Footer" in base:
+            continue
+        
+        pdf_rel_path = f"docs/{base}.pdf"
+        md_rel_path = f"docs/{base}.md"
+        title = base.replace('_', ' ').replace('-', ' ').title()
+        
+        if base == "project_report":
+            pdf_rel_path = "Project.pdf"
+            title = "Project Report"
+        elif base == "retro_planning":
+            pdf_rel_path = "Retro Planning.pdf"
+            title = "Retro Planning"
+            
+        desc = doc_metadata.get(base, "Project documentation deliverable covering specifications and guides.")
+        
+        cards_html.append(f"""
+        <div class="card">
+            <div class="card-body">
+                <div>
+                    <h3 class="card-title">{title}</h3>
+                    <p class="card-text">{desc}</p>
+                </div>
+                <div class="card-links">
+                    <a href="{pdf_rel_path}" class="btn btn-primary" target="_blank">📄 View PDF</a>
+                    <a href="{md_rel_path}" class="btn btn-secondary" target="_blank">📝 View Markdown</a>
+                </div>
+            </div>
+        </div>
+        """)
+        
+    cards_str = "\n".join(cards_html)
+    
+    html_content = f"""<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Local Food AI Documentation Portal</title>
+    <style>
+        body {{
+            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
+            background-color: #f4f7f6;
+            margin: 0;
+            padding: 0;
+            color: #333;
+        }}
+        .header {{
+            background: linear-gradient(135deg, #1b263b, #0d1b2a);
+            color: white;
+            padding: 40px 20px;
+            text-align: center;
+            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
+        }}
+        .header h1 {{
+            margin: 0;
+            font-size: 28pt;
+            font-weight: 600;
+        }}
+        .header p {{
+            margin: 10px 0 0 0;
+            font-size: 14pt;
+            color: #a3b18a;
+        }}
+        .container {{
+            max-width: 1200px;
+            margin: 40px auto;
+            padding: 0 20px;
+        }}
+        .class-meta {{
+            background-color: white;
+            padding: 20px;
+            border-radius: 8px;
+            margin-bottom: 30px;
+            box-shadow: 0 2px 4px rgba(0,0,0,0.05);
+            display: flex;
+            justify-content: space-around;
+            flex-wrap: wrap;
+            font-size: 11pt;
+        }}
+        .class-meta div {{
+            margin: 10px;
+        }}
+        .grid {{
+            display: grid;
+            grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
+            gap: 25px;
+        }}
+        .card {{
+            background-color: white;
+            border-radius: 8px;
+            box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05);
+            transition: transform 0.2s ease, box-shadow 0.2s ease;
+            overflow: hidden;
+            border: 1px solid #e9ecef;
+        }}
+        .card:hover {{
+            transform: translateY(-5px);
+            box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
+        }}
+        .card-body {{
+            padding: 25px;
+            display: flex;
+            flex-direction: column;
+            height: 180px;
+            justify-content: space-between;
+        }}
+        .card-title {{
+            margin: 0 0 10px 0;
+            font-size: 15pt;
+            color: #1b263b;
+        }}
+        .card-text {{
+            font-size: 10pt;
+            color: #666;
+            margin: 0 0 20px 0;
+            line-height: 1.5;
+        }}
+        .card-links {{
+            display: flex;
+            gap: 10px;
+        }}
+        .btn {{
+            display: inline-block;
+            padding: 10px 15px;
+            font-size: 9.5pt;
+            text-decoration: none;
+            border-radius: 5px;
+            text-align: center;
+            font-weight: 600;
+            flex: 1;
+        }}
+        .btn-primary {{
+            background-color: #0077b6;
+            color: white;
+        }}
+        .btn-primary:hover {{
+            background-color: #0096c7;
+        }}
+        .btn-secondary {{
+            background-color: #eaeef1;
+            color: #495057;
+        }}
+        .btn-secondary:hover {{
+            background-color: #dee2e6;
+        }}
+        .footer {{
+            text-align: center;
+            padding: 40px;
+            font-size: 10pt;
+            color: #888;
+        }}
+    </style>
+</head>
+<body>
+    <div class="header">
+        <h1>Local Food AI</h1>
+        <p>Unified Project Documentation Portal</p>
+    </div>
+    <div class="container">
+        <div class="class-meta">
+            <div><strong>Class Course:</strong> B1AI</div>
+            <div><strong>Student Author:</strong> François LANGE</div>
+            <div><strong>Academic Year:</strong> 2025/2026</div>
+        </div>
+        <div class="grid">
+            {cards_str}
+        </div>
+    </div>
+    <div class="footer">
+        &copy; 2026 François LANGE (Class B1AI). All rights reserved.
+    </div>
+</body>
+</html>
+"""
+    with open(portal_path, 'w', encoding='utf-8') as f:
+        f.write(html_content)
+    print("Created index.html portal successfully.")
 
 def main():
     docs_dir = os.path.join(os.path.dirname(__file__), '..', 'docs')
     md_files = glob.glob(os.path.join(docs_dir, '*.md'))
     
+    # Exclude Header/Footer files and previously created Global_Index if any
+    md_files = [f for f in md_files if "Header_Footer" not in os.path.basename(f) and "Global_Index" not in os.path.basename(f)]
+    
     if not md_files:
         print("No markdown files found in docs/")
         return
         
-    # Use relative paths for fonts to ensure portability of PDF generation
     root_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')).replace('\\', '/')
     
     user_css = """
@@ -80,167 +416,318 @@ def main():
     }
     """
 
+    global_term_index = {} # Structure: { term: [ (doc_title, pdf_path, [page_numbers]) ] }
+    doc_data = {} # Structure: { md_file: { title, md_content, headers, references } }
+
+    # ==========================================
+    # PASS 1: Generate Draft PDFs and Find Pages
+    # ==========================================
+    print("=== STARTING DRAFT COMPILATION AND ANALYSIS PASS ===")
+    
     for md_file in md_files:
-        pdf_file = md_file.replace('.md', '.pdf')
-        print(f"Converting {os.path.basename(md_file)} to PDF...")
+        print(f"Analyzing {os.path.basename(md_file)}...")
         
         with open(md_file, 'r', encoding='utf-8') as f:
             md_content = f.read()
             
-        import subprocess
-        def sanitize_name(name):
-            if not name:
-                return "Francois Lange"
-            name_lower = name.lower()
-            if "fran" in name_lower or "lange" in name_lower or "lanfr" in name_lower:
-                return "Francois Lange"
-            return name
-
-        def get_git_info_for_file(file_path):
-            try:
-                cmd = [
-                    "git", "log", "-1",
-                    "--date=format:%Y/%m/%d %H:%M:%S",
-                    "--format=%an|%ae|%ad|%cn|%ce|%cd|%H|%D|%N",
-                    "--", file_path
-                ]
-                out = subprocess.check_output(cmd, stderr=subprocess.DEVNULL).decode('utf-8', errors='ignore').strip()
-                if out:
-                    parts = out.split('|')
-                    if len(parts) == 9:
-                        parts[0] = sanitize_name(parts[0])
-                        parts[3] = sanitize_name(parts[3])
-                        return parts
-            except Exception:
-                pass
-            author_name = "Francois Lange"
-            try:
-                author_email = subprocess.check_output(["git", "config", "user.email"], stderr=subprocess.DEVNULL).decode('utf-8', errors='ignore').strip() or "lanfr144@school.lu"
-            except Exception:
-                author_email = "lanfr144@school.lu"
-            from datetime import datetime
-            now_str = datetime.now().strftime("%Y/%m/%d %H:%M:%S")
-            return [author_name, author_email, now_str, author_name, author_email, now_str, "Not Committed Yet", "local", "none"]
-
-        # Dynamic smudging of the Format placeholder for this specific file
+        # Format replacements
         base_name = os.path.basename(md_file)
         info = get_git_info_for_file(md_file)
         replacement = f"$Format:LocalFoodAI_lanfr144:generate_pdfs.py:%an:%ae:%ad:%cn:%ce:%cd:%H:%D:%N$"
-        
-        # Replace the raw format template if present
         pattern = r'\$Format:LocalFoodAI_lanfr144:generate_pdfs.py:%an:%ae:%ad:%cn:%ce:%cd:%H:%D:%N$'
         md_content = re.sub(pattern, replacement, md_content)
         
-        # Clean up absolute file:/// paths to relative paths
         md_content = re.sub(r'file:///.*?/docs/([a-zA-Z0-9_-]+)\.md', r'\1.pdf', md_content, flags=re.IGNORECASE)
         md_content = re.sub(r'file:///.*?/Food/([a-zA-Z0-9_.-]+)', r'../\1', md_content, flags=re.IGNORECASE)
-        
-        # Add a blank line after code blocks to force copy-paste blank line
         md_content = re.sub(r'(```[a-zA-Z0-9_-]*\n[\s\S]*?\n```)', r'\1\n\n', md_content)
-        
-        # Convert any relative markdown links in standard format [text](filename.md) or [text](./filename.md) to point to .pdf
         md_content = re.sub(r'\]\((?!http|https)([a-zA-Z0-9_./-]+)\.md(#[a-zA-Z0-9_-]+)?\)', r'](\1.pdf\2)', md_content, flags=re.IGNORECASE)
 
+        # Title parsing
+        title_match = re.search(r'^#\s+(.+)$', md_content, re.MULTILINE)
+        if title_match:
+            doc_title = title_match.group(1).strip()
+            doc_title = re.sub(r'[*_`#]', '', doc_title).strip()
+        else:
+            doc_title = base_name.replace('.md', '').replace('_', ' ').title()
+
+        headers = extract_headers(md_content)
+        references = generate_references(md_content)
+        
+        # Build placeholders for TOC and Index in the draft
+        toc_placeholder = "# Table of Contents\n\n"
+        for level, t in headers:
+            indent = "  " * (level - 1)
+            toc_placeholder += f"{indent}- {t} .................................................... Page 00\n"
+            
+        index_placeholder = "## Index\n\n"
+        for term in KEY_TERMS:
+            index_placeholder += f"- **{term}**: Page 00\n"
+
+        doc_data[md_file] = {
+            "title": doc_title,
+            "md_content": md_content,
+            "headers": headers,
+            "references": references
+        }
+
         try:
-            pdf = MarkdownPdf(toc_level=2, optimize=True, plugins={"mermaid": {}})
+            # Compile draft PDF
+            pdf = compile_pdf_document(
+                md_file, doc_title, md_content, toc_placeholder, 
+                index_placeholder, references, root_dir, user_css
+            )
+            draft_pdf_file = md_file.replace('.md', '_draft.pdf')
+            pdf.save(draft_pdf_file)
+            pdf.temp_files.clean()
             
-            if base_name == 'project_report.md':
-                print("Splitting project_report.md into Portrait/Landscape/Portrait sections...")
-                parts = md_content.split('## 2. Project File Catalog & Documentation')
-                if len(parts) == 2:
-                    portrait_part1 = parts[0]
-                    remaining = parts[1]
-                    parts2 = remaining.split('## 3. Directory Structure Map')
-                    if len(parts2) == 2:
-                        landscape_part = '## 2. Project File Catalog & Documentation' + parts2[0]
-                        portrait_part2 = '## 3. Directory Structure Map' + parts2[1]
-                        
-                        pdf.add_section(Section(portrait_part1, paper_size="A4", root=root_dir, borders=(36, 60, -36, -36)), user_css=user_css)
-                        pdf.add_section(Section(landscape_part, paper_size="A4-L", root=root_dir, borders=(36, 60, -36, -36)), user_css=user_css)
-                        pdf.add_section(Section(portrait_part2, paper_size="A4", root=root_dir, borders=(36, 60, -36, -36)), user_css=user_css)
-                    else:
-                        print("WARNING: Could not find Directory Structure Map heading. Defaulting to full portrait.")
-                        pdf.add_section(Section(md_content, paper_size="A4", root=root_dir, borders=(36, 60, -36, -36)), user_css=user_css)
-                else:
-                    print("WARNING: Could not find Project File Catalog heading. Defaulting to full portrait.")
-                    pdf.add_section(Section(md_content, paper_size="A4", root=root_dir, borders=(36, 60, -36, -36)), user_css=user_css)
-            else:
-                pdf.add_section(Section(md_content, paper_size="A4", root=root_dir, borders=(36, 60, -36, -36)), user_css=user_css)
+            # Analyze draft PDF using fitz
+            doc = fitz.open(draft_pdf_file)
+            
+            # 1. Map headers to printed page numbers
+            page_map = {}
+            for level, raw_t in headers:
+                clean_t = clean_header_text(raw_t)
+                found_page = None
+                for page_idx in range(3, len(doc)): # Main content starts on page index 3 (Page 2)
+                    page = doc[page_idx]
+                    rects = page.search_for(clean_t)
+                    if rects:
+                        found_page = page_idx - 1 # printed Page 1 is index 2 (TOC page)
+                        break
+                if found_page is None:
+                    found_page = 2 # default fallback
+                page_map[raw_t] = found_page
                 
-            # Post-process compiled PDF to insert header and footer
-            import fitz
+            # 2. Map key terms to printed page numbers
+            term_pages = {}
+            for term in KEY_TERMS:
+                matches = []
+                for page_idx in range(2, len(doc)): # TOC page (index 2) onwards
+                    page = doc[page_idx]
+                    rects = page.search_for(term)
+                    if rects:
+                        matches.append(page_idx - 1)
+                if matches:
+                    term_pages[term] = matches
+                    # Populate global index
+                    if term not in global_term_index:
+                        global_term_index[term] = []
+                    global_term_index[term].append((doc_title, md_file.replace('.md', '.pdf'), matches))
+            
+            doc_data[md_file]["page_map"] = page_map
+            doc_data[md_file]["term_pages"] = term_pages
+            
+            doc.close()
+            # Clean up draft PDF
+            if os.path.exists(draft_pdf_file):
+                os.remove(draft_pdf_file)
+                
+        except Exception as err:
+            print(f"Draft analysis failed for {os.path.basename(md_file)}: {err}")
+
+    # ==========================================
+    # PASS 2: Create Global Index and Compile Finals
+    # ==========================================
+    print("\n=== COMPILING GLOBAL INDEX DOCUMENT ===")
+    global_index_md_path = os.path.join(docs_dir, 'Global_Index.md')
+    global_index_pdf_path = os.path.join(docs_dir, 'Global_Index.pdf')
+    
+    # Generate Global_Index.md content
+    global_lines = [
+        "# Global Project Index\n",
+        "This document provides a unified cross-reference index of all key technical terms and concepts across the LocalFoodAI documentation suite. Click on any document link to open it at the specific page in your viewer.\n",
+        "## Index of Terms\n"
+    ]
+    for term in sorted(global_term_index.keys()):
+        occurrences = global_term_index[term]
+        global_lines.append(f"### {term}\n")
+        for doc_title, pdf_path, pages in occurrences:
+            pages_str = ", ".join([f"Page {p}" for p in pages])
+            pdf_rel = os.path.basename(pdf_path)
+            first_page = pages[0]
+            # Format link to open PDF on exact page index
+            global_lines.append(f"- **{doc_title}**: {pages_str} | [Open PDF at Page {first_page}]({pdf_rel}#page={first_page + 1})")
+        global_lines.append("")
+        
+    with open(global_index_md_path, 'w', encoding='utf-8') as f:
+        f.write("\n".join(global_lines))
+    print("Saved docs/Global_Index.md")
+
+    # Add Global_Index.md to the compilation files list
+    md_files.append(global_index_md_path)
+    
+    # Generate draft analysis for Global_Index.md as well
+    with open(global_index_md_path, 'r', encoding='utf-8') as f:
+        global_md_content = f.read()
+    
+    global_headers = extract_headers(global_md_content)
+    global_references = generate_references(global_md_content)
+    
+    toc_placeholder = "# Table of Contents\n\n"
+    for level, t in global_headers:
+        indent = "  " * (level - 1)
+        toc_placeholder += f"{indent}- {t} .................................................... Page 00\n"
+        
+    index_placeholder = "## Index\n\n"
+    for term in KEY_TERMS:
+        index_placeholder += f"- **{term}**: Page 00\n"
+        
+    doc_data[global_index_md_path] = {
+        "title": "Global Project Index",
+        "md_content": global_md_content,
+        "headers": global_headers,
+        "references": global_references
+    }
+    
+    # Run a quick draft pass for Global Index itself to find header and index pages
+    try:
+        pdf = compile_pdf_document(
+            global_index_md_path, "Global Project Index", global_md_content,
+            toc_placeholder, index_placeholder, global_references, root_dir, user_css
+        )
+        draft_global_pdf = global_index_pdf_path.replace('.pdf', '_draft.pdf')
+        pdf.save(draft_global_pdf)
+        pdf.temp_files.clean()
+        
+        doc = fitz.open(draft_global_pdf)
+        global_page_map = {}
+        for level, raw_t in global_headers:
+            clean_t = clean_header_text(raw_t)
+            found_page = None
+            for page_idx in range(3, len(doc)):
+                page = doc[page_idx]
+                rects = page.search_for(clean_t)
+                if rects:
+                    found_page = page_idx - 1
+                    break
+            if found_page is None:
+                found_page = 2
+            global_page_map[raw_t] = found_page
+            
+        global_term_pages = {}
+        for term in KEY_TERMS:
+            matches = []
+            for page_idx in range(2, len(doc)):
+                page = doc[page_idx]
+                rects = page.search_for(term)
+                if rects:
+                    matches.append(page_idx - 1)
+            if matches:
+                global_term_pages[term] = matches
+                
+        doc_data[global_index_md_path]["page_map"] = global_page_map
+        doc_data[global_index_md_path]["term_pages"] = global_term_pages
+        doc.close()
+        if os.path.exists(draft_global_pdf):
+            os.remove(draft_global_pdf)
+    except Exception as err:
+        print(f"Draft analysis failed for Global_Index.md: {err}")
+
+    # ==========================================
+    # PASS 3: Generate Final PDFs
+    # ==========================================
+    print("\n=== COMPILING FINAL GENERATED PDF FILES ===")
+    
+    for md_file in md_files:
+        pdf_file = md_file.replace('.md', '.pdf')
+        base_name = os.path.basename(md_file)
+        
+        data = doc_data.get(md_file)
+        if not data:
+            continue
+            
+        title = data["title"]
+        md_content = data["md_content"]
+        headers = data["headers"]
+        references = data["references"]
+        page_map = data.get("page_map", {})
+        term_pages = data.get("term_pages", {})
+
+        # 1. Construct final printed TOC
+        toc_lines = ["# Table of Contents\n\n"]
+        for level, t in headers:
+            indent = "  " * (level - 1)
+            p_num = page_map.get(t, 2)
+            toc_lines.append(f"{indent}- {t} .................................................... Page {p_num}")
+        toc_content = "\n".join(toc_lines)
+
+        # 2. Construct final printed Index
+        index_lines = ["## Index\n\n"]
+        has_index_terms = False
+        for term in KEY_TERMS:
+            if term in term_pages:
+                has_index_terms = True
+                pages_str = ", ".join([f"Page {p}" for p in term_pages[term]])
+                index_lines.append(f"- **{term}**: {pages_str}")
+        if not has_index_terms:
+            index_lines.append("- No key terms found in this document.")
+        index_content = "\n".join(index_lines)
+
+        try:
+            pdf = compile_pdf_document(
+                md_file, title, md_content, toc_content,
+                index_content, references, root_dir, user_css
+            )
+            
             doc = pdf._make_doc()
             total_pages = len(doc)
             
-            # Parse title from md_content
-            title_match = re.search(r'^#\s+(.+)$', md_content, re.MULTILINE)
-            if title_match:
-                doc_title = title_match.group(1).strip()
-                doc_title = re.sub(r'[*_`#]', '', doc_title).strip()
-            else:
-                doc_title = os.path.basename(pdf_file).replace('.pdf', '').replace('_', ' ')
-            
             am_path = os.path.join(docs_dir, 'am.png')
             bts_path = os.path.join(docs_dir, 'Bts.png')
             
-            # Read real sizes for scaling to 10%
-            width_am, height_am = 146.5, 24.5 # Fallback defaults
+            width_am, height_am = 146.5, 24.5
             if os.path.exists(am_path):
                 try:
                     pix_am = fitz.Pixmap(am_path)
                     width_am = pix_am.width * 0.1
                     height_am = pix_am.height * 0.1
-                except Exception:
-                    pass
+                except Exception: pass
             
-            width_bts, height_bts = 67.1, 36.8 # Fallback defaults
+            width_bts, height_bts = 67.1, 36.8
             if os.path.exists(bts_path):
                 try:
                     pix_bts = fitz.Pixmap(bts_path)
                     width_bts = pix_bts.width * 0.1
                     height_bts = pix_bts.height * 0.1
-                except Exception:
-                    pass
+                except Exception: pass
             
             for page_idx in range(total_pages):
+                # COVER & BLANK page should not contain headers, footers, or logos
+                if page_idx in [0, 1]:
+                    continue
+                    
                 page = doc[page_idx]
                 width = page.rect.width
                 height = page.rect.height
                 
                 # Header layout
-                # Left: am.png picture (if exists) at 10% size, drawn in background
                 if os.path.exists(am_path):
                     image_rect = fitz.Rect(48, 12, 48 + width_am, 12 + height_am)
                     page.insert_image(image_rect, filename=am_path, overlay=False)
                 
-                # Right: Bts.png logo (if exists) at 10% size, drawn in background
                 if os.path.exists(bts_path):
                     bts_rect = fitz.Rect(width - 48 - width_bts, 8, width - 48, 8 + height_bts)
                     page.insert_image(bts_rect, filename=bts_path, overlay=False)
                 
-                # Middle: document title centered in the space between the two pictures
+                # Title text
                 fontsize = 8
                 fontname = "helv"
-                m_width = fitz.get_text_length(doc_title, fontname=fontname, fontsize=fontsize)
-                
+                m_width = fitz.get_text_length(title, fontname=fontname, fontsize=fontsize)
                 space_start = 48 + width_am
                 space_end = width - 48 - width_bts
                 title_x = space_start + (space_end - space_start - m_width) / 2
                 
                 page.insert_text(
                     fitz.Point(title_x, 26),
-                    doc_title,
+                    title,
                     fontname=fontname,
                     fontsize=fontsize,
                     color=(0.5, 0.5, 0.5)
                 )
                 
-                # Footer layout
-                # Left: "lanfr144"
-                # Middle: "Page X of Y"
-                # Right: "DOPRO1"
+                # Footer layout (Page numbers start counting at TOC as Page 1)
                 l_footer = "lanfr144"
-                footer_text = f"Page {page_idx + 1} of {total_pages}"
+                footer_text = f"Page {page_idx - 1} of {total_pages - 2}"
                 f_width = fitz.get_text_length(footer_text, fontname=fontname, fontsize=fontsize)
                 
                 page.insert_text(
@@ -269,8 +756,6 @@ def main():
                     color=(0.5, 0.5, 0.5)
                 )
                 
-            # Deflate, clean, garbage collect and linearize the document
-            # to fix Acrobat encoding and save prompts
             doc.save(pdf_file, clean=True, garbage=3, deflate=True)
             doc.close()
             pdf.temp_files.clean()
@@ -278,28 +763,22 @@ def main():
             print(f"Saved {os.path.basename(pdf_file)}")
             
             # Copy to workspace root if applicable
-            import shutil
             if base_name == 'project_report.md':
                 dest = os.path.join(root_dir, 'Project.pdf')
-                try:
-                    if os.path.exists(dest):
-                        os.remove(dest)
-                    shutil.copy2(pdf_file, dest)
-                    print("Successfully updated root Project.pdf")
-                except Exception as copy_err:
-                    print(f"WARNING: Could not copy to root Project.pdf: {copy_err}")
+                if os.path.exists(dest): os.remove(dest)
+                shutil.copy2(pdf_file, dest)
+                print("Successfully updated root Project.pdf")
             elif base_name == 'retro_planning.md':
                 dest = os.path.join(root_dir, 'Retro Planning.pdf')
-                try:
-                    if os.path.exists(dest):
-                        os.remove(dest)
-                    shutil.copy2(pdf_file, dest)
-                    print("Successfully updated root Retro Planning.pdf")
-                except Exception as copy_err:
-                    print(f"WARNING: Could not copy to root Retro Planning.pdf: {copy_err}")
-                    
+                if os.path.exists(dest): os.remove(dest)
+                shutil.copy2(pdf_file, dest)
+                print("Successfully updated root Retro Planning.pdf")
+                
         except Exception as e:
             print(f"WARNING: Could not save {os.path.basename(pdf_file)}. File might be locked or open in a viewer. Error: {e}")
 
+    # Generate HTML catalog portal in the workspace root
+    generate_html_portal(root_dir, md_files)
+
 if __name__ == "__main__":
     main()