Coloriginz Design Systemshadcn custom registry

@col/brand-assets

Versie: 1.0.0 Toegevoegd: 2026-08-03

Herkomst

Onderdeel van het assetbesluit in docs/specs/2026-08-03-v2-branding-en-auth-ontwerp.md: bron in deze repo, kopie in de app, geen runtime-koppeling. Registry-items kunnen geen binaire bestanden dragen (bestandsinhoud reist als tekst), dus dit item levert in plaats daarvan het ophaalscript dat de binaire assets naar de consumerende app kopieert.

De brondata komt uit supplier-onboarding-vercel/public/ (logo's en achtergronden die daar al bestonden) en is overgezet naar assets/ in deze repo — zie docs/specs/2026-08-03-v2-implementatieplan.md, Taak 1.

Waarvoor

Een Node-script (node scripts/pull-brand-assets.mjs) dat het manifest op /assets/manifest.json ophaalt, ontbrekende of gewijzigde bestanden downloadt naar public/brand/ in de consumerende app, en al up-to-date bestanden overslaat op basis van bestandsgrootte.

Draai het eenmalig bij het opzetten van een app, en opnieuw wanneer een merkasset in het design system wijzigt. Het is bewust geen build-stap — zo zie je in git diff wanneer een logo verandert, en blijft de consumerende app werken als het design system tijdelijk onbereikbaar is (de gekopieerde bestanden staan al in de app zelf).

Gebruik het niet als je liever assets rechtstreeks vanaf design-system.apps.coloriginz.com/assets/ laadt — dat is bewust niet de architectuur (zie Bewuste keuzes).

De bestanden in public/brand/ zijn voor de browser, niet voor e-mailbijlagen: Vercel serverless functions kunnen public/ op verzendmoment niet betrouwbaar van de schijf lezen. Voor een e-maillogo embed je base64 in code — zie docs/items/email-shell.md, "Wat je app moet leveren".

Wat je app moet leveren

Geen props of hooks — dit is een los script, geen React-component. Publieke "API" is de omgevingsvariabele en het gedrag:

Omgevingsvariabele Default Betekenis
BRAND_ASSETS_URL https://design-system.apps.coloriginz.com/assets Basis-URL waar het manifest en de bestanden vandaan komen. Override voor lokaal testen tegen npm run dev in deze repo.

Gedrag:

  1. Haalt <BRAND_ASSETS_URL>/manifest.json op.
  2. Voor elk bestand in het manifest: als er al een lokaal bestand met exact dezelfde grootte bestaat op public/brand/<pad>, wordt het overgeslagen. Anders wordt het gedownload en weggeschreven (submappen worden aangemaakt).
  3. Print een samenvatting (N opgehaald, M ongewijzigd) en adviseert git diff te controleren.
  4. Bij een mislukte download (non-2xx) print het script een foutregel per bestand en zet process.exitCode = 1, maar gaat door met de overige bestanden — één kapotte asset blokkeert de rest niet.

Er is geen backend-contract in de zin van een API die de consumer zelf implementeert; het contract is het manifestformaat dat deze repo serveert ({ generated, files: [{ path, bytes, sha256 }] }).

Bestanden

Bestand Landt in Soort
pull-brand-assets.mjs scripts/ glue — draait in de consumer, geen gedeelde runtime-afhankelijkheid terug naar dit design system

Geen upstream shadcn-afhankelijkheden, geen cssVars.

Gebruikt door

App Sinds versie Opmerkingen
supplier-onboarding-vercel (Onboarding Portal) 1.0.0 Consumer #1, sinds 3 aug 2026. Script staat in scripts/pull-brand-assets.mjs, assets landen in public/brand/.
floriday-app (Floriday middleware) 1.0.0 Consumer #2, sinds 3 aug 2026. Gebruikt alleen backgrounds/default.jpg en logos/coloriginz.png; de andere zes zijn meegekomen en staan ongebruikt in de repo. Zie de kanttekening hieronder over waar het script landt.

Waar het script landt

De registry zet pull-brand-assets.mjs neer via de lib-alias, en die wijst in een src/-project naar src/scripts/ — niet naar de scripts/ map waar het commentaar in het bestand zelf naar verwijst. Consumer #2 heeft het handmatig verplaatst; het script gebruikt process.cwd(), dus de locatie maakt voor de werking niets uit.

Gevolg: na een npx shadcn add @col/brand-assets --overwrite staat het er dubbel. Wie het verplaatst, moet dat na elke update opnieuw doen.

Bewuste keuzes

Bekende beperkingen