Challenge-Paket um die Grundlagen der Sprache JavaScript kennenzulernen.
  • TypeScript 94.5%
  • Shell 5.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
oliver.maklott 621191506a
All checks were successful
pack / pack (push) Successful in 12s
2.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:50:16 +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:20 +00:00
.githooks B25: SDK from the registry, CI and pre-push hook from the pack template 2026-09-27 16:27:42 +00:00
befehle-aufrufen 2.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:24 +00:00
befehle-erkennen 2.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:24 +00:00
funktionen 2.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:24 +00:00
kommentare-erkennen 2.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:24 +00:00
konsole-ausgeben 2.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:24 +00:00
locales 2.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:24 +00:00
scripts D06: javascript-grundlagen 2.0.0 – the pack grundlagen renamed, seven challenges 2026-09-30 10:59:59 +00:00
variablen 2.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:24 +00:00
zahl-oder-text 2.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:24 +00:00
.gitignore Add Grundlagen challenge pack 2026-09-26 09:38:02 +00:00
.npmrc B25: SDK from the registry, CI and pre-push hook from the pack template 2026-09-27 16:27:42 +00:00
package-lock.json 2.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:50:16 +00:00
package.json 2.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:50:16 +00:00
README.md D06: javascript-grundlagen 2.0.0 – the pack grundlagen renamed, seven challenges 2026-09-30 10:59:59 +00:00
tsconfig.json Add Grundlagen challenge pack 2026-09-26 09:38:02 +00:00

JavaScript-Grundlagen

Challenge-Paket für den Einstieg in JavaScript (ab der 5. Schulstufe): die Sprache selbst, ausgeführt in der Konsole der Plattform. Es dient als Referenz für weitere Pakete: Aufbau, Schrittarten, Prüfungen, eigenes Feedback und Tests sind hier vollständig vorgeführt.

Challenge Frage Inhalt
kommentare-erkennen Was ist ein Kommentar? Zeilen- und Blockkommentare, auskommentieren
befehle-erkennen Wie erkenne ich einen Befehl? Befehle, Reihenfolge, Laufzeit- und Syntaxfehler
befehle-aufrufen Wie rufe ich einen Befehl auf? Name, Klammern, Argumente, Befehle mit Ergebnis (Math.max, Math.round)
zahl-oder-text Zahl oder Text? Datentypen Zahl und Text, + und *
konsole-ausgeben Wie gebe ich etwas aus? console.log, Rechnungen, Texte verbinden
variablen Variablen let, const, Wert ändern, Variablen im Text
funktionen Funktionen eigene Befehle, Parameter, return

Alle mit drei Stufen (normal, erweitert, experte), in dieser Reihenfolge (aivopod.ablauf). Verwendete Schrittarten: lesen, markieren, vorhersagen, zuordnen, aendern, schreiben. zahl-oder-text hat den Parameter zahl (Standard 5), den eine Zuweisung über config ändern kann. variablen zeigt einen eigenen Prüfer (eigen) mit Feedback aus locales/de.json.

Weiter geht es mit javascript-grundlagen-2 (Entscheidungen, Schleifen, Listen, Objekte) und dann javascript-und-die-website.

Umbenannt: Bis Version 1.1.0 hieß das Paket grundlagen (drei Challenges). Kurse mit grundlagen behalten es; der neue Name beginnt bei 2.0.0, weil das Tag v1.1.0 im Repository dem alten Paket gehört. Braucht Aivopod 0.5.

Aufbau

javascript-grundlagen/
├── package.json            Name, Version, Sprachen ("aivopod": { "sprachen": ["de"] })
├── kommentare-erkennen/
│   ├── index.ts            die Challenge (export default defineChallenge(…))
│   ├── index.test.ts       Tests mit typischen Fehlern aus dem Unterricht
│   └── assets/             Bilder dieser Challenge (PNG, JPEG, WebP, GIF, SVG; höchstens 512 KB)
├── befehle-erkennen/
└── zahl-oder-text/

Ein Paket darf nur @aivopod/sdk und eigene Dateien importieren. Bilder werden mit ![Beschreibung](assets/datei.svg) eingebunden; externe Adressen sind nicht erlaubt.

Arbeiten am Paket

Das SDK kommt aus der npm-Registry der Organisation (.npmrc), in der Version der Plattform. Dazu braucht es das CLI aivopod (Installation: siehe aivopod-cli).

npm install              # das SDK aus der Registry
npm run typecheck        # TypeScript
aivopod pack test        # alle Tests des Pakets, ohne vitest
aivopod pack build       # bündeln, Bilder, Icons und Schritt-IDs prüfen → dist/
aivopod pack preview     # im Browser durchspielen, mit Prüfung und Feedback

Veröffentlichen

Die Version in package.json erhöhen und nach main bringen. Die CI prüft die neue Version gegen das letzte Release (Patch: nur Texte; Nebenversion: Änderungen in bestehenden Challenges oder im Ablauf; Hauptversion: andere Challenges) und legt das Release v<version> mit javascript-grundlagen-<version>.zip und Prüfsumme an (scripts/pack-release.sh). Plattformen, die die Organisation aivopod-challenges als Quelle eingetragen haben, bieten es dann an; das Repo trägt dafür das Thema aivopod-pack.

aivopod.ablauf in package.json legt die Reihenfolge fest, in der ein Kurs die Challenges bekommt, wenn das Paket als Ganzes zugewiesen wird (aivopod assign --pack javascript-grundlagen); aivopod.titel ist die Überschrift des Moduls.

Die CI (.forgejo/workflows/pack.yml) baut und testet jedes Push mit dem CLI derselben Version; git config core.hooksPath .githooks lässt die Tests vor jedem Push laufen.

Vor dem Veröffentlichen einer Änderung die Version in package.json erhöhen: Eine veröffentlichte Version ist unveränderlich. Schritt-IDs dürfen sich innerhalb einer Version nie ändern, weil die Ergebnisse der Schüler:innen daran hängen.

Tests schreiben

import { describe, expectFail, expectPass, test } from "@aivopod/sdk/test";
import ch from "./index.ts";

test("Fehler: den Befehl mitmarkiert", () =>
  expectFail(ch, {
    stufe: "normal",
    schritt: "finde-kommentare",
    antwort: { bereiche: [[0, 47]] },
    feedback: "zu-viel-markiert",
  }));

Die Tests laufen mit demselben Prüfprogramm wie im Browser der Schüler:innen. Was hier besteht, besteht auch dort. Bereiche für markieren am besten aus dem Code berechnen (indexOf) statt abzuzählen.