restructure: rename termin to kapitel, flatten folder structure

- rename slide files: YYYY-MM-DD-termin-N-topic.md → NN-topic.md
- flatten folders: courses/X/slides/ → slides/X/
- replace "Termin" with "Kapitel" in all content
- add klausur extraction script (make klausur)
- update Makefile, generate-index.sh, dev-server.sh
- add README.md with full documentation
This commit is contained in:
2026-01-25 11:26:15 +01:00
parent b951341376
commit a8343c9937
128 changed files with 1464 additions and 3484 deletions

203
README.md
View File

@@ -1,182 +1,95 @@
# HdM Slides
**Modul "Technik 1"** - 1. Semester - Digital- und Medienwirtschaft
Hochschule der Medien Stuttgart - Wintersemester 2025/26
Presentation slides for HdM Stuttgart courses, built with [Marp](https://marp.app/).
---
## Courses
## Kurse
| Code | Title | Kapitel |
|------|-------|---------|
| 223015b | Dateiformate, Schnittstellen, Speichermedien | 6 |
| 223015c | Internettechnologien | 3 |
### 223015b - Dateiformate, Schnittstellen, Speichermedien & Distributionswege
## Project Structure
| # | Datum | Thema |
|---|-------|-------|
| 0 | 19.12.2025 | Intro |
| 1 | 19.12.2025 | Grundlagen, Text & Audio |
| 2 | 09.01.2026 | Bild- & Videoformate |
| 3 | 23.01.2026 | Speichermedien & Schnittstellen |
| 4 | 30.01.2026 | Distribution, APIs & Zukunft |
| 5 | TBA | Vertiefung & offene Fragen |
### 223015c - Internettechnologien
| # | Datum | Thema |
|---|-------|-------|
| 1 | 20.12.2025 | Geschichte, Grundlagen & HTML |
| 2 | 10.01.2026 | Netzwerke, Protokolle & CSS |
| 3 | 24.01.2026 | Interaktivitat & JavaScript |
**Dozent:** Michael Czechowski - mail@librete.ch
---
## Quick Start
### Mit Nix (empfohlen)
```bash
# Development shell mit allen Tools
nix develop
# Oder direkt QR-Code generieren
nix run .#qr -- "https://example.com"
nix run .#qr-slides -- 223015b
```
### Ohne Nix
```bash
npm install
make dev-b # 223015b auf Port 1312
make dev-c # 223015c auf Port 1313
slides/
├── 223015b/ # Dateiformate course
│ ├── 00-intro.md
│ ├── 01-grundlagen-text-audio.md
│ └── ...
└── 223015c/ # Internettechnik course
├── 01-geschichte-grundlagen-html.md
└── ...
scripts/ # Build scripts
build/ # Generated output (gitignored)
```
---
## Development
### Dev Server starten
```bash
make dev-b # 223015b (Dateiformate) - http://localhost:1312
make dev-c # 223015c (Internettechnik) - http://localhost:1313
# Start dev servers (hot reload)
make dev # All courses + index
make dev-b # 223015b only (port 1311)
make dev-c # 223015c only (port 1312)
```
### Build
## Build
```bash
make build # Alle Kurse (HTML + PDF)
make build-b # Nur 223015b
make build-c # Nur 223015c
make html # Nur HTML
make pdf # Nur PDF
make build # Build all (HTML + PDF)
make build-b # Build 223015b only
make build-c # Build 223015c only
make html # HTML only
make pdf # PDF only
```
### Deploy
## Klausur Slides
Extract exam-relevant slides (marked with `<!-- _class: klausur -->`) into a single file:
```bash
make deploy # Alle Kurse
make deploy-b # Nur 223015b
make deploy-c # Nur 223015c
make klausur # Extract all courses
make klausur-b # 223015b only
make klausur-c # 223015c only
```
---
Output: `slides/<course>/klausur.md`
The generated file includes:
- A title slide per kapitel for orientation
- All slides marked with `<!-- _class: klausur -->`
## Tools
### QR-Code Generator
```bash
make qr URL=https://example.com # Generate QR code
make qr-slides COURSE=223015b # QR for course URL
make optimize-images COURSE=223015b # Resize images
```
## Deploy
```bash
# Mit Nix
nix run .#qr -- "https://librete.ch/hdm/223015b/"
nix run .#qr -- "https://example.com" output.png
# Mit Make
make qr URL=https://example.com
make qr URL=https://example.com OUTPUT=my-qr.png
# Fur Kurse
make qr-slides COURSE=223015b
make deploy # Deploy all courses
make deploy-b # Deploy 223015b only
make deploy-c # Deploy 223015c only
```
### Bilder optimieren
## Marking Slides as Klausur-Relevant
```bash
# Mit Nix
nix run .#optimize-img -- courses/223015b/slides/assets/
# Mit Make
make optimize-images COURSE=223015b
```
---
## Projektstruktur
```
hdm/
├── courses/
│ ├── 223015b/
│ │ └── slides/
│ │ ├── 2025-12-19-termin-1-grundlagen-text-audio.md
│ │ ├── assets/
│ │ └── materials/
│ └── 223015c/
│ └── slides/
│ ├── 2025-12-20-termin-1-geschichte-grundlagen-html.md
│ └── assets/
├── scripts/
│ └── generate-index.sh
├── themes/
│ └── custom-theme.css
├── build/ # Generated output
├── flake.nix # Nix flake with tools
├── Makefile
└── package.json
```
---
## Slides erstellen
### Frontmatter
```yaml
---
marp: true
theme: uncover
paginate: true
backgroundColor: #fff
---
```
### Slide-Trennung
Add this comment block after the slide separator:
```markdown
# Slide 1
Content
---
# Slide 2
<!-- _class: klausur -->
<!-- _header: '' -->
<!-- _footer: '' -->
<!-- _backgroundColor: #e3f2fd -->
More content
# Your Slide Title
Content here...
```
### Bilder
```markdown
![Alt text](./assets/image.jpg)
```
### Themes
Built-in: `default`, `gaia`, `uncover`
Custom: in `themes/` Verzeichnis
---
## License
[CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)
The `klausur` class adds a visual indicator (diagonal stripes) during presentation.