Files
OZM-Keks-Handbuch-v1/KINDERRECHTE.md
Krümel Branko da67da3959 Add dual licensing (MIT + CKL v0.1), ecosystem docs, and children's rights documentation
- LICENSE.md: Dual license explanation (MIT + CKL)
- LICENSE-MIT.md: Full MIT text with plain language explanation
- LICENSE-CKL.md: Full Children's Knowledge License v0.1-draft
- OZM-NEXUS-ECOSYSTEM.md: Complete ecosystem architecture and governance
- KINDERRECHTE.md: Children's rights operationalization (export/deletion processes)
- README.md: Project overview with CKL badge and comprehensive documentation links
- CLAUDE.md: Project instructions for Claude Code

This establishes Crumbforest as part of the OZM⟡NEXUS ecosystem with:
- Dual licensing strategy (developer freedom + child protection)
- 8 axioms operationalized through CKL
- Clear governance path (OZM as custodian)
- DSGVO-compliant children's rights processes
- Roadmap through Q4 2025

"Wissen gehört dem Kind, solange es fragt."

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-13 03:11:34 +01:00

14 KiB
Raw Permalink Blame History

Deine Rechte bei Crumbforest 🌲

Für Kinder: Das hier gehört DIR. Wir passen darauf auf. Für Eltern: Dieses Dokument operationalisiert CKL §3 (Rechte der Kinder) und ist DSGVO-konform.


📦 Was gehört dir?

Alles, was du erschaffst, gehört dir nicht uns, nicht der Schule, nicht dem Internet.

Das sind deine Sachen:

  • ✍️ Texte: Alle Fragen, die du stellst. Alle Geschichten, die du schreibst.
  • 💻 Code: Alle Programme, die du baust (Python, Bash, Blockly...)
  • 🎨 Bilder: Alle Zeichnungen und Screenshots
  • 📊 Messungen: Alle Daten, die du sammelst (Temperatur, Bewegung, Sensoren...)
  • 💬 Chats: Alle Gespräche mit den Charakteren (Krümeleule, FunkFox...)
  • 🏗️ Projekte: Alles, was du mit Raspberry Pi, ESP32 oder anderen Tools baust

Wichtig: Auch wenn du das auf einem Computer von Crumbforest machst du bist der Besitzer oder die Besitzerin!

Das steht so im Gesetz (CKL §3.1 + DSGVO Art. 20).


💾 Wie bekomme ich meine Daten?

Du kannst jederzeit eine Kopie von allem verlangen, was du gemacht hast.

So geht's:

Wenn du mit CrumbCore arbeitest:

Aktuell (Stand 2025-12):

  • Sprich mit deinem Lehrer oder deiner Lehrerin
  • Oder schreibe eine Email an: [Kontakt wird ergänzt]
  • Wir schicken dir dann alles als Datei

Bald (geplant Q1 2025): Du kannst selbst auf einen Knopf drücken:

  1. Gehe zu deinem Profil
  2. Klicke auf "Meine Daten herunterladen"
  3. Du bekommst eine ZIP-Datei mit allem

Die Datei enthält:

meine-crumbforest-daten.zip
├── chats.json           (alle Gespräche)
├── projekte/            (deine Projekte)
│   ├── esp32-blink/
│   └── pi-server/
├── messungen.csv        (Sensor-Daten)
└── README.txt           (Erklärung, was was ist)

Alles in offenen Formaten (JSON, CSV, TXT, PNG) du kannst es mit jedem Programm öffnen!

Wenn du mit Crumbpages lernst:

  • Alle Markdown-Dateien sind sowieso frei zugänglich
  • Du kannst sie einfach kopieren: Rechtsklick → Kopieren
  • Oder das ganze Repo herunterladen (siehe QUICKSTART.md)

🗑️ Wie lösche ich meine Daten?

Manchmal möchte man nicht, dass alte Sachen gespeichert bleiben. Das ist okay!

Du kannst sagen: "Ich will, dass ihr alles von mir löscht."

So geht's:

Option 1: Alles löschen

  • Sprich mit deinem Lehrer/deiner Lehrerin
  • Oder schreibe eine Email mit deinen Eltern an: [Kontakt wird ergänzt]
  • Schreibe rein: "Bitte löscht alle meine Daten."

