# webapp_124 Minimal **FastAPI**-based PDF print-cost calculator with optional ink-coverage adjustment. This project is part of **Studio EinsZwoVier**, a collaborative environment. Everyone is invited to contribute improvements. See the [source code](https://forgejo.petau.net/aron/124-webapp). --- ## Features - **Landing Page**: Overview of all available tools and links. - **Cost Calculator**: Calculate print and material costs for posters and large-format prints. - **Docmost / Wissenssammlung**: Shared knowledge library for manuals and documentation. - **Local Chatbot**: Access your own Large Language Models via Open WebUI and Ollama. - **Matrix Server**: Collects print jobs and payments. - **Administration**: Manage the Docker stack via Portainer. - **Automatic Updates**: Watchtower updates all containers every 24 hours and cleans up old images. --- ## Getting Started ### Prerequisites - Docker & Docker Compose installed - Optional: local network access to `einszwovier.local` for local services if the server is moved, replace with new host --- ### Run the Stack ```bash docker-compose up --build -d graph TD %% --- Subgraphs for clarity --- subgraph WebApp ["Studio EinsZwoVier - Internal Web Pages"] LP[Landing Page
studio-einszwovier.local] About[About Page
/about] CostCalc[Cost Calculator
/cost] Mailto[Contact Email
mailto:einszwovier@gvb-gymnasium.de] DocmostPage[Wissenssammlung
Docmost @ :3000] ChatbotPage[Lokaler Chatbot
:8080] end subgraph MatrixServer ["Matrix Server"] MatrixSrv[Matrix Server
Collects print jobs & payments] end subgraph DocmostServer ["Docmost Server"] DocmostSrv[Docmost Server
Manages manuals & docs] end subgraph AdminPanel ["Administration"] Portainer[Portainer Admin Panel
:9000] end %% --- Landing page links --- LP --> About LP --> CostCalc LP --> Mailto LP --> DocmostPage LP --> ChatbotPage LP --> Portainer %% --- Cost Calculator workflow --- CostCalc --> PDF[PDF Upload] PDF --> Quote[Generate Quote] Quote --> MatrixSrv %% --- Docmost workflow --- DocmostPage --> DocmostSrv %% --- Chatbot workflow --- ChatbotPage --> Ollama[Ollama AI Server
:11434] ChatbotPage --> OpenWebUI[Open WebUI
:8080] %% --- Optional styling for clarity --- classDef internal fill:#e3f2fd,stroke:#90caf9,stroke-width:1px; classDef external fill:#fff3e0,stroke:#ffb74d,stroke-width:1px; class LP,About,CostCalc,Mailto,DocmostPage,ChatbotPage internal; class MatrixSrv,DocmostSrv,Ollama,OpenWebUI,Portainer external;