--- type: project name: 3d.lehrstun.de status: entwurf domain: 3d.lehrstun.de deployed: false next_step: "Kurskonzept mit Markus durchgehen, offene Fragen klären" tags: [schule, 3d-druck, web, ag] --- # 3D-Druck-AG — 3d.lehrstun.de > Vault-Startseite: [[COCKPIT]]. Hauptkonzept: [[kurskonzept]]. Architektur: [[architektur]]. > Offene Klärungen: [[offene-fragen]]. Entscheidungen: [[decisions]]. Etappen: [[etappen]]. **Status:** **Etappe 1+2 läuft lokal** (Stand 2026-05-24). Login, progressives Cockpit, Check-In, Onboarding-Status, Paarung, Drill-Down-Lehrer-Dashboard, Lehrer-Notiz-Banner — alles funktional. Smoke-Test bestanden. **Repo:** http://46.225.114.15:3000/admin/3d.lehrstun.de (SSH: `ssh://git@46.225.114.15:2222/admin/3d.lehrstun.de.git`) **Port intern:** 5057 (5055=quiz-collector, 5056=arduino-db). **Brand:** 3D-Druck-AG **Admin-Passwort lokal:** `lokal-test-123` (in `.env`) ## Kontext (Kurzfassung) - Wahl-AG Klasse 8 MINT, **8-10 Einzel-SuS** (optional 2er-Paarungen). - **4 Bambu-Lab-Drucker**: 3× geschlossen (P1S/X1C/P2S) + 1× A1 mini (offen). - Eigener Druckraum, dauergelüftet. PLA + PLA+ Default, PETG/ABS unter Aufsicht. - Drucker dürfen über Nacht / Freistunden laufen. - Herb hat 3D-Druck **selbst noch nie unterrichtet** — Inhalte folgen mit Markus. - Drucker-Status via **Bambu Cloud-API** (Polling, mit Fallback auf manuell). - **Login:** Vorname + Tier-Icon + 4-stellige PIN. Sichtbarkeit: Lehrer voll, SuS nur Projekttitel. ## Quickstart (lokal) ```bash cd D:/Claude-Projekte/3d.lehrstun.de # Einmalig: venv + Pakete python -m venv venv venv/Scripts/python.exe -m pip install -r requirements.txt cp .env.beispiel .env # ADMIN_PASSWORT eintragen! # Schema + Initial-Seeds venv/Scripts/python.exe seed.py # App starten venv/Scripts/python.exe app.py # http://localhost:5057 ``` **Funktionierende Routen (Etappe 1):** - `/` Startseite - `/login` Profil-Kacheln (anfangs leer, im Admin anlegen) - `/login/` PIN-Eingabe mit persistentem Lockout (V7) - `/cockpit` Stub (Etappe 2 macht das progressiv) - `/admin/login` Admin-Login mit Passwort aus `.env` - `/admin/profile` SuS-Profile + Neuanlage + PIN-Reset + aktiv-Toggle - `/admin/profile/karten` Druckbogen für PIN-Karten (CSS-Print) - `/admin/inline-edit` Universal-Endpoint mit Whitelist + Audit-Log Alle anderen Routen geben **501** + Verweis auf die Etappe. ## Update-Workflow auf Hetzner (vor erstem Deploy noch einzurichten) ```bash ssh herb@46.225.114.15 cd ~/3d.lehrstun.de git pull origin master sudo systemctl stop 3d-ag python3 migrations/YYYY-MM-DD_xxx.py sudo systemctl start 3d-ag ``` ## Nächste Schritte - [x] Skelett + Obsidian-Vault anlegen (2026-05-23) - [x] Reality-Check + Konzept v2 (2026-05-24) - [x] **Etappe 1: Blueprints + Schema + Login + Admin + Inline-Edit + Lockout** (2026-05-24) - [ ] [[kurskonzept]] mit Markus durchgehen - [ ] [[offene-fragen]] klären (Bambu-Account, A1-mini-Firmware) - [ ] Lokales Git-Repo + Gitea-Push - [ ] **Etappe 2:** Cockpit progressiv + Check-In + Paarung + [[lehrer-dashboard|Lehrer-Dashboard]] - [ ] Etappe 3: Lektionen + Software-Sektion + Troubleshooting - [ ] Etappe 4: Drucker-API-Spike → [[druckerapi]] - [ ] DNS-A-Record `3d.lehrstun.de` → 46.225.114.15 (via Hetzner Cloud DNS-CLI, vor Etappe 9) ## Querverbindungen - Schwester-Projekt: `D:/Claude-Projekte/arduino.lehrstun.de/` (Stack + Design + Code-Quelle) - PummelHummel/Alph: `D:/Claude-Projekte/PummelHummel/` (Integration in Etappe 8) - Hetzner-DNS-CLI: `D:/Claude-Projekte/hetzner-dns-cli/` - Detail-Doku: `docs/` (22 Markdown-Dateien als Obsidian-Vault verlinkt)