jimvandenbreemen.nl design systeem
Definitie
Het design systeem van jimvandenbreemen.nl bestaat uit een vaste font stack, een bordeaux-gebaseerd kleurenpalet, brutalisme-specifieke modificaties en een versiebeheermethode voor HTML-prototypes. Het systeem is opgebouwd in iteraties via moodboard- en style guide-sessies in maart 2026.
Context
De website is een Hugo-site met custom theme “jvdb”. Het design is hybride: clean en content-first voor journalistieke tekst, visueel rijker voor fotografie. Brutalisme wordt als laag bovenop het basisdesign system toegepast, niet als vervanging. De WCAG 2.1 AA-norm is leidend voor kleurkeuzes.
Kernpunten
Font stack
| Rol | Familie | Fallback |
|---|---|---|
| Primair display | Wavehaus (6 gewichten, self-hosted WOFF2) | Futura, Avenir Next, Montserrat |
| Serif accent | DM Serif Display | Georgia, serif |
| Monospace | JetBrains Mono | Courier New, monospace |
Wavehaus wordt preloaded in de <head> en geconverteerd van desktop-licentie (TTF/OTF) via fonttools of Transfonter. Licentie voor webgebruik is nog te controleren.
Kleurenpalet (bordeaux)
Kernkleuren uit palet v4 (WCAG-geauditeerd):
| Token | Waarde | Gebruik |
|---|---|---|
| bordeaux-dark | #3d0c0c | achtergronden, zware accenten |
| bordeaux-base | #8a2020 | primair accent |
| bordeaux-mid | #d44040 | interactief, focus states |
| bordeaux-light | #e07070 | hover, subtiele accenten |
| focus-visible | #d44040 | 2px outline, 44x44px touch targets |
Vijf donkere achtergrondgradaties aanwezig voor scènevariatie in het Immersive Framework.
Twee-texturen systeem
- Suede (voor bordeaux-elementen):
feTurbulencetype turbulence, freq 0.35x0.55, numOctaves 6, blend-mode soft-light - Grain (voor overige elementen):
feTurbulencetype fractalNoise, freq 0.85, numOctaves 4
In brutalisme-variant:
- grain opacity: 0.18
- scan lines opacity: 0.3
Brutalisme-modificaties
Aanvullende tokens voor de brutalisme-variant:
- Borders: 3px solid, geen border-radius (ook niet op foto’s)
- Typografie: oversized, mix van font-families, monospace in UI
- Gridlijnen: zichtbaar
- Chapter dots: vierkant
- Textuur: grain en scan lines actief
Content-type kleurcodering
| Type | Kleur | Textuur |
|---|---|---|
| Foto | bordeaux + suede | suede |
| Interview | sienna + grain | grain |
| Column | stone + grain | grain |
| Audio | bordeaux-glow + suede | suede |
Navigatie
Hybride navigatiesysteem:
- Ghost nav op foto-secties
- Editorial nav persistent op tekst-secties
- Side dots rechts voor scènenavigatie
- Mobile: hamburger + bottom bar
Editorial mode (tekst-zware secties): lichte achtergrond #f2ebe4.
JS-stack
| Bibliotheek | Omvang | Functie |
|---|---|---|
| Lenis | ~5KB | Smooth scroll |
| GSAP ScrollTrigger | ~25KB | Scroll-animaties |
| SplitType | ~3KB | Tekst-stagger |
Totale JS-omvang: 75-80KB. Alternatief onder evaluatie: Trig.js (~4KB) als vervanging voor GSAP.
Versiebeheer-patroon
HTML-prototypes worden bewaard in een versies/ map naast de werkbestanden:
versies/
v1-controlled-brutalism-2026-03-23/
v2-brutalism-fullwidth-2026-03-24/
v3-immersive-brutalism-2026-03-24/
v4-immersive-fixed-2026-03-24/
Hetzelfde patroon is toegepast bij het Boek Engagency-project (versies/v1-*.html, versies/v2-*.html).
Glass UI overhaul (2026-04-25)
Het thema is op 25 april 2026 volledig herschreven met een glass UI-systeem op basis van backdrop-filter, CSS custom properties en Wavehaus als primair font. De brutalisme-variant is daarmee vervangen als actieve richting.
Aangeraakt in de overhaul:
themes/jvdb/assets/css/main.cssherschreven (~950 regels), glass tokens, alle componentklassenthemes/jvdb/layouts/index.htmlnieuw met alle homepage-sectiesthemes/jvdb/layouts/_default/baseof.htmlnav-ghost vervangen door nav-glassthemes/jvdb/layouts/partials/nav-glass.htmlnieuw
Migratieplan voor nog-niet-overgezette templates staat in design/glass-ui-plan.md. Openstaande templates per mei 2026: foto/single.html, media/single.html, media/list.html, tekst/interview.html, shortcodes/gallery.html, baseof.html footer.
Zie wiki-glass-ui-css-systeem voor tokenstructuur en utility-klassen.
Cursor gallery als foto-sectie (2026-04-27)
De /foto-sectie gebruikt twee Hugo-layouts uit themes/jvdb/layouts/foto/:
list.html— album-landingspagina, spawnt album-covers als cursor-scrub gallerycursor-gallery.html— individuele albumpagina, spawnt albumfoto’s
Afbeeldingen staan in static/albums/<albumslug>/ als pre-geëxporteerde WebP. Hugo-template gebruikt album_folder frontmatter-param om bestanden te lezen via readDir. Twintig albums aangemaakt (2026-04-27).
Zie wiki-cursor-scrub-gallery-mechaniek voor de interactiemechaniek en Hugo-integratie.
Deploy-setup (2026-04-27)
| Methode | Status |
|---|---|
Lokaal deploy-script (~/Claude/scripts/deploy-new.sh) | Actief |
GitHub Actions (.github/workflows/deploy.yml) | Actief voor master-pushes |
| FTP credentials | ~/.netrc (chmod 600) |
GitHub repo: https://github.com/Jvdbreemen/jimvandenbreemen.nl (privé).
De GitHub Actions workflow bouwt Hugo, converteert ontbrekende JPG/PNG naar WebP via cwebp, en deployt naar new.jimvandenbreemen.nl/public_html/ via SamKirkland/FTP-Deploy-Action met protocol: ftps.
Aandachtspunt: static/albums/ (2.9+ GB) staat niet in git. CI-builds missen albumfoto’s tot er een deploy-branch of LFS-strategie is. Openstaande keuze: deploy branch (lokaal gebouwde public/ pushen naar losse branch) of foto’s los uploaden naar server.
Zie wiki-weboke-ftp-deploy voor de volledige deploy-pipeline.
Zes verbeterpunten (vastgesteld 24 maart 2026, status mei 2026)
- Te veel specificeren, te weinig bouwen — gedeeltelijk opgelost (glass UI + cursor gallery gebouwd)
- Content ontbreekt — 20 albums toegevoegd; tekstpagina’s nog placeholder
- Geen versiebeheer ingericht — opgelost (GitHub + GitHub Actions)
- Accessibility niet getest — open
- Performance tooling ontbreekt — open
- Zware JS-stack (GSAP 75-80KB) — open; Trig.js als alternatief nog niet getest
Standalone design system (2026-04-21)
design/system/ in de projectroot bevat een standalone versie voor gebruik buiten Hugo:
| Bestand | Functie |
|---|---|
colors_and_type.css | Alle tokens + semantische utility-classes, voor prototypes |
fonts/ | Wavehaus woff2 kopieerbaar naar elke werkmap |
preview/ | 22 HTML-componentkaarten als bouwreferentie |
ui_kits/website/index.html | Interactieve layout-referentie |
SKILL.md | Instructies voor Claude Code om het systeem automatisch toe te passen |
Bron van waarheid blijft themes/jvdb/assets/css/main.css. colors_and_type.css is een gedestilleerde kopie voor prototypes.
Token-correcties toegepast op 2026-04-21:
| Token | Oud | Nieuw |
|---|---|---|
--bordeaux-light | #da4848 | #d44040 (aligned met --focus-ring) |
--text-decorative | #867a74 | #7a6e68 (iets donkerder/koeler) |
Utility-classes toegevoegd aan main.css:
::selection, .jvdb-dark, .jvdb-editorial, .jvdb-hero, .jvdb-h1—.jvdb-h3, .jvdb-quote, .jvdb-body, .jvdb-body-sm, .jvdb-meta, .jvdb-micro, .jvdb-tag, .jvdb-caption, .jvdb-code. Puur additief, geen bestaande componentstijlen aangeraakt.
Verbanden
-
Zie ook: wiki-glass-ui-css-systeem (tokenstructuur, utility-klassen, afbakening)
-
Zie ook: wiki-cursor-scrub-gallery-mechaniek (foto-sectie, Hugo-integratie, Barba.js)
-
Zie ook: wiki-dom-pool-gsap-optimalisatie (engine-optimalisaties cursor gallery)
-
Zie ook: wiki-weboke-ftp-deploy (deploy-pipeline, GitHub Actions, FTPS)
-
Zie ook: wiki-hugo-dict-scope-with-block (Go-template scope in homepage-secties)
-
Zie ook: wiki-immersive-interview-framework
-
Gerelateerd project: jimvandenbreemen.nl
-
Zie ook: research-pretext-chenglou — conceptually_related_to
Bronnen
Geen externe bronnen; kennis gedestilleerd uit prototype-iteraties.
Sessie-herkomst
- raw-cowork-2026-03-24-review-website-progress-and-develop-brutalism-style
- raw-cowork-2026-03-21-create-style-guide-for-website
- raw-cowork-2026-03-21-analyze-website-accessibility-and-design
- raw-sessie-2026-04-21-design-system-toepassen-jimvandenbreemen-nl
- raw-sessie-2026-04-25-glass-ui-theme-deploy
- raw-sessie-2026-04-27-cursor-gallery-hugo-integratie
- raw-sessie-2026-04-27-github-actions-ftp-deploy