Add SVG icons and TypeScript configuration files

- Introduced a new favicon.svg file for the application.
- Added icons.svg containing various SVG symbols for UI components.
- Created tsconfig.app.json for frontend TypeScript configuration with ES2023 target and bundler mode.
- Established tsconfig.json to reference app and node configurations.
- Implemented tsconfig.node.json for Node.js specific TypeScript settings.
This commit is contained in:
LaurensBartelds committed 2026-04-21 22:19:06 +02:00
1 parent 8420e6cae0
commit be69db04a5
21 files changed
+6872

No files matched your search

@@ -0,0 +1,49 @@
# Practice Exam JSON Schema
Upload a JSON file with this shape to load an exam.
## Top-level
```json
{
"title": "string (required)",
"subtitle": "string (optional)",
"author": "string (optional)",
"timeLimitMinutes": 45, // null or number
"feedbackMode": "end" | "immediate",
"passingScore": 70, // percent
"categories": ["Topic 1", "Topic 2"],
"questions": [ /* see below */ ]
}
```
## Common question fields
```json
{
"id": "q1", // required, unique
"type": "multiple-choice", // see types below
"category": "Topic 1",
"points": 2, // default 1
"prompt": "Question text. LaTeX via $...$ and $$...$$",
"explanation": "Shown after grading",
"image": { "src": "url", "alt": "...", "caption": "..." },
"audio": { "src": "url" },
"code": { "language": "python", "content": "..." },
"table": { "headers": ["..."], "rows": [["..."]] },
"svg": "<svg>...</svg>"
}
```
## Question types
| type | answer shape |
|------|--------------|
| `multiple-choice` | `"a"` — single choice id |
| `multiple-select` | `["a", "c"]` — array of choice ids |
| `short-answer` | `"Paris"` with `acceptedForms`, `caseSensitive`, `ignorePunctuation`, `ignoreAccents` |
| `math-input` | LaTeX string; compared against `answer` + `acceptedForms` |
| `translation` | String; same options as short-answer plus `sourceLanguage`, `targetLanguage` |
| `essay` | No `answer`; optional `rubric` array + `minWords`. Self-graded. |
| `match` | `{ "l1": "r2", "l2": "r4" }` — left→right mapping |
| `order` | `["s1", "s2", "s3"]` — ordered item ids |