# 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<br>studio-einszwovier.local] 
        About[About Page<br>/about]
        CostCalc[Cost Calculator<br>/cost]
        Mailto[Contact Email<br>mailto:einszwovier@gvb-gymnasium.de]
        DocmostPage[Wissenssammlung<br>Docmost @ :3000]
        ChatbotPage[Lokaler Chatbot<br>:8080]
    end

    subgraph MatrixServer ["Matrix Server"]
        MatrixSrv[Matrix Server<br>Collects print jobs & payments]
    end

    subgraph DocmostServer ["Docmost Server"]
        DocmostSrv[Docmost Server<br>Manages manuals & docs]
    end

    subgraph AdminPanel ["Administration"]
        Portainer[Portainer Admin Panel<br>: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<br>:11434]
    ChatbotPage --> OpenWebUI[Open WebUI<br>: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;
