# Veröffentlichung ohne zusätzliche Kosten

**Veröffentlicht und live geprüft:** https://amasworld-school-lab.pages.dev/ – Modell 2.1-events, Cloudflare Pages Direct Upload. Zwölf echte Live-Prüfgruppen bestanden; ausgelieferte Dateien stimmen mit den erlaubten Release-Dateien überein. Zeitstempel und Prüfdetails stehen im aktuellen [Prüfbericht](QA-REPORT.md) und [Prüfbeleg](qa-evidence.json). Die weiteren Adressmuster sind nur Beispiele. Keine Domain gekauft, kein kostenpflichtiges Produkt aktiviert; keine neuen App-Laufzeitabhängigkeiten.

## Vor der Freigabe

Empfehlung für diese Version: **Cloudflare Pages Direct Upload**. Ein fertiges Website-ZIP wird hochgeladen; kein Server, Git-Zwang oder kostenpflichtiger Dienst ist nötig. GitHub Pages bleibt die dokumentierte Alternative. Die Kontoverbindung wurde vom Eigentümer per OAuth freigegeben; die erste Veröffentlichung erfolgte mit Wrangler 4.151.1.

Aus dem Quellverzeichnis erzeugt `node tools/build.cjs` die gezielt zusammengestellte Mappe `dist/`. Für eine bereits gelieferte Version das separate `-website.zip` verwenden: Darin liegt `index.html` direkt im Stamm. Nicht das Quellcode-ZIP, eine Backup-Datei oder den gesamten Projektordner hochladen. `_headers` liefert bei Cloudflare Sicherheitsheader; die Vorschau prüft dieselbe Richtlinie. GitHub Pages wertet diese Datei nicht als Headerkonfiguration aus. Normale Nutzung benötigt keine Anmeldung der Lehrperson.

Nur den geprüften öffentlichen Inhalt von `Next Generation/` bereitstellen, nie den übergeordneten Projektordner oder den gesamten Notizbestand. Geheimnisse, personenbezogene Daten, lokale absolute Pfade und private Notizen ausschließen. Auch `docs/BASELINE-CHECKPOINT.json`, technische lokale Prüfbelege und Git-Metadaten vor Veröffentlichung auf private Pfade prüfen bzw. aus dem Upload weglassen. Die öffentlichen Hilfeseiten benötigen diese Dateien nicht. Eine neue leere Veröffentlichungsmappe mit gezielt ausgewählten App-Dateien und öffentlichen Dokumenten verwenden; nicht blind `git add .` im übergeordneten Ordner ausführen.

Die App besteht aus statischem HTML, CSS und JavaScript. Es ist kein Paketmanager, Build-Dienst, LLM-Schlüssel oder Server erforderlich. `index.html` muss direkt im Veröffentlichungsstamm liegen. Verzeichnisstruktur und Dateinamen beibehalten; interne URLs relativ, nicht als `/styles.css` mit Domainwurzel schreiben. So funktioniert auch ein GitHub-Projekt-Unterpfad. Kein eigenes Backend und keine Zugriffskontrolle sind dadurch eingerichtet. Nur fiktive Personen verwenden.

## Option A: GitHub Pages, kostenloses öffentliches Repository

GitHub Free unterstützt Pages für öffentliche Repositories. Das Repository und die Website sind dabei öffentlich. Ein GitHub-Konto sowie ausreichende Repository-/Adminrechte sind erforderlich. Ein privates Repository mit Pages ist nicht pauschal Teil des kostenlosen Angebots.[1][2]

1. Nach ausdrücklicher Freigabe ein neues öffentliches Repository ausschließlich für das öffentliche App-Paket anlegen. Account und gewünschter öffentlicher Name werden vom Eigentümer gewählt.
2. Den geprüften Inhalt der Veröffentlichungsmappe in den Repository-Stamm hochladen. `index.html`, Skripte, Styles und `docs/` liegen nebeneinander. Optional eine leere `.nojekyll`-Datei für reine statische Bereitstellung hinzufügen.[5]
3. Unter **Settings → Pages → Build and deployment → Deploy from a branch** den veröffentlichten Branch und **/(root)** auswählen und speichern. Der Branch muss bereits existieren. Als Branchquelle werden nur der Stamm oder `/docs` angeboten: unser Dokumentationsordner allein ist nicht die App und deshalb hier nicht die richtige Quelle.[5]
4. Den tatsächlichen Deployment-Lauf unter Actions abwarten und dessen Ergebnis prüfen. Unter Pages die bereitgestellte Adresse ablesen; **Enforce HTTPS** aktivieren, sofern auswählbar.[2][5]
5. Typisches Projektmuster: `https://<owner>.github.io/<repositoryname>/`. Keine solche Adresse als echt ausgeben, bevor die tatsächliche Website geladen und geprüft wurde.[1]

Keine eigene Domain erforderlich. GitHub protokolliert laut Dokumentation Besucher-IP-Adressen zu Sicherheitszwecken; „keine App-API“ bedeutet deshalb nicht „der Hoster verarbeitet keine Daten“.[1]

