3D-Druck Kostenkalkulation

Web-App zur Kalkulation von 3D-Druck-Kosten mit PDF-Rechnung und TXT-Export.

Setup

source .venv/bin/activate
pip install flask fpdf2 pyyaml

Start

python app.py

-> http://127.0.0.1:5001

Funktionen

  • Live-Berechnung bei jeder Eingabe (Material, Strom, Abschreibung, Arbeit, Gewinn)
  • Dark Mode (persistiert in YAML-Konfiguration)
  • PDF-Rechnung mit Logo, Kundendaten und Positionstabelle (via fpdf2)
  • TXT-Export der Kalkulation
  • Auto-Save aller Werte via AJAX (debounced 500ms)
  • Einstellungsseite für Druckerabschreibung, Arbeitskosten, MwSt., Stromkosten, Firmendaten, Logo
  • Logo-Upload (PNG/JPEG/WebP) für die Rechnung

Installation auf Proxmox (LXC-Container)

Das Skript proxmox-setup.sh erstellt einen Ubuntu-24.04-LXC-Container, klont das Repository, installiert alle Abhangigkeiten und richtet einen systemd-Service ein.

Auf dem Proxmox-Host als root ausfuhren:

bash -c "$(curl -fsSL https://gitea.teamthiele.de/ethiele/3ddruckkalkulation/raw/branch/main/proxmox-setup.sh)"

Nach Abschluss ist die App unter http://<CONTAINER-IP>:5001 erreichbar. Container-ID und Name konnen als Argumente ubergeben werden:

bash -c "$(curl -fsSL https://gitea.teamthiele.de/ethiele/3ddruckkalkulation/raw/branch/main/proxmox-setup.sh)" - 105 mein-container

Container-Zugriff:

pct enter 201                  # Shell im Container
systemctl status 3ddruck-kalkulation.service
journalctl -u 3ddruck-kalkulation.service -f

Update des Containers

proxmox-update.sh aktualisiert den Container via Git und startet den Service neu.

Im Container ausfuhren:

./proxmox-update.sh

Vom Proxmox-Host aus:

./proxmox-update.sh 201

Das Skript holt via curl die aktuelle Version aus dem Gitea-Repo, pullt, installiert ggf. neue Dependencies und restartet den systemd-Service.

Technik

Komponente Technologie
Backend Flask (Python)
Frontend Tabler CSS, Bootstrap 5
Icons Tabler Icons
PDF fpdf2 (importiert als fpdf)
Config YAML (Auto-Save)

Projektstruktur

app.py                         # Flask-Server mit allen Routen
templates/index.html           # Hauptseite (Formular + Ergebnisse)
templates/invoice.html         # Rechnungsseite
templates/settings.html        # Einstellungen
static/style.css               # Minimales Custom-CSS
static/script.js               # Live-Berechnung + Auto-Save
proxmox-setup.sh               # Ersteinrichtung LXC-Container
proxmox-update.sh              # Update LXC-Container
druckkalkulation_config.yaml   # Automatisch erstellte Konfiguration
3dDruckKalkulator.py           # Alte Tkinter-Version (unused)

Hinweise

  • fpdf2 wird als fpdf importiert (alte API, from fpdf import FPDF)
  • Alle UI-Texte sind Deutsch
  • Die YAML-Config wird automatisch erstellt und bei jedem Tastendruck gespeichert
  • Die alte 3dDruckKalkulator.py (Tkinter) wird nicht mehr verwendet
Description
No description provided
Readme 859 KiB
Languages
HTML 47.4%
Python 29.9%
JavaScript 12.5%
Shell 9.6%
CSS 0.6%