2026-09-07 11:39:39 +02:00
2026-09-07 11:39:39 +02:00
2026-09-07 11:39:39 +02:00
2026-09-07 08:19:41 +02:00
2026-09-07 11:39:39 +02:00
2026-09-07 11:39:39 +02:00
2026-09-07 08:19:41 +02:00
2026-09-07 11:39:39 +02:00

3D Project Manager

Eine kleine Docker-basierte Webanwendung, um 3D-Druck-Projekte zu verwalten: Projekte anlegen, STL-/3MF-Dateien per Drag & Drop hochladen und direkt im Browser als 3D-Vorschau betrachten.

Setup

  1. .env.example nach .env kopieren und zwei Werte setzen:

    • PROJECTS_DIR: Ordner auf deiner Festplatte, in dem deine Projekte als normale Unterordner angelegt werden — den kannst du auch direkt im Dateimanager oder Slicer öffnen.

      PROJECTS_DIR=/home/deinname/3d-projects
      
    • PASSWORD_SHA256: SHA256-Hash deines gewünschten Login-Passworts. Erzeugen z. B. mit:

      echo -n "meinPasswort" | sha256sum
      

      Nur den resultierenden Hex-Hash in die .env eintragen, nicht das Passwort selbst.

  2. Container bauen und starten:

    docker compose up --build -d
    
  3. Im Browser öffnen: http://localhost:8080 — du wirst zur Login-Seite weitergeleitet und musst das Passwort eingeben.

Login

  • Es gibt nur ein Passwort, keinen Nutzernamen. Wer das Passwort kennt, hat Zugriff.
  • Nach erfolgreichem Login wird eine signierte, HttpOnly-Session-Cookie gesetzt (30 Tage gültig). Der Signierschlüssel liegt im app-settings-Volume und bleibt über Container-Neustarts hinweg gleich, d. h. du bleibst eingeloggt.
  • "Abmelden" oben rechts löscht die Session.
  • Nach 5 Fehlversuchen in Folge wird der Login für 30 Sekunden gesperrt.
  • Wichtig: Diese Anwendung ist für den Einsatz auf deinem eigenen Desktop/Heimnetz gedacht. Für Zugriff über das Internet solltest du zusätzlich HTTPS (z. B. über einen Reverse Proxy) einrichten, da das Passwort sonst unverschlüsselt übertragen wird.

Wie es funktioniert

  • Projekt anlegen → im Container wird PROJECTS_DIR/<Projektname> erstellt (durch den Bind-Mount landet das direkt auf deiner Platte).
  • Dateien hochladen → per Drag & Drop oder Klick auf die Upload-Fläche, nur .stl und .3mf werden akzeptiert. Sie werden 1:1 in den Projektordner kopiert.
  • 3D-Vorschau → beim Öffnen eines Projekts wird für jede Datei ein eigener Three.js-Viewer (mit Zoom/Rotation per Maus) im Grid angezeigt.
  • App-Einstellungen/Metadaten liegen ausschließlich im app-settings-Docker-Volume, nicht in deinem Projektordner. Aktuell benötigt die App noch keine eigene Konfiguration, aber der Ordner ist für spätere Erweiterungen (z. B. Nutzerverwaltung) bereits vorbereitet.

Projektstruktur auf der Festplatte

<PROJECTS_DIR>/
  Gehäuse-Prototyp/
    deckel.stl
    boden.3mf
  Ersatzteil/
    halterung.stl

Reine Ordner mit deinen Dateien — du kannst sie auch außerhalb der App öffnen, kopieren oder in deinen Slicer ziehen. Lösch- und Umbenennungen über den Dateimanager wirken sich beim nächsten Laden der Seite ebenfalls auf die App aus.

Bekannte Grenzen (erster Wurf)

  • Single-User, kein Login.
  • Projekt-/Dateinamen sind auf Buchstaben, Zahlen, Leerzeichen, - und _ beschränkt (Schutz gegen Pfad-Tricks).
  • Kein Undo beim Löschen — es wird aber vorher immer nachgefragt.

Stack

  • Backend: FastAPI (Python), liefert API + statische Frontend-Dateien aus einem einzigen Container.
  • Frontend: reines HTML/CSS/JS, 3D-Rendering mit Three.js (STLLoader / 3MFLoader) via CDN.
  • Docker Compose mit Bind-Mount für Projekte und separatem Volume für App-Settings.
Description
No description provided
Readme 76 KiB
Languages
JavaScript 46.2%
CSS 23.9%
Python 22.1%
HTML 6.6%
Dockerfile 1.2%