diff --git a/images/README.md b/images/README.md new file mode 100644 index 0000000..1a2a9e5 --- /dev/null +++ b/images/README.md @@ -0,0 +1,55 @@ +# Architecture Diagrams + +This folder contains visual representations of the studio einszwovier platform architecture. + +## Files + +### `architecture.png` + +High-resolution PNG diagram showing the complete platform architecture including: + +- **Web Platform** - Landing page, About page, Cost calculator +- **Services** - BookStack, Open WebUI, JupyterHub, Forgejo, Element Web, Portainer +- **Backend** - Synapse Matrix server, Ollama LLM engine, MariaDB database +- **Educational Resources** - Drone programming, Git repositories, Documentation +- **Storage** - Persistent data for all services +- **Infrastructure** - Watchtower auto-updates, Docker network + +**Specifications:** +- Resolution: 2400x1600 pixels +- Format: PNG with transparent background +- Size: ~242 KB +- Generated from: `architecture.mmd` + +### `architecture.mmd` + +Source Mermaid diagram file. This is the plain-text definition used to generate the PNG. + +## Regenerating the Diagram + +To regenerate the PNG from the Mermaid source: + +```bash +# Install mermaid-cli if needed +npm install -g @mermaid-js/mermaid-cli + +# Generate PNG +mmdc -i images/architecture.mmd -o images/architecture.png -w 2400 -H 1600 -b transparent +``` + +## Usage + +The PNG is embedded in the main [README.md](../README.md) file under the "Architecture" section. It provides a visual overview for developers, contributors, and users to understand how all services interconnect. + +## Updating + +When the architecture changes: + +1. Update the Mermaid diagram in [README.md](../README.md) +2. Copy the updated diagram to `architecture.mmd` +3. Regenerate the PNG using the command above +4. Commit both files to git + +--- + +**Maintained by studio einszwovier** diff --git a/images/architecture.mmd b/images/architecture.mmd new file mode 100644 index 0000000..c1646e3 --- /dev/null +++ b/images/architecture.mmd @@ -0,0 +1,79 @@ +graph TB + subgraph "studio einszwovier Web Platform" + LP[🏠 Landing Page
Port 80] + About[â„šī¸ About Page
/about] + CostCalc[💰 Cost Calculator
/cost] + + LP --> About + LP --> CostCalc + end + + subgraph "Services Accessible from Landing Page" + BookStack[📚 BookStack
Port 6875
Wissenssammlung] + OpenWebUI[🤖 Open WebUI
Port 8080
LLM Chatbot] + JupyterHub[📓 JupyterHub
Port 8001
Python Notebooks] + Forgejo[đŸĻŠ Forgejo
Port 3003
Git Server] + ElementWeb[đŸ’Ŧ Element Web
Port 8082
Matrix Chat] + Portainer[đŸŗ Portainer
Port 9000
Admin Panel] + + LP -.->|Link| BookStack + LP -.->|Link| OpenWebUI + LP -.->|Link| JupyterHub + LP -.->|Link| Forgejo + LP -.->|Link| ElementWeb + LP -.->|Link| Portainer + end + + subgraph "Backend Services" + Synapse[📨 Synapse
Port 8008
Matrix Server] + Ollama[🔮 Ollama
Port 11434
LLM Engine] + MariaDB[(💾 MariaDB
BookStack DB)] + + ElementWeb --> Synapse + OpenWebUI --> Ollama + BookStack --> MariaDB + CostCalc --> Synapse + end + + subgraph "Educational Resources" + Notebooks[📒 Drone Programming
djitellopy Package] + GitRepos[đŸ“Ļ Code Repositories
Project Source] + Knowledge[📖 Documentation
Guides & Tutorials] + + JupyterHub --> Notebooks + Forgejo --> GitRepos + BookStack --> Knowledge + end + + subgraph "Persistent Storage" + PDFUploads[📁 PDF Files
data/uploads/] + CoursesCSV[📋 Courses CSV
data/courses.csv] + MatrixData[(đŸ—„ī¸ Matrix Data
matrix/data/)] + JupyterVols[(💾 Jupyter Volumes
User Workspaces)] + ForgejoData[(📚 Forgejo Data
forgejo/data/)] + + CostCalc --> PDFUploads + About --> CoursesCSV + Synapse --> MatrixData + JupyterHub --> JupyterVols + Forgejo --> ForgejoData + end + + subgraph "Infrastructure" + Watchtower[🔄 Watchtower
Auto-Updates
Every 24h] + Network[🌐 einszwovier_network
Docker Network] + end + + classDef webapp fill:#e3f2fd,stroke:#1976d2,stroke-width:2px + classDef service fill:#fff3e0,stroke:#f57c00,stroke-width:2px + classDef backend fill:#e8f5e9,stroke:#388e3c,stroke-width:2px + classDef storage fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px + classDef edu fill:#fce4ec,stroke:#c2185b,stroke-width:2px + classDef infra fill:#fafafa,stroke:#616161,stroke-width:2px + + class LP,About,CostCalc webapp + class BookStack,OpenWebUI,JupyterHub,Forgejo,ElementWeb,Portainer service + class Synapse,Ollama,MariaDB backend + class PDFUploads,CoursesCSV,MatrixData,JupyterVols,ForgejoData storage + class Notebooks,GitRepos,Knowledge edu + class Watchtower,Network infra diff --git a/images/architecture.png b/images/architecture.png new file mode 100644 index 0000000..8b3d9c4 Binary files /dev/null and b/images/architecture.png differ