Installierbar: Manifest, Symbole aus dem eigenen Zeichen erzeugt (scripts/symbole.ts, kein Bilddienst), Verknuepfungen zu Lernmodus, Berichtsheft und Handouts. Offline gilt eine Regel, und die steht im Dienstarbeiter: Nur das Lernmaterial liegt im Browserspeicher - Handouts, Merkkarten, Glossar, die eigene Woche. Lernzielkontrollen, Berichtsheft, Bewertungen, Feedbackgespraeche, Anhaenge und jedes PDF niemals. Das ist keine Sparsamkeit: Was im Browsercache liegt, ist an der serverseitigen Rechtepruefung vorbei. Bewertungen ohne Netz gehen in eine Warteschlange und werden nachgereicht. Die Schlange haengt an der Benutzerkennung, nicht am Geraet - auf einem geteilten Werkstattgeraet bekaeme sonst der Zweite die offenen Bewertungen des Ersten aufs Konto. Der Tag der Bewertung kommt vom Geraet und wird auf heute gedeckelt (tagDerBewertung, 4 Tests): Eine vorgestellte Uhr darf das Wiederholen nicht wegstellen. Druck: Wer die dunkle Fassung eingestellt hatte, druckte bisher schwarze Flaechen. Im Druck wird jetzt die komplette helle Palette gesetzt, dazu A4-Raender, keine Umbrueche mitten in Karten und Zeilen, aufgeklappte details. Druckknoepfe bei Handout, Glossar und Auswertung. Durchstich in scripts/pruefungen/baustein-10.mjs mit echtem Abschalten des Netzes: 33 Pruefungen, darunter der Nachweis, dass nichts Bewertungsrelevantes im Speicher landet. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
59 lines
1.6 KiB
JSON
59 lines
1.6 KiB
JSON
{
|
||
"name": "lernbar",
|
||
"version": "0.1.0",
|
||
"private": true,
|
||
"description": "Lern-Bar – betriebliche Ausbildung Fachinformatiker Systemintegration",
|
||
"engines": {
|
||
"node": ">=22"
|
||
},
|
||
"scripts": {
|
||
"dev": "next dev",
|
||
"build": "next build",
|
||
"start": "next start",
|
||
"lint": "eslint .",
|
||
"typecheck": "tsc --noEmit",
|
||
"test": "vitest run",
|
||
"test:watch": "vitest",
|
||
"e2e": "playwright test",
|
||
"inhalte:pruefen": "tsx scripts/inhalte-pruefen.ts",
|
||
"konto:anlegen": "tsx scripts/konto-anlegen.ts",
|
||
"backup": "bash scripts/im-container/sicherung.sh",
|
||
"restore": "bash scripts/im-container/wiederherstellen.sh",
|
||
"screenshots": "tsx scripts/screenshots.ts",
|
||
"symbole": "tsx scripts/symbole.ts"
|
||
},
|
||
"dependencies": {
|
||
"@node-rs/argon2": "^2.0.2",
|
||
"better-sqlite3": "^12.11.1",
|
||
"drizzle-orm": "^0.45.2",
|
||
"markdown-it": "^14.1.0",
|
||
"next": "^15.5.4",
|
||
"pdfkit": "^0.17.1",
|
||
"react": "^19.1.0",
|
||
"react-dom": "^19.1.0",
|
||
"server-only": "^0.0.1",
|
||
"yaml": "^2.8.0",
|
||
"zod": "^3.25.76"
|
||
},
|
||
"devDependencies": {
|
||
"@eslint/eslintrc": "^3.3.7",
|
||
"@playwright/test": "^1.55.0",
|
||
"@types/better-sqlite3": "^7.6.13",
|
||
"@types/markdown-it": "^14.1.2",
|
||
"@types/node": "^22.15.0",
|
||
"@types/pdfkit": "^0.14.0",
|
||
"@types/react": "^19.1.0",
|
||
"@types/react-dom": "^19.1.0",
|
||
"eslint": "^9.34.0",
|
||
"eslint-config-next": "^15.5.4",
|
||
"tsx": "^4.20.0",
|
||
"typescript": "^5.9.2",
|
||
"vitest": "^3.2.4"
|
||
},
|
||
"allowScripts": {
|
||
"better-sqlite3@12.11.1": true,
|
||
"esbuild@0.28.2": true,
|
||
"unrs-resolver@1.12.2": true
|
||
}
|
||
}
|