No description
  • TypeScript 96.7%
  • Shell 3.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
oliver.maklott 17de6620db
All checks were successful
pack / pack (push) Successful in 6s
1.1.0: @aivopod/sdk 0.20.0, the SDK from the platform instead of the bundle (needs platform 0.20, aivopod-app D254)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:51:31 +00:00
.forgejo/workflows SDK 0.10.0 and the newest CLI release in CI: the registry keeps only recent stable versions, the pinned ones were removed (aivopod-app D179) 2026-10-08 15:08:38 +00:00
.githooks I03: challenges klassen-schalten, eingaben-lesen, elemente-erzeugen, daten-und-anzeige; 1.0.0-rc.1 2026-10-04 18:39:25 +00:00
daten-und-anzeige 1.0.1: English names of SDK 0.13 (aivopod pack migrate, the rest by hand), texts in locales/de.json; @aivopod/sdk 0.13.0 (aivopod-app Plan 12, G0.7) 2026-10-10 17:27:25 +00:00
eingaben-lesen 1.0.1: English names of SDK 0.13 (aivopod pack migrate, the rest by hand), texts in locales/de.json; @aivopod/sdk 0.13.0 (aivopod-app Plan 12, G0.7) 2026-10-10 17:27:25 +00:00
elemente-erzeugen 1.0.1: English names of SDK 0.13 (aivopod pack migrate, the rest by hand), texts in locales/de.json; @aivopod/sdk 0.13.0 (aivopod-app Plan 12, G0.7) 2026-10-10 17:27:25 +00:00
klassen-schalten 1.0.1: English names of SDK 0.13 (aivopod pack migrate, the rest by hand), texts in locales/de.json; @aivopod/sdk 0.13.0 (aivopod-app Plan 12, G0.7) 2026-10-10 17:27:25 +00:00
locales 1.0.1: English names of SDK 0.13 (aivopod pack migrate, the rest by hand), texts in locales/de.json; @aivopod/sdk 0.13.0 (aivopod-app Plan 12, G0.7) 2026-10-10 17:27:25 +00:00
quiz 1.0.1: English names of SDK 0.13 (aivopod pack migrate, the rest by hand), texts in locales/de.json; @aivopod/sdk 0.13.0 (aivopod-app Plan 12, G0.7) 2026-10-10 17:27:25 +00:00
scripts I03: challenges klassen-schalten, eingaben-lesen, elemente-erzeugen, daten-und-anzeige; 1.0.0-rc.1 2026-10-04 18:39:25 +00:00
tastatur 1.0.1: English names of SDK 0.13 (aivopod pack migrate, the rest by hand), texts in locales/de.json; @aivopod/sdk 0.13.0 (aivopod-app Plan 12, G0.7) 2026-10-10 17:27:25 +00:00
zufall 1.0.1: English names of SDK 0.13 (aivopod pack migrate, the rest by hand), texts in locales/de.json; @aivopod/sdk 0.13.0 (aivopod-app Plan 12, G0.7) 2026-10-10 17:27:25 +00:00
.gitignore I03: challenges klassen-schalten, eingaben-lesen, elemente-erzeugen, daten-und-anzeige; 1.0.0-rc.1 2026-10-04 18:39:25 +00:00
.npmrc I03: challenges klassen-schalten, eingaben-lesen, elemente-erzeugen, daten-und-anzeige; 1.0.0-rc.1 2026-10-04 18:39:25 +00:00
package-lock.json 1.1.0: @aivopod/sdk 0.20.0, the SDK from the platform instead of the bundle (needs platform 0.20, aivopod-app D254) 2026-10-12 20:51:31 +00:00
package.json 1.1.0: @aivopod/sdk 0.20.0, the SDK from the platform instead of the bundle (needs platform 0.20, aivopod-app D254) 2026-10-12 20:51:31 +00:00
README.md I05: challenges zufall, tastatur, quiz with grading rubric; README; 1.0.0 2026-10-04 18:39:52 +00:00
tsconfig.json I03: challenges klassen-schalten, eingaben-lesen, elemente-erzeugen, daten-und-anzeige; 1.0.0-rc.1 2026-10-04 18:39:25 +00:00

JavaScript und die Website 2

Challenge-Paket für Aivopod: aus Seiten, die auf einen Klick reagieren, werden kleine Web-Anwendungen. Baut auf javascript-und-die-website auf (getElementById, textContent, addEventListener) und auf javascript-grundlagen-2 (Listen, Objekte und mit der Challenge logik auch &&, ||, !).

Challenge Inhalt
Klassen schalten (klassen-schalten) classList.add/remove/toggle/contains, CSS sagt wie, JavaScript sagt wann; aria-expanded; ein Akkordeon
Eingaben lesen (eingaben-lesen) value ist Text, Number(), NaN, das Ereignis input; Zeichenzähler, Taschengeld, Warnung ab 280 Zeichen
Elemente erzeugen (elemente-erzeugen) createElement, textContent, append, remove – ohne innerHTML; Einträge hinzufügen und entfernen
Daten und Anzeige (daten-und-anzeige) ein Array von Objekten als einzige Wahrheit, zeichne() baut die Liste neu; erledigt-Haken
Zufall (zufall) Math.random(), Math.floor, Würfel und Zufallselement; in der Prüfung fester Zufall (pruefe.zufall)
Tastatur (tastatur) keydown, event.key, eine Position mit den Pfeiltasten; im Feld bleiben mit &&; Sammelspiel
Ein Quiz (quiz) Abschluss: Daten, Anzeige, Ereignisse und Zustand; auf „Experte“ ein eigenes Quiz, beurteilt nach quiz/BEWERTUNG.md

Alle mit drei Stufen (normal, erweitert, experte), in dieser Reihenfolge (aivopod.ablauf). Jede Challenge hat auf „Normal“ einen aendern- und einen schreiben-Schritt. Braucht Aivopod 0.8 (Fehlermuster für Web-Anwendungen, fester Zufall).

Wer danach mit Robo weitermachen will (Unterstufe): roboterwelt und roboterwelt-2 aus derselben Organisation.

Für den VHS-Kurs mit Menü per Klassenwechsel lässt sich klassen-schalten allein zuweisen.

Arbeiten am Paket

npm install          # das SDK aus der Registry der Organisation (.npmrc)
aivopod pack test    # Tests, ohne vitest
aivopod pack preview # alle Schritte im Browser durchspielen
aivopod pack build   # bündeln, prüfen, Release-Archiv in dist/

Veröffentlichen: Die Version in package.json erhöhen (Patch: nur Texte; Nebenversion: Änderungen in bestehenden Challenges oder im Ablauf; Hauptversion: andere Challenges) und nach main bringen. Die CI prüft die Version gegen das letzte Release und legt ein neues Release v<version> mit dem Archiv an. Plattformen, die dieses Repo (oder seine Organisation) als Quelle eingetragen haben, finden es, wenn das Repo das Thema aivopod-pack hat. Entwicklungsversionen (1.2.0-dev.1) lassen sich mit aivopod pack publish direkt für die eigene Schule veröffentlichen, wenn die Plattform das erlaubt.

aivopod.titel und aivopod.ablauf in package.json legen fest, wie das Paket als Ganzes einem Kurs zugewiesen wird: sein Titel und die Challenges in dieser Reihenfolge.

Eine Challenge ist ein Ordner mit index.ts (die Challenge) und index.test.ts (Tests mit expectPass und expectFail). Bilder liegen im Ordner assets/ der Challenge.