Files
3d.lehrstun.de/CLAUDE.md
Hans Puettmann 4658d4931a Initial commit: Konzept v2 + Etappe 1 (Blueprints + Login + Profile)
Schwester-Projekt zu arduino.lehrstun.de fuer die 3D-Druck-AG am
Lessing-Gymnasium. Offene jahrelange Nachmittags-AG (kein Trimester),
8-10 Einzel-SuS mit optionalen 2er-Paarungen, 4 Bambu-Lab-Drucker
(3 geschlossen + 1 A1 mini).

Konzept v2 (Reality-Check-Iteration 2026-05-24):
- Onboarding-Pfad statt Pflicht-Lektionen (L1-L3 selbst-zertifiziert)
- Selbstlern-Loop als Kern: SuS-Projekte wachsen die interne Bibliothek
- Drill-Down-Lehrer-Dashboard (Wer ist hier / Wartet Review / Haengt fest)
- Cockpit progressiv: zeigt nur was zum Status passt
- Bambu-Cloud-API fuer Drucker-Live-Status (fragil + Fallback manuell)
- Three.js-Vorschau fuer Cover-aus-3D-Ansicht (Etappe 6)
- Vollstaendige Doku als Obsidian-Vault (24 Markdown-Dateien)
- Entscheidungen E-001 bis E-022 in docs/decisions.md

Etappe 1 lauffaehig (~1800 Zeilen Code):
- Blueprint-Struktur (V8): routes/oeffentlich+profil+admin+api,
  services/auth+bambu+datei
- Komplettes Schema in database.py (14 Tabellen, idempotent)
- Login mit bcrypt + persistentem Lockout in DB (V7, verbessert ggue
  Arduino-Kurs der In-Memory-Dict nutzt)
- Admin-Login + Profile-CRUD + PIN-Reset + PIN-Karten-Druckbogen
- Inline-Edit-Endpunkt mit Whitelist + Audit-Log
- Seeds: AG lessing-3d-ag + 4 Drucker + Default-Einstellungen
- Smoke-Test bestanden (Login, Profil-Anlage, Lockout-Logging)

Nicht im Repo (.gitignore): .env, *.db, venv/, .obsidian/workspace.json
2026-05-24 18:56:59 +02:00

84 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 läuft lokal** (Stand 2026-05-24). Login + Admin + Inline-Edit-Infra + Blueprint-Struktur funktional. Smoke-Test bestanden (Admin-Login, Profil-Anlage, SuS-Login mit PIN, Lockout-Logging).
**Repo:** noch nicht angelegt (lokales Git folgt nach Markus-Review).
**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/<id>` 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)