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
9.1 KiB
type, projekt, stand, tags
| type | projekt | stand | tags | ||||
|---|---|---|---|---|---|---|---|
| konzept-modul | 3d.lehrstun.de | 2026-05-24 |
|
Selbstlern-Loop
Der Kern der 3D-Druck-AG-Site. Was uns vom Arduino-Kurs unterscheidet: Die Site wächst durch die SuS selbst. Jedes abgeschlossene Projekt landet nach Lehrer-Freigabe in der internen Bibliothek. Neue SuS sehen: "Bei uns hat das schonmal jemand gemacht — und so ging's aus." Das schlägt jeden externen Modell-Katalog.
Architektur-Einbettung: architektur. Datenmodell: datenmodell#projekt, datenmodell#projekt_datei, datenmodell#projekt_tag. Lehrer-Sicht: lehrer-dashboard.
Der Lebenszyklus eines Projekts
stateDiagram-v2
[*] --> Stoebern
Stoebern --> Ausgewaehlt: SuS wählt aus Katalog (oder eigene Idee)
Ausgewaehlt --> InArbeit: Projekt angelegt im Cockpit
InArbeit --> InArbeit: Dateien hochladen, slicen, drucken, iterieren
InArbeit --> AbschlussCheckliste: Knopf "Projekt beenden"
AbschlussCheckliste --> WartetAufFreigabe: Pflicht-Checkliste erfüllt
AbschlussCheckliste --> InArbeit: Zurück (Checkliste unvollständig)
WartetAufFreigabe --> Freigegeben: Lehrer-OK
WartetAufFreigabe --> Rueckfrage: Lehrer hat Hinweis
Rueckfrage --> InArbeit: SuS bessert nach
WartetAufFreigabe --> [*]: Lehrer hart-löscht (Penismodell etc.)
Freigegeben --> [*]: Projekt im Katalog sichtbar
Freigegeben --> Stoebern: Andere SuS wählt es als Vorlage
Station 1: Stöbern
UI: /projekte — Projekt-Katalog.
Inhalt:
- Karten mit Cover-Foto, Titel, Macher (Vorname + Tier-Icon), Selbsteinschätzung (🟢🟡🔴), Tags.
- Filter: nach Tag, Schwierigkeitslevel (Anfänger/Mittel/Fortgeschritten), Erfolgsstatus, Macher.
- Auch ZSL-Projekte (umgearbeitet, mit CC-BY-4.0-Nachweis — siehe ../decisions#E-022) erscheinen als Karten.
- Suchfeld für Titel-Volltext.
Ankerseite für die Vernetzung (Variante 1): SuS sucht selbst, kein Auto-Match-Knopf. Wenn Mia das gleiche Projekt schon gemacht hat, sieht der neue SuS die Karte und kann sie in der AG-Stunde ansprechen.
Station 2: Auswählen
UI: /cockpit/projekt/neu.
Drei Optionen:
- Aus Katalog: SuS klickt auf eine Karte → „Sowas mache ich auch" → neues Projekt-Datensatz mit
vorlage_projekt_idbefüllt. Titel + Tags vorausgefüllt, SuS kann anpassen. - Komplett eigene Idee: leerer Titel + Beschreibung.
- Onboarding-Pflicht-Projekt (z.B. L2 „erstes Modell drucken"): die Lektion legt automatisch ein Projekt an.
Station 3: Arbeiten
UI: Cockpit-Karte „Eigene Projekte" mit Liste der eigenen status_lebenszyklus='in_arbeit'-Projekte.
Was passiert hier:
- Datei-Uploads (laufend oder am Ende, frei): STL, 3MF, Fotos, Sonstiges. Limit 30 MB pro Datei.
- Beschreibung pflegen (Markdown).
- Druckaufträge anlegen (
/cockpit/druckauftrag/neu), Slots reservieren. - Mit anderen SuS in der AG sprechen — die Site lenkt nicht aktiv.
Station 4: Abschluss-Checkliste
UI: /cockpit/projekt/<id>/abschluss.
Pflicht-Felder (V4, radikal kurz):
- Selbsteinschätzung (Pflicht, eine Wahl):
- 🟢 Bin zufrieden, würde es so wieder machen
- 🟡 Funktioniert, aber ich würde Sachen anders machen
- 🔴 Hat nicht geklappt, aber ich habe was gelernt
- Cover-Foto ODER STL/3MF (mindestens eines): ein Bild, das im Katalog erscheint. Wenn nur STL vorhanden: Lehrer kann beim Review per Three.js-Vorschau einen Screenshot machen.
- Mindestens 1 Tag (frei wählbar oder aus kuratierter Liste).
Optional, aber empfohlen:
- Beschreibungs-Freitext (Markdown).
- Freitext „Was würdest du anderen mit auf den Weg geben?" — wird im Detail bei der Karte angezeigt, ist die wichtigste Lehrgeld-Quelle für nächste SuS.
- Weitere Dateien.
Knopf „Abschicken": ist erst aktivierbar, wenn alle Pflicht-Felder erfüllt sind.
Nach Abschicken: freigabe_status = 'wartet_auf_freigabe', im Cockpit erscheint die Karte mit Hinweis „Wartet auf Lehrer-Freigabe (typisch 1-3 Tage)".
Station 5: Lehrer-Review
UI: /admin/projekt-freigabe (Liste) → /admin/projekt-freigabe/<id> (Detail).
Drei Aktionen (siehe ../decisions#E-017):
A) Freigeben
- Lehrer prüft Cover-Foto, Beschreibung, Tags, Dateien.
- Darf Inline-editieren: Titel, Beschreibung, Tags (siehe routen#inline-edit-whitelist). Audit-Log dokumentiert jede Änderung.
- Optional: Three.js-Screenshot als Cover speichern, wenn SuS keines hochgeladen hat.
- Klick „Freigeben" →
freigabe_status = 'freigegeben', sofort im Katalog sichtbar.
B) Rückfrage stellen
- Lehrer tippt Notiz (z.B. „Cover-Foto fehlt, mach bitte eines vor dem Drucker").
- Klick „Rückfrage" →
freigabe_status = 'rueckfrage', Eintrag inprojekt_rueckfrage. - SuS sieht beim nächsten Login gelbes Banner ganz oben im Cockpit (V6): „Markus hat eine Rückfrage zu deinem Projekt X: …".
- SuS bessert nach, klickt im Cockpit „Rückfrage erledigt + erneut zur Freigabe" → zurück auf
wartet_auf_freigabe.
C) Hart löschen
- Für Penismodelle, Copyright-Probleme, sonstige problematische Inhalte.
- Bestätigungsdialog: „Wirklich löschen? Dateien sind danach weg."
- Audit-Log behält: Datum, Lehrer-Profil-ID, SuS-Vorname + Tier, optional Grund. Dateien selbst werden physisch entfernt.
Station 6: Im Katalog
UI: /projekte zeigt das Projekt für alle eingeloggten SuS.
Detail-Seite /projekte/<id>:
- Cover-Foto groß
- Titel + Macher (Vorname + Tier-Icon)
- Selbsteinschätzung als Badge (🟢🟡🔴)
- Tags als Chips (klickbar → Filter)
- Beschreibung
- „Was würdest du anderen mitgeben?" — als hervorgehobener Block
- Dateien-Liste mit Download-Buttons (Auth-Check: nur eingeloggte SuS)
- Three.js-Vorschau, wenn STL vorhanden
- Knopf „Sowas mache ich auch" → legt neues Projekt mit
vorlage_projekt_idan
Wichtig: SuS kann das eigene Projekt auch nachträglich verbergen (sichtbar_in_ag = 0) — z.B. wenn ihm das später peinlich ist. Lehrer sieht es weiterhin im Admin.
Vernetzung in der Praxis (Variante 1)
Die Site vermittelt nicht aktiv. Aber sie macht sichtbar, wer was schon gemacht hat. Drei Realsituationen:
-
Neuer SuS sucht Projekt-Idee: Klickt im Katalog herum, sieht „Schlüsselanhänger — Mia, 🟢". Geht in der nächsten AG zu Mia: „Wie hast du das gemacht?" Mia kann die Hilfe leisten, weil sie ihren Stand selbst dokumentiert hat.
-
SuS-Stuck-Situation: Tom hängt mit dem Drohnenrahmen fest. Lehrer schaut im Drill-Down-Dashboard (siehe lehrer-dashboard), sieht „Drohne — Lara, 🟡". Lehrer vermittelt: „Lara hat sowas gemacht, frag sie."
-
Erfahrener SuS wird Mentor: Wenn Mias Projekt 3x als Vorlage gewählt wurde (
vorlage_projekt_idzeigt darauf), wäre denkbar, dass Mia einen „Mentor"-Badge bekommt. Aktuell nicht implementiert — als spätere Idee in offene-fragen.
ZSL-Material als Initial-Inhalt
Bei Kursstart ist die Bibliothek leer. Damit neue SuS nicht ins Nichts schauen, kommen 8-10 ZSL-Projekte als Seed-Inhalt (siehe ../decisions#E-022):
- Markus + Herb wählen Projekte gemischter Schwierigkeit aus den 20+ ZSL-Vorlagen.
- Beschreibungen werden in unser Design umgearbeitet (mit CC-BY-4.0-Nachweis pro Karte: „Vorlage: Tilo Bödigheimer, ZSL Baden-Württemberg, CC-BY-4.0").
- Bilder + STLs übernehmen wir 1:1 mit Quelle.
- Diese Projekte erscheinen als reguläre Katalog-Karten, sind aber markiert als „Vorlagen-Projekt" (Tag
zsl-vorlageoder Badge). - SuS können sie als Vorlage wählen — dadurch entstehen eigene Projekte daraus, die wiederum in den Katalog landen.
Sichtbarkeit für SuS
- Andere SuS sehen: Cover, Titel, Macher, Tags, Selbsteinschätzung, Dateien, Beschreibung, „Was würdest du anderen mitgeben?".
- Andere SuS sehen NICHT: Druckaufträge, Slots, Stand-Notizen, Stunden-Beginn-Abfragen anderer.
- Macher selbst: sieht alles + kann eigene Projekte editieren (während
in_arbeit). - Lehrer: sieht alles immer, kann immer editieren (im Review-Modus oder via Admin).
Konsistent mit ../decisions#E-004 („Inspiration ja, Vergleich nein").
Spätere Erweiterungen (nicht in Etappe 6)
Diese Ideen sind im Konzept dokumentiert, aber nicht zur Initial-Implementation geplant:
- Mentor-Badge für SuS, deren Projekte oft als Vorlage gewählt werden.
- Kommentar-Funktion unter Projekten („Mia, wie hast du den Support entfernt?").
- Foto-Galerie pro Projekt (mehrere Fotos im Lifecycle: Anfang, Mitte, Druck, Fertig).
- Externe Veröffentlichung einzelner Projekte auf Printables/MakerWorld (mit SuS-Zustimmung + Eltern-OK).
- Speicher-Optimierung: Migration der BLOB-Dateien auf Hetzner Object-Storage, sobald DB > 5 GB (siehe ../decisions#E-016).
Querverweise
- DB-Schema: datenmodell#projekt, datenmodell#projekt_datei, datenmodell#projekt_tag, datenmodell#projekt_rueckfrage
- Routen: routen
- Lehrer-Sicht: lehrer-dashboard
- Entscheidungen: ../decisions#E-014 (Loop), ../decisions#E-015 (Feedback), ../decisions#E-016 (Files), ../decisions#E-017 (Review), ../decisions#E-018 (Three.js)