add element web

This commit is contained in:
Aron Petau 2025-11-05 14:55:11 +01:00
parent 98417edd8b
commit 000ec5d25f
9 changed files with 209 additions and 236 deletions

150
README.md
View file

@ -1,6 +1,6 @@
# Studio EinsZwoVier Web Application
# studio einszwovier Web Application
**FastAPI-based PDF print cost calculator** with automated ink coverage analysis, Matrix integration, and multi-service hub for Studio EinsZwoVier Maker Space.
**FastAPI-based PDF print cost calculator** with automated ink coverage analysis, Matrix integration, and multi-service hub for studio einszwovier Maker Space.
[![Docker](https://img.shields.io/badge/Docker-Ready-2496ED?logo=docker)](https://www.docker.com/)
[![FastAPI](https://img.shields.io/badge/FastAPI-0.104+-009688?logo=fastapi)](https://fastapi.tiangolo.com/)
@ -33,100 +33,84 @@
```mermaid
graph TB
subgraph "Studio EinsZwoVier Web App (Port 80)"
LP[🏠 Landing Page<br/>studio-einszwovier.local]
About[ About Page<br/>/about<br/>Courses + Team Info]
Cost[💰 Cost Calculator<br/>/cost<br/>PDF Analysis]
subgraph "studio einszwovier Web Platform"
LP[🏠 Landing Page<br/>Port 80]
About[ About Page<br/>/about]
CostCalc[💰 Cost Calculator<br/>/cost]
LP --> About
LP --> Cost
LP --> CostCalc
end
subgraph "Course Management"
CSV[📝 courses.csv<br/>Title, Description, Dates, Image]
Images[🖼️ Course Images<br/>static/images/courses/]
Modal[🔍 Image Modal<br/>Click to Enlarge]
About --> CSV
CSV --> Images
Images --> Modal
subgraph "Services Accessible from Landing Page"
BookStack[<5B> BookStack<br/>Port 6875<br/>Wissenssammlung]
OpenWebUI[🤖 Open WebUI<br/>Port 8080<br/>LLM Chatbot]
JupyterHub[<5B> JupyterHub<br/>Port 8001<br/>Python Notebooks]
Forgejo[🦊 Forgejo<br/>Port 3003<br/>Git Server]
ElementWeb[<5B> Element Web<br/>Port 8082<br/>Matrix Chat]
Portainer[<5B> Portainer<br/>Port 9000<br/>Admin Panel]
LP -.->|Link| BookStack
LP -.->|Link| OpenWebUI
LP -.->|Link| JupyterHub
LP -.->|Link| Forgejo
LP -.->|Link| ElementWeb
LP -.->|Link| Portainer
end
subgraph "PDF Processing Pipeline"
Upload[📤 Upload PDF]
Analysis[🔬 Analyze<br/>- Dimensions<br/>- Ink Coverage<br/>- Color Detection]
Quote[📋 Quote Generation<br/>Per-page Breakdown]
Cost --> Upload
Upload --> Analysis
Analysis --> Quote
end
subgraph "Matrix Integration"
MatrixRoom[💬 Matrix Room<br/>Print Orders]
PDF_Upload[📎 PDF Attachment]
Summary[📊 Order Summary<br/>German Language]
Quote --> MatrixRoom
Quote --> PDF_Upload
Quote --> Summary
end
subgraph "Integrated Services"
BookStack[📚 BookStack Wiki<br/>:6875]
Ollama[🤖 Ollama LLM<br/>:11434]
OpenWebUI[💭 Open WebUI<br/>:8080]
Portainer[🐳 Portainer<br/>:9000]
Synapse[📨 Matrix Synapse<br/>:8008]
JupyterHub[📓 JupyterHub<br/>:8001<br/>Drone Programming]
Forgejo[🦊 Forgejo Git<br/>:3003<br/>Code Collaboration]
LP -.-> BookStack
LP -.-> OpenWebUI
LP -.-> Portainer
LP -.-> JupyterHub
LP -.-> Forgejo
subgraph "Backend Services"
Synapse[<5B> Synapse<br/>Port 8008<br/>Matrix Server]
Ollama[🔮 Ollama<br/>Port 11434<br/>LLM Engine]
MariaDB[(<28> MariaDB<br/>BookStack DB)]
ElementWeb --> Synapse
OpenWebUI --> Ollama
MatrixRoom --> Synapse
BookStack --> MariaDB
CostCalc --> Synapse
end
subgraph "Educational Stack"
Notebooks[📒 Jupyter Notebooks<br/>Python Drone Code]
GitRepos[📦 Git Repositories<br/>Project Source Code]
DronePackages[🚁 djitellopy<br/>Tello SDK]
subgraph "Educational Resources"
Notebooks[📒 Drone Programming<br/>djitellopy Package]
GitRepos[📦 Code Repositories<br/>Project Source]
Knowledge[<5B> Documentation<br/>Guides & Tutorials]
JupyterHub --> Notebooks
Forgejo --> GitRepos
Notebooks -.-> DronePackages
BookStack --> Knowledge
end
subgraph "Data Persistence"
Uploads[📁 data/uploads/<br/>PDF Files]
Courses[📋 data/courses.csv<br/>Course List]
MatrixDB[(🗄️ Matrix DB<br/>homeserver.db)]
BookDB[(🗄️ BookStack DB<br/>MariaDB)]
JupyterVolumes[(💾 Jupyter Volumes<br/>User Workspaces)]
ForgejoData[(📚 Forgejo Data<br/>Git Repos)]
Upload --> Uploads
CSV --> Courses
Synapse --> MatrixDB
BookStack --> BookDB
JupyterHub --> JupyterVolumes
subgraph "Persistent Storage"
PDFUploads[📁 PDF Files<br/>data/uploads/]
CoursesCSV[📋 Courses CSV<br/>data/courses.csv]
MatrixData[(🗄️ Matrix Data<br/>matrix/data/)]
JupyterVols[(💾 Jupyter Volumes<br/>User Workspaces)]
ForgejoData[(📚 Forgejo Data<br/>forgejo/data/)]
CostCalc --> PDFUploads
About --> CoursesCSV
Synapse --> MatrixData
JupyterHub --> JupyterVols
Forgejo --> ForgejoData
end
subgraph "Infrastructure"
Watchtower[🔄 Watchtower<br/>Auto-Updates<br/>Every 24h]
Network[🌐 einszwovier_network<br/>Docker Network]
end
classDef webapp fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef service fill:#fff3e0,stroke:#f57c00,stroke-width:2px
classDef data fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef matrix fill:#e8f5e9,stroke:#388e3c,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,Cost,Upload,Analysis,Quote webapp
class BookStack,Ollama,OpenWebUI,Portainer,Synapse,JupyterHub,Forgejo service
class Uploads,Courses,MatrixDB,BookDB,JupyterVolumes,ForgejoData data
class MatrixRoom,PDF_Upload,Summary,CSV,Images,Modal matrix
class Notebooks,GitRepos,DronePackages edu
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
```
---
@ -380,7 +364,7 @@ docker compose up --build
### Project Structure
```
```zsh
.
├── main.py # FastAPI application
├── cost_calculator.py # PDF analysis logic
@ -417,7 +401,7 @@ docker compose up --build
## 🤝 Contributing
Contributions are welcome! This is part of **Studio EinsZwoVier**, a collaborative Maker Space.
Contributions are welcome! This is part of **studio einszwovier**, a collaborative Maker Space.
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
@ -429,13 +413,13 @@ Contributions are welcome! This is part of **Studio EinsZwoVier**, a collaborati
## 📄 License
This project is part of Studio EinsZwoVier educational initiative.
This project is part of studio einszwovier educational initiative.
---
## 📞 Contact
**Studio EinsZwoVier**
**studio einszwovier**
Gabriele-von-Bülow-Gymnasium
Tile-Brügge-Weg 63, 13509 Berlin (Tegel)
@ -452,8 +436,8 @@ Tile-Brügge-Weg 63, 13509 Berlin (Tegel)
- Ollama team for local LLM support
- BookStack for the documentation platform
- FastAPI community
- All contributors and students of Studio EinsZwoVier
- All contributors and students of studio einszwovier
---
**Made with ❤️ at Studio EinsZwoVier Maker Space**
Made with ❤️ at studio einszwovier Maker Space