Was wir dann tun:

  1. Wir löschen alle deine Chats aus der Datenbank
  2. Wir löschen deine Projekte vom Server
  3. Wir löschen deinen Account
  4. Wichtig: Vorher fragen wir: "Willst du vorher eine Kopie?"

Das dauert maximal 7 Tage.

Option 2: Nur bestimmte Sachen löschen

Du kannst auch sagen: "Löscht nur dieses Projekt" oder "Löscht nur diese Chat-Nachricht".

Das geht genauso sag uns einfach, was weg soll.

Bald (geplant Q1 2025):

Du kannst selbst löschen:

  1. Gehe zu deinem Profil
  2. Klicke auf "Meine Daten verwalten"
  3. Wähle aus, was du löschen willst
  4. Bestätige: "Ja, wirklich löschen"

🔍 Was wird überhaupt gespeichert?

Wir speichern nur, was zum Lernen wichtig ist. Nicht mehr!

Das speichern wir:

Was? Warum? Wo? Wie lange?
Dein Benutzername Damit wir wissen, wer du bist CrumbCore Datenbank Bis du kündigst
Deine Chat-Nachrichten Damit die Charaktere sich erinnern CrumbCore Datenbank Bis du löschst
Deine Projekte (Code, Bilder...) Damit du später weiter machen kannst CrumbCore Dateisystem Bis du löschst
Sensor-Messungen Damit du deine Experimente auswerten kannst CrumbCore Datenbank Bis du löschst
Wann du dich einloggst Damit wir wissen, ob du noch aktiv bist CrumbCore Logfiles 90 Tage

Das speichern wir NICHT:

  • Keine Passwörter (nur verschlüsselte Hashes)
  • Keine IP-Adressen (außer temporär für Sicherheit)
  • Keine Tracking-Cookies
  • Keine "Werbe-ID" oder ähnliches
  • Keine Bilder von dir (außer du lädst sie hoch für ein Projekt)
  • Keine Sprachaufnahmen
  • Keine Bewegungsprofile

Crumbforest hat kein Google Analytics, kein Facebook Pixel, keine Spionage-Tools.

Wer kann meine Daten sehen?

  1. Du selbst (immer)
  2. Dein Lehrer/deine Lehrerin (wenn du in einem Kurs bist)
  3. Die Admins von Crumbforest (nur für technischen Support)
  4. Niemand sonst!

Wir verkaufen deine Daten NIEMALS. Nie, nie, nie.

Das ist gesetzlich verboten (DSGVO) und gegen die CKL.


🚪 Was passiert, wenn ich gehe?

Du kannst jederzeit aufhören, bei Crumbforest zu lernen.

Wenn du gehst:

Du kannst wählen:

Option A: Mitnehmen

  • Wir geben dir alles als Download
  • Du kannst woanders weiter machen
  • Wir löschen deine Daten nach 30 Tagen

Option B: Löschen

  • Wir löschen sofort alles
  • Nichts bleibt übrig
  • Du kannst nicht mehr zurück

Option C: Archivieren

  • Wir behalten deine Sachen für dich (max. 1 Jahr)
  • Du kannst später wieder kommen
  • Nach 1 Jahr fragen wir nochmal: "Willst du es noch?"

Ohne Nachteile: Du musst nichts zahlen, du bekommst keinen Ärger, alles ist gut.

Das ist dein Recht (CKL §10.2 + DSGVO Art. 17).


🛡️ Wie sicher sind meine Daten?

Wir nehmen Sicherheit sehr ernst.

Was wir tun:

  • 🔒 Verschlüsselung: Passwörter sind verschlüsselt (niemand kann sie lesen)
  • 🖥️ Lokaler Server: Deine Daten sind nicht in der "Cloud" (kein Google, kein Amazon)
  • 🔐 Zugriffskontrolle: Nur du und dein Lehrer können deine Projekte sehen
  • 📝 Logs: Wir schreiben auf, wer was macht (gegen Hacker)
  • 🔄 Backups: Wir machen Sicherheitskopien (falls Computer kaputt geht)
  • 🗑️ Löschung: Wenn wir löschen, ist es wirklich gelöscht (nicht nur versteckt)

Was du tun solltest:

  • Wähle ein gutes Passwort (nicht "1234")
  • Verrate dein Passwort niemandem (auch nicht Freunden)
  • Melde dich ab, wenn du fertig bist
  • Sag Bescheid, wenn etwas komisch ist

Ich habe eine Frage / Es gibt ein Problem

