feat: design system, produktionsleitung case study & build-time CV PDF #5

Merged
ComputerCrack merged 32 commits from dev into main 2026-08-14 00:56:33 +00:00

Überblick

Bringt den gesamten dev-Stand seit PR #4 nach main: Design-System,
mobile Navigation, die erste Case-Study (Produktionsleitung), eine
build-time generierte CV-PDF, die Anpassung einiger Projektbeschreibungen sowie
diverse Fixes. 31 Commits, drei thematische Merges + Einzelcommits.

Änderungen

Visual Identity / Design-System

  • Semantische Color-Tokens statt Platzhalter-Variablen (Nav, Cards, Layout)
  • Hero mit Porträt überarbeitet
  • focus-visible, Mono-We

Navigation

  • MobileNav global eingebunden

Case-Study: Produktionsleitung

  • Neue Case-Study-Seite, mobile-first Layout
  • Ungenutzte Content-Felder entfernt, Fazit neu geschrieben, bold → strong

Interaktive Diagramme

  • Wiederverwendbare SVGPanZoom-Komponente + Init-Fix (fit top-left, keine Hardcoded-Dimensionen)

CV / Lebenslauf

  • Typisierte CV-Daten als Single Source of Truth (src/lib/data/cv.ts)
  • CV-Sektion auf der Startseite (#lebenslauf) via CvEntry
  • Build-time PDF via Typst: build-cv.ts dekomprimiert die @fontsource-woff2
    zur Build-Zeit nach TTF (wawoff2), kompiliert cv.typ, löscht cv/fonts/
    wieder — keine Font-Binaries im Repo
  • Typst im Docker-Build via COPY --from=ghcr.io/typst/typst (statisches
    musl-Binary, kein apt/curl/CA-Bundle)

Landesgeschäftsführung

  • Projekt schueler-union-sachsen → landesgeschaeftsfuehrung umbenannt
    (neutraler Titel, Slug, Icon Landmark → Users)

Infra / Fixes

  • Content-Security-Policy (SvelteKit csp hash-mode)
  • CI: Snapshot-Tag-Trigger für dedizierte Preview-Builds
  • Hero-Overflow (w-screen → w-full), Error-Page responsive, Projekt-Ergebnistext

Verifiziert

  • bun run build:cv erzeugt static/cv.pdf (lokal grün)
  • Keine schueler-Referenzen mehr, keine Font-Binaries getrackt
  • Alle drei Branch-Merges konfliktfrei
## Überblick Bringt den gesamten `dev`-Stand seit PR #4 nach `main`: Design-System, mobile Navigation, die erste Case-Study (Produktionsleitung), eine build-time generierte CV-PDF, die Anpassung einiger Projektbeschreibungen sowie diverse Fixes. 31 Commits, drei thematische Merges + Einzelcommits. ## Änderungen ### Visual Identity / Design-System - Semantische Color-Tokens statt Platzhalter-Variablen (Nav, Cards, Layout) - Hero mit Porträt überarbeitet - `focus-visible`, Mono-We ### Navigation - `MobileNav` global eingebunden ### Case-Study: Produktionsleitung - Neue Case-Study-Seite, mobile-first Layout - Ungenutzte Content-Felder entfernt, Fazit neu geschrieben, `bold` → `strong` ### Interaktive Diagramme - Wiederverwendbare `SVGPanZoom`-Komponente + Init-Fix (fit top-left, keine Hardcoded-Dimensionen) ### CV / Lebenslauf - Typisierte CV-Daten als Single Source of Truth (`src/lib/data/cv.ts`) - CV-Sektion auf der Startseite (`#lebenslauf`) via `CvEntry` - Build-time PDF via Typst: `build-cv.ts` dekomprimiert die @fontsource-woff2 zur Build-Zeit nach TTF (`wawoff2`), kompiliert `cv.typ`, löscht `cv/fonts/` wieder — **keine Font-Binaries im Repo** - Typst im Docker-Build via `COPY --from=ghcr.io/typst/typst` (statisches musl-Binary, kein `apt`/`curl`/CA-Bundle) ### Landesgeschäftsführung - Projekt `schueler-union-sachsen` → `landesgeschaeftsfuehrung` umbenannt (neutraler Titel, Slug, Icon `Landmark` → `Users`) ### Infra / Fixes - Content-Security-Policy (SvelteKit `csp` hash-mode) - CI: Snapshot-Tag-Trigger für dedizierte Preview-Builds - Hero-Overflow (`w-screen` → `w-full`), Error-Page responsive, Projekt-Ergebnistext ## Verifiziert - `bun run build:cv` erzeugt `static/cv.pdf` (lokal grün) - Keine `schueler`-Referenzen mehr, keine Font-Binaries getrackt - Alle drei Branch-Merges konfliktfrei
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
fix(projects): correct result text
Some checks failed
CI / build (push) Has been cancelled
da8e06e00d
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
ci: add snapshot tag trigger for dedicated preview builds
All checks were successful
CI / build (push) Successful in 1m23s
3a45aa7f36
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
design(layout): add focus-visible ring, tighten button transitions, restore section heading opacity
All checks were successful
Build and Deploy Portfolio / build-and-push (push) Successful in 2m14s
Build and Deploy Portfolio / deploy (push) Has been skipped
8bc970ad91
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
design(layout): cap projects section width to 1920px and remove heading margin offset
All checks were successful
Build and Deploy Portfolio / build-and-push (push) Successful in 2m10s
Build and Deploy Portfolio / deploy (push) Has been skipped
daeb73d659
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
feat(svg-pan-zoom): add reusable SVGPanZoom component
All checks were successful
CI / build (push) Successful in 1m13s
0c21d8547f
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Merge branch 'feat/visual-identity' into feat/case-study/produktionsleitung
All checks were successful
Build and Deploy Portfolio / build-and-push (push) Successful in 2m27s
Build and Deploy Portfolio / deploy (push) Has been skipped
ce74dde24a
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
feat(produktionsleitung): restructure case study with mobile-first layout
All checks were successful
Build and Deploy Portfolio / build-and-push (push) Successful in 1m15s
Build and Deploy Portfolio / deploy (push) Has been skipped
8b48f269d4
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Drop the never-rendered summary/headline/context/challenges/reflexion
fields, fix bold->strong and typos, and rewrite the closing takeaway.

Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Neutral title and slug, icon Landmark->Users across Nav and MobileNav.

Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Merge branch 'feat/landesgeschaeftsfuehrung' into dev
Some checks failed
CI / build (push) Failing after 26s
f02bd69c0b
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
build(docker): install Typst via COPY --from official image
All checks were successful
CI / build (push) Successful in 2m5s
8d4204f382
Alias the pinned ghcr.io/typst/typst image as a named stage (global ARG
substitutes in FROM) and copy the static musl binary. Replaces the
apt+curl+ca-certificates download that failed the TLS handshake.

Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
ComputerCrack scheduled this pull request to auto merge when all checks succeed 2026-08-14 00:53:41 +00:00
Merge branch 'main' into dev
All checks were successful
CI / build (push) Successful in 2m2s
fbe3210286
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ComputerCrack/Portfolio!5
No description provided.