## Option B: Cloudflare Pages Direct Upload, ohne Git-Verknüpfung

Cloudflare beschreibt Direct Upload für bereits fertige lokale Dateien. Für dieses statische Projekt genügt Dashboard-Upload; alternativ ist der geprüfte CLI-Weg nutzbar. Für diese Freigabe läuft Wrangler 4.151.1 über einen separaten npm-Werkzeugcache außerhalb der Anwendung. Das macht Wrangler nicht zu einer Abhängigkeit der Simulation. Voraussetzung sind ein Cloudflare-Konto, Anmeldung, Erstellungsrechte und die Zustimmung zur öffentlichen Bereitstellung.[3]

1. Nach Freigabe im Cloudflare-Dashboard **Workers & Pages → Create application → Get started → Drag and drop your files** öffnen; die genaue Beschriftung kann sich ändern.[3]
2. Projektnamen wählen und die geprüfte Veröffentlichungsmappe oder eine ZIP-Datei hochladen. Der Inhalt darf nicht versehentlich noch unter einer zusätzlichen äußeren Mappe liegen: `index.html` gehört in die Websitewurzel.[3][9]
3. **Deploy site** beziehungsweise **Save and Deploy** wählen. Die tatsächlich zugewiesene `pages.dev`-Adresse notieren. Das Muster ist `https://<project>.pages.dev/`; bei vergebenem Namen können zusätzliche Zeichen erscheinen.[3]
4. Für spätere Änderungen im Projekt **Create a new deployment** verwenden und bewusst Production oder Preview auswählen. Kein Git-Push wird durch diesen manuellen Weg automatisch veröffentlicht.[3]

Die offizielle Limits-Seite beschreibt den Free-Plan; für Dashboard-Drag-and-drop gilt zusätzlich die strengere Direct-Upload-Grenze von 1.000 Dateien und 25 MiB je Datei. Die allgemeine Free-Grenze beträgt 20.000 Dateien; sie hebt die Dashboardgrenze nicht auf.[3][4] Ein `pages.dev`-Unterdomainname wird von Pages bereitgestellt; eine eigene gekaufte Domain ist nicht erforderlich.[3][9] Cloudflare beschreibt Pages mit „SSL out of the box“ und einem kostenlosen Einstieg ohne Kreditkarte.[10] Vor Freigabe HTTPS auf der konkret bereitgestellten Adresse prüfen. Das kostenlose Universal-SSL-Angebot für aktivierte eigene Cloudflare-Domains ist separat dokumentiert und kein Beleg, dass unser Projekt bereits ein funktionierendes Zertifikat hat.[7]

## Abnahme der echten Adresse – für beide Optionen

- Adresse auf einem zweiten Gerät ohne eingeloggtes Betreiberkonto öffnen; HTTPS/Zertifikat und HTTP-Weiterleitung prüfen.
- Dashboard, Schulbau, Schülerprofil mit Tageswechsel, Szenario mit Klassenziel und Auswertung aufrufen.
- Hilfe-, Modell- und Präsentationslinks auch unter dem echten Unterpfad öffnen.
- JSON exportieren, wieder importieren und die neu berechneten Ergebnisse vergleichen; CSV herunterladen.
- Nach Neuladen lokale Schulkonfiguration prüfen. Browserdaten sind geräte-/browser-/ursprungsabhängig; eine lokale Datei und eine HTTPS-Adresse teilen ihren Speicher nicht automatisch.
- Tastaturbedienung und Drucken prüfen; Netzwerk-/Konsolenfehler prüfen. Kein Rückschluss auf andere Browser ohne dortige Prüfung.
- Erst dann tatsächliche URL, Abrufzeitpunkt, getestetes Gerät/Browser und offene Fehler im Freigabebeleg vermerken.

**Verifiziert:** öffentliche HTTPS-Adresse, Sicherheitsheader, tatsächliche Simulation/Profile, Ereigniskombinationen, Dateiexporte/-importe, lokale Speicherung und mobile Darstellung am öffentlichen Ursprung. Noch offen: andere Browser, physische Mobilgeräte und ein tatsächlicher Schulcomputer. Ein später veränderter lokaler Stand muss erneut hochgeladen und live geprüft werden. Datenexporte sind unverschlüsselte Dateien, keine sicheren Backups.

## Sources

[1] https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages
[2] https://docs.github.com/en/pages/getting-started-with-github-pages/securing-your-github-pages-site-with-https
[3] https://developers.cloudflare.com/pages/get-started/direct-upload
[4] https://developers.cloudflare.com/pages/platform/limits
[5] https://docs.github.com/en/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site
[7] https://developers.cloudflare.com/ssl/edge-certificates/universal-ssl
[9] https://developers.cloudflare.com/pages/framework-guides/deploy-anything
[10] https://pages.cloudflare.com — Cloudflare Pages