Für Kinder:

Sprich zuerst mit deinem Lehrer oder deiner Lehrerin.

Wenn das nicht hilft, oder wenn du denkst "Das ist nicht okay", dann:

  • Sprich mit deinen Eltern
  • Oder schreibe uns: [Kontakt wird ergänzt]

Für Eltern/Sorgeberechtigte:

Sie haben jederzeit das Recht:

  • Auskunft über gespeicherte Daten zu verlangen (DSGVO Art. 15)
  • Daten korrigieren zu lassen (DSGVO Art. 16)
  • Daten löschen zu lassen (DSGVO Art. 17)
  • Der Verarbeitung zu widersprechen (DSGVO Art. 21)
  • Beschwerde bei der Aufsichtsbehörde einzulegen

Kontakt:

  • Email: [wird ergänzt]
  • Verantwortlicher: Branko (Lead Maintainer)
  • Datenschutzbeauftragter: [wird ergänzt, wenn benötigt]

Aufsichtsbehörde: Je nach Bundesland siehe: https://www.bfdi.bund.de/DE/Service/Anschriften/Laender/Laender-node.html


📋 Zusammenfassung (für Eltern & Lehrer)

Recht Gesetzliche Grundlage Wie umgesetzt?
Eigentum an Inhalten CKL §3.1 Kinder behalten Urheberrechte
Datenportabilität DSGVO Art. 20, CKL §3.2 Export-Funktion (geplant Q1 2025)
Löschung DSGVO Art. 17, CKL §3.3 Löschprozess dokumentiert
Auskunft DSGVO Art. 15 Auf Anfrage, bald self-service
Widerspruch DSGVO Art. 21 Jederzeit ohne Nachteile
Datenminimierung DSGVO Art. 5, CKL §5.1 Nur lernrelevante Daten
Transparenz DSGVO Art. 12-14, CKL §5.3 Dieses Dokument + DATENSCHUTZ.md
Keine Paywalls CKL §7.3 Lernkerne kostenlos

🔧 Technische Umsetzung (für Entwickler)

TODOs für vollständige Compliance:

1. Export-API implementieren

Status: Geplant Q1 2025

Endpoint: GET /api/v1/my-data

Authentication: Bearer Token (User muss eingeloggt sein)

Response:

{
  "user": {
    "username": "kruemel123",
    "created_at": "2024-09-15T10:30:00Z",
    "last_login": "2025-12-13T14:22:00Z"
  },
  "messages": [
    {
      "id": 1,
      "character": "Krümeleule",
      "timestamp": "2025-12-13T14:00:00Z",
      "user_message": "Wie funktioniert Bash?",
      "character_response": "Bash ist eine Shell..."
    }
  ],
  "projects": [
    {
      "id": 1,
      "name": "ESP32 Blink",
      "created_at": "2025-11-01T09:00:00Z",
      "files": [
        {"filename": "main.py", "content": "...base64..."}
      ]
    }
  ],
  "measurements": [...],
  "export_date": "2025-12-13T15:00:00Z",
  "format_version": "1.0"
}

Optional: Auch als ZIP-Download verfügbar machen:

# app/routers/data_export.py
from fastapi import APIRouter, Depends
from fastapi.responses import StreamingResponse
import zipfile
import io

@router.get("/my-data.zip")
async def export_data_zip(user = Depends(get_current_user)):
    # Erstelle ZIP in Memory
    zip_buffer = io.BytesIO()
    with zipfile.ZipFile(zip_buffer, 'w', zipfile.ZIP_DEFLATED) as zip_file:
        # Füge alle User-Daten hinzu
        zip_file.writestr("README.txt", "Deine Crumbforest Daten...")
        zip_file.writestr("chats.json", json.dumps(user.messages))
        # ... weitere Dateien

    zip_buffer.seek(0)
    return StreamingResponse(
        zip_buffer,
        media_type="application/zip",
        headers={"Content-Disposition": f"attachment; filename=crumbforest-{user.username}.zip"}
    )

2. Lösch-API implementieren

Status: Geplant Q1 2025

Endpoint: DELETE /api/v1/my-data

Authentication: Bearer Token + zusätzliche Bestätigung (gegen Unfälle)

Request:

{
  "confirm": "DELETE_ALL_MY_DATA",
  "reason": "optional feedback"
}

Was gelöscht wird:

