From b9750b7fb079b4b49e69a62ffd0f46fc439cc411 Mon Sep 17 00:00:00 2001 From: LuckyTrixx Date: Mon, 7 Sep 2026 08:19:41 +0200 Subject: [PATCH] Dateien nach "/" hochladen --- .env.example | 10 +++++++ Dockerfile | 19 ++++++++++++ README.md | 72 ++++++++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 17 +++++++++++ 4 files changed, 118 insertions(+) create mode 100644 .env.example create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 docker-compose.yml diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..26635f1 --- /dev/null +++ b/.env.example @@ -0,0 +1,10 @@ +# Copy this file to .env and set the absolute path to the folder on your +# desktop where your projects (and their STL/3MF files) should live. +# +# Linux/macOS example: +# PROJECTS_DIR=/home/yourname/3d-projects +# +# Windows (Docker Desktop) example: +# PROJECTS_DIR=C:/Users/yourname/3d-projects + +PROJECTS_DIR=/home/yourname/3d-projects diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..50cf809 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,19 @@ +FROM python:3.11-slim + +WORKDIR /app + +COPY backend/requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +COPY backend/main.py . +COPY static ./static + +# Data directories inside the container (bind-mounted/volumed at runtime, +# but created here so the app also works without an explicit mount). +RUN mkdir -p /data/projects /data/settings + +ENV PROJECTS_DIR=/data/projects + +EXPOSE 8080 + +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..e5279d2 --- /dev/null +++ b/README.md @@ -0,0 +1,72 @@ +# 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 `PROJECTS_DIR` auf einen Ordner + auf deiner Festplatte setzen, z. B.: + + ``` + PROJECTS_DIR=/home/deinname/3d-projects + ``` + + Das ist der Ordner, in dem deine Projekte als normale Unterordner + angelegt werden — den kannst du auch direkt im Dateimanager oder Slicer + öffnen. + +2. Container bauen und starten: + + ``` + docker compose up --build -d + ``` + +3. Im Browser öffnen: [http://localhost:8080](http://localhost:8080) + +## Wie es funktioniert + +- **Projekt anlegen** → im Container wird `PROJECTS_DIR/` + 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 + +``` +/ + 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. diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..4e73ba9 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,17 @@ +services: + app: + build: . + container_name: 3d-project-manager + ports: + - "8080:8080" + volumes: + # Your projects live here as plain folders on your desktop. + # Set PROJECTS_DIR in the .env file to an absolute path, e.g. + # PROJECTS_DIR=/home/yourname/3d-projects + - ${PROJECTS_DIR}:/data/projects + # App-internal state only, not your files. Stays inside Docker. + - app-settings:/data/settings + restart: unless-stopped + +volumes: + app-settings: