| ADR | Architecture Decision Record — formeel document dat een architectuurbeslissing vastlegt met context, overwegingen en gevolgen. Zie Beslissingen. |
| Addon | Opt-in feature-pack per site. Activatie-state in addons tabel, metadata in code-registry (apps/dashboard/src/lib/addons/registry.ts). Eerste shippable addon: Events. Vision-classificatie kent 4 tiers: Kit, Stuff Pack, Game Pack, Expansion. Zie Vision Overzicht. |
| Addon-aware UI | Componenten die voorwaardelijk renderen via useIsAddonActive('events'). Voorbeelden: sidebar Events-link, menu-builder Archief-sectie. Verdwijnt automatisch bij deactivatie. |
| Anon-SELECT pattern | Beam security-regel: anonymous Supabase clients (public-site) mogen nooit direct SELECT op tabellen met klant-data. Toegang loopt altijd via SECURITY DEFINER RPCs met minimal returns + REVOKE ALL FROM public; GRANT EXECUTE TO anon, authenticated. Patroon gedocumenteerd in .claude/rules/security.md. |
| BrandColorToken | Verwijzing naar een merkleur of shade variant ('primary', 'accent-200', etc.) die resolves naar var(--brand-{token}). Ondersteunt base kleuren en OKLCH shade varianten (50-900). Gebruikt in achtergronden en buttons. |
| Block | Bouwsteen van een pagina. Elk block heeft een type, unieke ID en props. Opgeslagen als JSONB in pages.blocks. Drie betekenissen: (1) de type-definitie (hero, text), (2) een instantie op een pagina (block met UUID xyz), (3) het JSONB object. Zie Block Types. |
| Block picker | Sidebar-paneel in de editor waarmee gebruikers nieuwe blocks toevoegen aan een pagina. |
| Block type | Een van de soorten blocks: hero, features, testimonials-grid, featured-testimonial, testimonials-carousel, events-carousel (addon-gated), image, video, embed, cta, text, faq, group, columns. Zie Block Types. |
| Addon-gated block | Block-type dat alleen verschijnt in de block-picker wanneer de bijbehorende addon actief is. Geconfigureerd via BlockDefinition.requiredAddon. block-picker(.modal) filteren op useActiveAddonIds(). Eerste voorbeeld: events-carousel (requires events-addon). |
| Archive pages registry | Declaratieve lijst (apps/dashboard/src/lib/archive-pages.ts) van addon-routes (events → /events/). Hook useArchivePages() filtert op actieve addons. Gebruikt door MenusPage, link-edit-modal en button-edit-modal — uitbreiden naar nieuwe addon-archives vereist één entry, geen modal- of menu-wijzigingen. |
| basePath prefix | Helper prefixInternalUrl(url, basePath) in apps/public-site/src/lib/url.ts. Astro blocks (CTA/Hero/Text/Columns/FAQ/Image) lezen Astro.locals.basePath zodat interne hrefs in dev-mode correct werken op localhost:4421/s/<slug>/. No-op in productie. |
| GalleryField | ACF-stijl thumbnail-grid voor image-galleries (apps/dashboard/src/components/gallery-field.tsx). Store-onafhankelijk (items + onChange): drag-and-drop herordenen via SortableList strategy="grid", hover-acties per tegel, klik → alt-edit-modal, ”+“-tegel opent de media-picker (multi-select via MediaPickerModal multiple). Eerste consumer: event-gallery. |
| FormRichText | Form-vriendelijke Tiptap WYSIWYG component (apps/dashboard/src/components/form-rich-text.tsx) zonder editor-store dependency. Feature-pariteit met de block-editor via gedeelde bouwstenen uit rich-text.tsx (ListItemWithIcon, TextStyleWithClass, tryListAutoStartOnEnter) + FixedToolbar; undo/redo is Tiptap-native i.p.v. store-history. Gebruikt voor losse rich-text velden in formulieren (events: omschrijving + FAQ-antwoorden). |
| Carousel engine | Client-side bibliotheek voor horizontale swipe-carousels. Beam gebruikt Swiper via één gedeelde configuratie — useSwiperCarousel (React dashboard) en observeCarousels + Swiper (Astro publieke site). Slide-layout volledig in CSS (review-card.css). Zie ADR-010. |
| Bubble menu | Zwevende toolbar die verschijnt bij tekst selectie in de Tiptap rich text editor. Bevat inline formatting, heading levels, text style presets en een expand-knop om de tekst in een modal te bewerken. |
| Bootstrap | Automatische setup bij registratie: bootstrap_new_user() trigger maakt team_members record (owner) + site aan. |
| Cascade-hrefs | Automatische update van interne links (buttons) op alle pagina’s wanneer een pagina-slug wijzigt. Via POST /pages/:id/cascade-hrefs. |
| Custom domain | Een eigen domein (bijv. example.com) gekoppeld aan een Beam site via CF Pages Custom Domains. Max 5 per site. |
| Dirty state | Wanneer de editor onopgeslagen wijzigingen bevat. Detectie via vergelijking van page met originalPage. |
| Echo prevention | Mechanisme dat voorkomt dat een Tiptap editor zijn eigen Zustand store-updates terugleest. Gebruikt per-editor write timestamps (Map) met een venster van 50ms. |
| Editor | De fullscreen visuele editor voor het bewerken van pagina blocks. Draait in EditorLayout zonder dashboard sidebar. |
| Events addon | Eerste installeerbare addon — lichtgewicht CMS voor agenda-items met archive + detail-pagina op de publieke site. Tabel: events. Status-set: draft/published/sold_out/completed. CTA-link is altijd extern. Zie Functionaliteit. |
| Platform admin | User met een rij in de platform_admins tabel — super-user die buiten team-rollen om CRUD-toegang heeft op alle site-scoped tabellen via bypass policies (mig 080). Gebruikt voor support, troubleshooting en klant-onboarding. Niet gelijk aan site-owner of -admin. |
| Public resolver RPC | SECURITY DEFINER Postgres-functie die anon en authenticated rollen via GRANT EXECUTE toelaat tot minimal site-data per call. Naamspatroon: public_resolve_*. Vervangt directe SELECT-policies sinds mig 074-078. |
| Expand modal | Uitklapbare modal voor het bewerken van rich text. Dezelfde Tiptap editor verplaatst van canvas naar modal; canvas toont statische HTML als placeholder. |
| FOUT | Flash of Unstyled Text — zichtbare font-wissel wanneer een webfont later laadt dan de fallback. Beam voorkomt dit via <link rel="preload"> op de publieke site en FontFace API + opacity transitie in de editor. |
| Ghost user | Een Supabase auth user aangemaakt door een invite die nooit geaccepteerd is. Wordt opgeruimd via delete_ghost_user(). |
| Gilde | (Vision) Gebruikersclassificatie op basis van industrie/identiteit. 6 gilden: Healers, Creators, Merchants, Scholars, Hosts, Builders. |
| Group | Container block dat andere blocks bevat. Gebruikt voor visuele groepering en als pattern container. |
| Dark mode tokens | Automatisch berekende dark mode varianten van semantic tokens via OKLCH kleurruimte. Geactiveerd via @media (prefers-color-scheme: dark) in brand CSS. |
| Guardrail | Automatische kwaliteitscheck op design tokens: WCAG AA contrast validatie, font pairing verificatie. Altijd actief, niet optioneel. Via GET /brand/:siteId/contrast. |
| HeaderDesign | JSONB configuratie-object voor header styling. Bevat achtergrond, border, schaduw, positie, hoogte, typografie, button styling en scroll-gedrag. Opgeslagen in site_settings.header_design. Gedefinieerd in @beam/shared. |
| HeaderNavType | Type-definitie voor header navigatie layout: logo-menu-button (Logo—Menu—CTA) of menu-logo-menu (Menu—Logo—Menu). Opgeslagen in site_settings.header_nav_type. |
| BrandLogo | Logo variant in het merkprofiel. Bevat id, label (bijv. Primary, Wit, Donker) en url. Opgeslagen als array in brand_profiles.logos. Selecteerbaar in header config via selectedLogoId. |
| BrowserMockup | Herbruikbaar dashboard component dat content toont in een browser-achtig frame (traffic lights + URL balk). Ondersteunt CSS zoom (scrollable, sticky headers) en transform: scale() (statische previews). |
| LQIP | Low Quality Image Placeholder — een 20px blur preview van een afbeelding, opgeslagen als base64 data URL in blur_data_url. Gegenereerd via CF Image Resizing. |
| Magic link | Eenmalige authenticatie-link verstuurd via email. Gebruikt voor team uitnodigingen via Supabase Auth. |
| OKLCH | Perceptueel uniforme kleurruimte (Lightness, Chroma, Hue). Beam gebruikt OKLCH voor het genereren van kleurschalen (50-900) en dark mode varianten vanuit brand kleuren. |
| Media | Afbeelding, document of video in de media library. Opgeslagen in R2 (images/docs) of Bunny Stream (video). |
| Media library | De dashboard module (/media) voor beheer van afbeeldingen, documenten en video’s. Ondersteunt upload, stock foto’s, tags en bulk operaties. |
| Owner | De primaire gebruiker van een team/site. Elke site heeft precies 1 owner. Aangemaakt bij registratie via bootstrap trigger. |
| Page | Een webpagina binnen een site. Bevat blocks (JSONB), slug, SEO velden en publicatiestatus (draft / published). |
| Pattern | Herbruikbaar block template. Kan als synced container in meerdere pagina’s worden ingevoegd. Bij “Update all uses” worden alle instanties bijgewerkt via propagatie. |
| Pattern container | Een group-block met _pattern_id metadata dat een pattern instance vertegenwoordigt in een pagina. |
| PKCE | Proof Key for Code Exchange — OAuth flow gebruikt door Supabase Auth. Veiliger dan implicit grant omdat tokens niet via URL fragment worden verstuurd. |
| Primary domain | Het hoofddomein van een site. Er is altijd precies 1 primary. Bij verwijdering wordt het volgende domein promoted. |
| Propagatie | Het bijwerken van alle pattern instances wanneer het bronpattern gewijzigd wordt. Via POST /patterns/propagate. |
| R2 | Cloudflare’s object storage (S3-compatible, geen egress kosten). Primaire opslag voor media bestanden. |
| RLS | Row Level Security — PostgreSQL feature die data-toegang afdwingt op rij-niveau. Alle Beam tabellen hebben RLS policies. Zie Data & Architectuur. |
| Site | De container voor alle content van een gebruiker: pagina’s, media, patterns, domeinen, instellingen. Max 10 actieve sites per owner. Ondersteunt soft delete met 14 dagen grace period. |
| Site switcher | UI component in het user dropdown menu waarmee gebruikers tussen hun sites wisselen. Toont favicon en sitenaam per site. Bij wisselen worden alle site-scoped data (pages, menus, settings, domains) herladen. |
| Soft delete | Verwijdermethode waarbij een record niet direct uit de database wordt gewist, maar een deleted_at timestamp krijgt. Het record wordt gefilterd uit reguliere queries en na een grace period (14 dagen voor sites) definitief verwijderd door een cron job. |
| Semantic token | Design token met een semantische betekenis (bijv. surface, border, on-primary) afgeleid van brand kleuren. Maakt het mogelijk om kleurgebruik los te koppelen van specifieke hex waarden. |
| Shade scale | 10-staps kleurschaal (50-900) gegenereerd via OKLCH vanuit een enkele brand kleur. Bijv. --brand-primary-50 (lichtst) t/m --brand-primary-900 (donkerst). |
| Slug | URL-pad van een pagina (bijv. over-ons). Moet uniek zijn, lowercase, max 63 tekens. Regex: ^[a-z0-9]([a-z0-9-]{1,61}[a-z0-9])?$. |
| Style Pack | (Vision) Visueel thema gebaseerd op design tokens. Gekoppeld aan gilde en class combinatie. |
| Team | Een groep gebruikers die samenwerken aan een site. Bestaat uit 1 owner + optioneel admins, editors, viewers. Technisch: alle records in team_members met dezelfde owner_id. Zie Rollen & Rechten. |
| Focus trap | Mechanisme in de Modal component dat Tab/Shift+Tab binnen de modal houdt (WCAG 2.1 §2.4.3). Ondersteunt buttons, inputs, links en [contenteditable] elementen. |
| Testimonial | Klantbeoordeling of getuigenis bestaande uit een quote, auteur (naam, rol, bedrijf), optionele media (avatar of logo) en optionele sterrenrating (0-5). Gebruik in testimonials-grid, featured-testimonial en testimonials-carousel blocks. |
| Featured testimonial | Uitgelichte enkel testimonial block (featured-testimonial). Toont één quote groot en gecentreerd zonder sectie-titel. Decoratief groot aanhalingsteken als er geen media is. |
| Tiptap | Headless WYSIWYG editor gebouwd op ProseMirror. Gebruikt in de hero block editor voor rich text titel en subtitel. Lazy-loaded in apart vendor chunk. Eén editor instance per RichText component; verplaatst naar expand modal voor uitgebreid bewerken. |
| Token version | Snapshot van design tokens op een bepaald moment. Auto-snapshots worden gemaakt bij elke wijziging; named snapshots zijn handmatige checkpoints. Max 50 auto-snapshots per site. |
| Variable font | Font bestand dat alle weights (bijv. 100-900) in één woff2 file bevat via variabele assen. Beam gebruikt 19 variable fonts + 3 statische fallbacks. Elimineert browser font-synthese en reduceert het aantal bestanden. |
| W3C Design Tokens | W3C Community Group specificatie voor design token uitwisseling. Beam exporteert tokens in dit formaat via GET /brand/:siteId/tokens. Compatibel met Figma Tokens en Style Dictionary. |
| WCAG AA | Web Content Accessibility Guidelines niveau AA — vereist minimaal 4.5:1 contrast ratio voor normale tekst, 3:1 voor grote tekst. Beam’s guardrail systeem valideert dit automatisch. |
| Vertical Pack | (Vision) Industrie-specifiek addon pakket met blocks, style pack en content templates. |
| Worker | Cloudflare Worker — serverless functie op V8 isolate. Beam’s API (beam-api) en router (beam-router) draaien als Workers. |