# app/services/data_deletion.py
async def delete_user_data(user_id: int):
    # 1. Chats aus MariaDB
    await db.execute("DELETE FROM messages WHERE user_id = ?", user_id)

    # 2. Vektoren aus Qdrant (wenn User-spezifisch)
    qdrant_client.delete(
        collection_name="crumbforest",
        points_selector=models.FilterSelector(
            filter=models.Filter(
                must=[
                    models.FieldCondition(
                        key="user_id",
                        match=models.MatchValue(value=user_id)
                    )
                ]
            )
        )
    )

    # 3. Projekte aus Dateisystem
    shutil.rmtree(f"/data/projects/{user_id}")

    # 4. Sessions
    await db.execute("DELETE FROM sessions WHERE user_id = ?", user_id)

    # 5. User-Account
    await db.execute("DELETE FROM users WHERE id = ?", user_id)

    # 6. Logs bereinigen (DSGVO: Personenbezug entfernen)
    # Logfiles anonymisieren, nicht löschen (Sicherheit)
    await anonymize_logs(user_id)

Response:

{
  "status": "deleted",
  "deleted_at": "2025-12-13T15:30:00Z",
  "items_deleted": {
    "messages": 42,
    "projects": 3,
    "files": 18
  }
}

3. DATENSCHUTZ.md erstellen

Status: TODO (nächster Schritt nach KINDERRECHTE.md)

Sollte enthalten:

  • Detaillierte Datenbank-Schema-Dokumentation
  • Welche Tabellen speichern was?
  • Retention Policies
  • Backup-Strategie
  • Incident Response Plan

4. Frontend für Self-Service

Status: Geplant Q1 2025

Mockup:

┌─────────────────────────────────────┐
│  Mein Profil                        │
├─────────────────────────────────────┤
│                                     │
│  📦 Meine Daten herunterladen       │
│     ├─ Als JSON                     │
│     └─ Als ZIP (alles)              │
│                                     │
│  🗑️ Daten löschen                  │
│     ├─ Nur Chats löschen            │
│     ├─ Nur Projekt "X" löschen      │
│     └─ ⚠️ ALLES löschen (Account)  │
│                                     │
│  📊 Was ist gespeichert?            │
│     ├─ 42 Chat-Nachrichten          │
│     ├─ 3 Projekte (18 Dateien)      │
│     └─ Letzter Login: heute 14:22   │
│                                     │
└─────────────────────────────────────┘

5. Automatische Daten-Bereinigung

Status: Geplant Q2 2025

Cron-Job für:

  • Alte Sessions löschen (> 90 Tage inaktiv)
  • Anonyme Accounts löschen (> 1 Jahr inaktiv)
  • Logfiles bereinigen (> 90 Tage alt)
# scripts/cleanup_cron.py
async def cleanup_inactive_users():
    threshold = datetime.now() - timedelta(days=365)
    inactive_users = await db.fetch_all(
        "SELECT id FROM users WHERE last_login < ? AND account_type = 'anonymous'",
        threshold
    )
    for user in inactive_users:
        # Email-Warnung 30 Tage vorher (wenn Email vorhanden)
        # Dann löschen
        await delete_user_data(user.id)

📜 Rechtliche Hinweise

Dieses Dokument ist rechtsverbindlich.

Es konkretisiert die Rechte aus:

  • Crumbforest Children's Knowledge License (CKL) v0.1
  • DSGVO (Datenschutz-Grundverordnung)
  • TMG (Telemediengesetz)
  • Kinderrechtskonvention der UN (insb. Art. 16)

Verantwortlicher im Sinne der DSGVO: [Wird ergänzt nach OZM-Transition aktuell: Branko]

Stand: 2025-12-13 Version: 1.0-draft Nächstes Review: Q1 2025 (nach CKL v1.0 Finalisierung)


🌲 Schlusswort

Crumbforest ist dein Wald.

Alles, was du hier pflanzt, gehört dir. Niemand kann es dir wegnehmen. Du kannst es jederzeit mitnehmen.

Und wenn du Fragen hast? Frag einfach. Das ist dein Recht.

"Wissen gehört dem Kind, solange es fragt."


Lizenz: CC-BY-SA 4.0 (dieses Dokument) Teil von: Crumbforest Ecosystem (https://crumbforest.com) Siehe auch: LICENSE-CKL.md, OZM-NEXUS-ECOSYSTEM.md