03 — Expansion Pack Systeem
03 — Expansion Pack Systeem
Section titled “03 — Expansion Pack Systeem”“Je kiest geen template. Je kiest wie je bent.”
Geïnspireerd door De Sims (expansion packs als zelfstandige werelden), World of Warcraft (archetypes, talent trees, synergies), en Pokémon TCG (verzamelen, ontdekken, combineren).
Inhoudsopgave
Section titled “Inhoudsopgave”- Filosofie
- Beam Core — Het Platform
- De Lagenstructuur
- Het Addon Manifest
- Addon Capabilities
- Specialisaties (Talent Trees)
- Synergieën
- De Beam Codex
- Booster Packs & Set Releases
- Vertical Packs
- Database Schema
- Lifecycle Management
- Distributie
- Implementatie Roadmap
1. Filosofie
Section titled “1. Filosofie”De Pagebuilder is Compleet zonder Addons
Section titled “De Pagebuilder is Compleet zonder Addons”Beam is een volwaardige pagebuilder. Elke gebruiker kan zonder enig uitbreidingspakket een professionele website bouwen. Addons voegen nieuwe use cases toe — niet ontbrekende basisfunctionaliteit.
Uitbreidingspakketten zijn Werelden, geen Features
Section titled “Uitbreidingspakketten zijn Werelden, geen Features”Een Blog addon is niet “de mogelijkheid om posts te schrijven.” Het is een compleet ecosysteem: content structuur, archiefpagina’s, RSS feeds, categorie-navigatie, auteurspagina’s, en de blocks die alles verbinden. Net als een Sims expansion pack dat een hele levensstijl toevoegt.
Kies wie je bent, niet wat je nodig hebt
Section titled “Kies wie je bent, niet wat je nodig hebt”De gemiddelde klant denkt niet in “ik heb een blog addon nodig.” Ze denkt: “Ik ben yoga docent en ik wil een website.” Het archetype-systeem (zie 06-guild-taxonomy.md) vertaalt identiteit naar functionaliteit.
Verzamelen is Menselijk
Section titled “Verzamelen is Menselijk”Blocks zijn kaarten, addons zijn sets, je site is je deck, de Beam Codex is je Pokédex. Het gaat niet om alles hebben — het gaat om de juiste combinatie voor jouw verhaal.
2. Beam Core — Het Platform
Section titled “2. Beam Core — Het Platform”Voordat een addon wordt geladen, levert het platform deze fundamenten:
Content Lifecycle
Section titled “Content Lifecycle”| Feature | Beschrijving |
|---|---|
| Scheduling | Publiceer content op een toekomstig moment (published_at) |
| Versioning | Revision history — elke opslag is een versie, terugdraaien mogelijk |
| Approval Workflows | Draft → Review → Published (configureerbaar per team rol) |
| Multi-language | Content vertalen op item-niveau, taalswitch op de public site |
Universal Taxonomy System
Section titled “Universal Taxonomy System”Tags en categorieën zijn platform-niveau — geen addon-feature:
Core Taxonomy Engine├── Gedeelde tag/categorie pool per site├── Elke entiteit kan taxonomieën koppelen (pages, items, media)├── Hierarchische categorieën (parent/child)├── Automatische slug generatie└── Cross-content filtering (toon alles met tag "zomer")Analytics Event Bus
Section titled “Analytics Event Bus”Core: page_view, click, form_submit, item_view, searchAddon: blog → "populairste posts", shop → "conversie funnel"Permission Systeem
Section titled “Permission Systeem”Core: owner, admin, editor, viewerAddon: + author (blog), + instructor (bookings), + shop-manager (shop)Site Blueprints & Onboarding
Section titled “Site Blueprints & Onboarding”Bij sign-up kiest de gebruiker een archetype. Het platform zet een complete site op:
Archetype geselecteerd ↓Blueprint laden: ├── Pages aanmaken (Home, Over, Contact, ...) ├── Menu's vullen ├── Site settings (kleuren, fonts, favicon) ├── Addons activeren met juiste specialisatie ├── Starter content plaatsen └── Asset pack laden (stockfoto's, iconen)3. De Lagenstructuur
Section titled “3. De Lagenstructuur”Laag 5 │ User Overrides │ Eigen kleuren, fonts, aangepaste templates, content │ Altijd de hoogste prioriteit — de gebruiker wint │Laag 4 │ Vertical Packs │ Complete site blueprints per archetype │ = gilde styling + class addons + niche templates + starter content │Laag 3 │ Style Packs (+ seasonal overrides) │ Kleurpaletten, fonts, component styling │ Per gilde: "Healer Calm", "Creator Bold", "Merchant Trust" │Laag 2 │ Functional Addons (met specialisaties + synergieën) │ Blog, Shop, Bookings, Portfolio, Popups, Forms, Reviews, Events │Laag 1 │ Blocks + Kits │ Atomaire bouwstenen, kleine block packs │ Los te activeren, geen collection of routes nodig │────────┤ │Core │ Beam Platform │ Editor, pages, content lifecycle, taxonomies, analytics bus, │ theming engine, permissions, cross-content referenties, │ blueprints, onboarding, multi-languageAddon Tiering
Section titled “Addon Tiering”| Tier | Sims Equivalent | Beam Equivalent | Scope | Voorbeeld |
|---|---|---|---|---|
| Kit | Kit | Block pack | 1–3 blocks | Pricing Table Kit, Stats Kit |
| Stuff Pack | Stuff Pack | Style pack | Visueel/cosmetisch | ”Healer Calm” stijl |
| Game Pack | Game Pack | Functional addon | Nieuwe capability | Blog, Shop, Bookings |
| Expansion | Expansion Pack | Vertical pack | Complete ervaring | ”Yoga Studio”, “Creative Portfolio” |
4. Het Addon Manifest
Section titled “4. Het Addon Manifest”Elke addon declareert via een manifest wat het meebrengt:
interface AddonManifest { // Identiteit id: string // 'blog', 'shop', 'popups' name: string description: string icon: string // Lucide icon version: string tier: 'kit' | 'stuff-pack' | 'game-pack' | 'expansion'
// Content & Rendering blocks?: AddonBlockDefinition[] // Nieuwe block types collections?: AddonCollection[] // Content collections templates?: AddonTemplate[] // Pagina templates (archief, single) routes?: AddonRoute[] // Programmatische URL routes scripts?: AddonScript[] // Client-side JS globalStyles?: AddonGlobalStyle[] // CSS variabelen, fonts
// Dashboard settings?: AddonSettingsSchema dashboardWidgets?: AddonWidget[] menuItemTypes?: AddonMenuItemType[]
// Backend crons?: AddonCron[] // Scheduled workers publicApiRoutes?: AddonApiRoute[] // Public-facing endpoints hooks?: AddonHookHandler[] // Event listeners emailTemplates?: AddonEmailTemplate[]
// SEO & Rich Text seoAssets?: AddonSeoAsset[] // RSS, sitemap, JSON-LD inlineElements?: AddonInlineElement[] // Rich text extensies entityExtensions?: AddonEntityExt[] // Extra velden op pages/items permissions?: AddonPermission[]
// WoW-systemen specializations?: AddonSpecialization[] // Talent tree paden provides?: AddonCapability[] // Wat deze addon biedt aan anderen enhancedBy?: AddonSynergy[] // Synergieën met andere addons}Style Pack Interface
Section titled “Style Pack Interface”interface StylePack { id: string // 'healer-calm', 'creator-bold' name: string gilde?: string // Optioneel: gekoppeld aan een gilde colors: { brand: string primary: string accent: string surface: string text: string muted: string [key: string]: string } fonts: { heading: FontDefinition body: FontDefinition } borderRadius: 'none' | 'small' | 'medium' | 'large' spacing: 'compact' | 'comfortable' | 'spacious' componentStyles?: Record<string, CSSProperties> seasonal?: { activeFrom: string // ISO date activeTo: string overrides: Partial<StylePack> }}Vertical Pack Interface
Section titled “Vertical Pack Interface”interface VerticalPack { id: string // 'yoga-studio' name: string gilde: string // 'healer' class: string // 'guide' targetAudience: string
// Compositie — geen duplicatie requires: string[] // Addon IDs: ['blog', 'bookings'] specializations: Record<string, string> // Per addon: welke spec actief stylePack: string
// Niche-specifieke toevoegingen blocks?: AddonBlockDefinition[] templates?: AddonTemplate[]
// Complete site bij onboarding blueprint: { pages: BlueprintPage[] menus: { header: MenuItem[], footer: MenuItem[] } siteSettings: Partial<SiteSettings> addonItems?: Record<string, BlueprintItem[]> assetPack?: { images: AssetDefinition[] // Opgeslagen in R2 icons?: AssetDefinition[] } }
// Vertical pack voortgangsstappen milestones: Milestone[]}
interface Milestone { id: string label: string // "Eerste les toegevoegd" condition: string // 'collection:bookings:items >= 1' link: string // Dashboard pad naar de juiste plek}Noot: Milestones (vertical pack voortgang) zijn onderdeel van de addon-context. De Journey hoofdstukken (persoonlijk verhaal van de gebruiker) zijn platform-breed en staan in 04-experience-community.md. Beide systemen lopen parallel maar zijn conceptueel gescheiden.
5. Addon Capabilities
Section titled “5. Addon Capabilities”5.1 Blocks
Section titled “5.1 Blocks”interface AddonBlockDefinition extends BlockDefinition { addonId: string category?: string // Groepering in block picker}De block picker toont addon blocks in eigen secties:
┌─────────────────────────────┐│ Basis ││ Hero · Features · CTA ││ Text · FAQ · Columns ││ ││ Blog │ ← functional addon│ Recente posts · Post card ││ Categorie lijst ││ ││ Yoga Studio │ ← vertical pack│ Lesrooster · Docent card ││ Prijspakket │└─────────────────────────────┘5.2 Content Collections
Section titled “5.2 Content Collections”Content collecties met eigen CRUD. Items gebruiken dezelfde Block[] als pages — de volledige editor is beschikbaar.
interface AddonCollection { id: string // 'posts', 'products' label: string slug: string | null // URL prefix (null = geen publieke URL) metadataSchema: ZodSchema metadataForm: ComponentType listingColumns: ColumnDef[]}5.3 Templates & Routes
Section titled “5.3 Templates & Routes”interface AddonTemplate { id: string type: 'archive' | 'single' defaultLayout: { blocks: Block[] } // Fallback als geen custom page exists}
interface AddonRoute { pattern: string // '/blog/categorie/:slug' template: string data: string // 'posts', 'posts:single'}Route resolution in Astro:
Route wordt bezocht ↓Bestaat er een custom archief page? → JA: render de custom page (block editor layout) → NEE: render template defaultLayout (automatisch) ↓In beide gevallen: collection data wordt als context geïnjecteerd ↓Dynamic blocks resolven naar echte data: {{post-list}} → grid van items {{post-content}} → blocks van huidig item {{pagination}} → paginering {{category-filter}} → actieve filters {{breadcrumbs}} → navigatiepad {{item-metadata}} → datum, auteur, tags5.4 Scripts & Global Styles
Section titled “5.4 Scripts & Global Styles”interface AddonScript { id: string location: 'head' | 'body-start' | 'body-end'}
interface AddonGlobalStyle { id: string type: 'css' | 'font' content?: string // Inline CSS url?: string // Externe URL of R2 URL}5.5 Backend: Crons, Public API, Hooks, Email
Section titled “5.5 Backend: Crons, Public API, Hooks, Email”interface AddonCron { id: string schedule: string // Cron expressie handler: string}
interface AddonApiRoute { method: 'GET' | 'POST' | 'PUT' | 'DELETE' pattern: string // '/api/cart' handler: string}
interface AddonHookHandler { event: string // 'page:publish', 'item:create' handler: string}
interface AddonEmailTemplate { id: string label: string subject: string template: string // React Email component}5.6 SEO Assets
Section titled “5.6 SEO Assets”interface AddonSeoAsset { type: 'rss' | 'sitemap' | 'json-ld' route: string // '/blog/feed.xml' collection?: string}5.7 Entity Extensions & Permissions
Section titled “5.7 Entity Extensions & Permissions”interface AddonEntityExt { target: 'page' | 'addon-item' fields: FieldDefinition[] schema: ZodSchema}
interface AddonPermission { id: string // 'blog:author' label: string capabilities: string[]}6. Specialisaties (Talent Trees)
Section titled “6. Specialisaties (Talent Trees)”Geïnspireerd door WoW’s talent systeem. Een Mage kan Fire, Frost of Arcane zijn — dezelfde class, totaal andere ervaring.
interface AddonSpecialization { id: string name: string description: string icon: string enabledBlocks?: string[] enabledTemplates?: string[] metadataOverrides?: Partial<ZodSchema> defaultSettings?: Record<string, unknown> routeOverrides?: Partial<AddonRoute>[]}Blog Specialisaties
Section titled “Blog Specialisaties”Blog ─┬─ Persoonlijk Blog │ Chronologisch, auteur-centraal │ Metadata: datum, mood, tags │ ├─ Magazine │ Categorie-gedreven, meerdere auteurs, featured posts │ Metadata: categorie, auteur, featured image, leestijd │ └─ Kennisbank Zoekbaar, gestructureerd, evergreen Metadata: categorie, moeilijkheidsgraad, laatst bijgewerktShop Specialisaties
Section titled “Shop Specialisaties”Shop ─┬─ Fysieke Producten │ Voorraad, verzending, varianten (maat/kleur) │ ├─ Digitale Producten │ Downloads, licenties, directe levering │ └─ Services Pakketprijzen, intakes, offertesBookings Specialisaties
Section titled “Bookings Specialisaties”Bookings ─┬─ 1-op-1 Sessies │ Tijdslots, intake, betaling per sessie │ ├─ Groepslessen │ Rooster, capaciteit, wachtlijst │ └─ Workshops & Events Losse data, ticket capaciteitPortfolio Specialisaties
Section titled “Portfolio Specialisaties”Portfolio ─┬─ Galerij │ Beeldgericht, grid/masonry, lightbox │ ├─ Case Studies │ Probleem → oplossing → resultaat │ └─ Timeline Chronologisch, carrière door de tijdDe specialisatie wordt gekozen bij activatie (of automatisch via vertical pack). Wisselen kan altijd zonder data verlies.
7. Synergieën
Section titled “7. Synergieën”Geïnspireerd door WoW’s profession systeem. Addons zijn standalone, maar samen ontgrendelen ze nieuwe mogelijkheden.
interface AddonCapability { type: string // 'content-feed', 'payment', 'scheduling' description: string}
interface AddonSynergy { addonId: string capability: string unlocks: string blocks?: AddonBlockDefinition[] // Synergie-specifieke blocks templates?: AddonTemplate[]}Synergie Matrix
Section titled “Synergie Matrix” Blog Shop Bookings Portfolio Forms Popups ReviewsBlog ─ Producten "Boek na Gerelateerd Comments op Lead magnet ─ in posts het lezen" werk in posts posts na artikel
Shop Content ─ Betaalde ─ Product Exit-intent Product marketing workshops configurator korting reviews
Bookings Agenda in Betaalde ─ ─ Intake ─ Service blog sidebar workshops formulier reviews
Portfolio Process ─ Portfolio ─ Offerte ─ Klant blog posts review (zelf) aanvraag reviews
Forms ─ ─ Intake Offerte ─ Form in Review aanvraag (zelf) popup formulier
Popups Lead capture Korting ─ ─ Form in ─ ─ na artikel popup popup (zelf)
Reviews ─ Social Testimonials Klant Review ─ ─ proof quotes formulier (zelf)Hoe Synergieën Werken
Section titled “Hoe Synergieën Werken”Gebruiker activeert Blog + Shop ↓Systeem detecteert: Blog.enhancedBy bevat { addonId: 'shop', unlocks: '...' } ↓Synergie ontgrendeld: → Nieuw block: "Gerelateerde producten" (in blog post editor) → Nieuw inline element: {{product-prijs}} in blog tekst → Dashboard hint: "Je kunt nu producten embedden in blog posts"De gebruiker krijgt een melding: “Blog + Shop actief — je kunt nu producten in artikelen tonen.”
8. De Beam Codex
Section titled “8. De Beam Codex”Geïnspireerd door de Pokédex en het Pokémon TCG album. Een visuele catalogus van alles wat beschikbaar is — en wat jij hebt ontdekt.
Elk Block is een Kaart
Section titled “Elk Block is een Kaart”┌─────────────────────────┐│ ✦ HERO ││ ━━━━━━━━━━━━━━━━━━━━━ ││ ││ ┌───────────────────┐ ││ │ [Preview van │ ││ │ het block] │ ││ └───────────────────┘ ││ ││ Basis · Alle gilden ││ ───────────────────── ││ Header sectie met ││ titel, subtitel en ││ call-to-action buttons ││ ││ ◆◆◇◇◇ │ ← Complexiteit (1-5)│ ││ CORE ✦ │ ← Rarity badge└─────────────────────────┘Kaart Rarities
Section titled “Kaart Rarities”| Rarity | Pokémon | Beam | Hoe te verkrijgen |
|---|---|---|---|
| Common ◇ | Common | Core blocks | Altijd beschikbaar |
| Uncommon ◆ | Uncommon | Kit blocks | Activeer een Kit |
| Rare ★ | Rare | Addon blocks | Activeer een functional addon |
| Holo ✦ | Holographic | Vertical pack blocks | Activeer een vertical pack |
| Secret ✧ | Secret Rare | Synergie blocks | 2+ addons combineren |
Secret blocks zijn de meest bijzondere — ze bestaan alleen als je de juiste combinatie van addons hebt:
Blog + Shop actief → ✧ "Gerelateerde Producten" ontgrendeldBlog + Bookings → ✧ "Boek Na Het Lezen" CTA ontgrendeldShop + Reviews → ✧ "Product Review Carousel" ontgrendeldBlock Gilde-Affiniteiten
Section titled “Block Gilde-Affiniteiten”Zoals Pokémon kaarten types hebben, hebben blocks gilde-affiniteiten:
| Type | Kleur | Gilden | Voorbeeld blocks |
|---|---|---|---|
| 🌿 Growth | Groen | Healers, Hosts | Lesrooster, Menukaart, Booking CTA |
| 🔥 Impact | Rood/Oranje | Merchants, Builders | Pricing Table, Product Card, CTA |
| 💧 Flow | Blauw | Creators, Scholars | Portfolio Grid, Kennisbank, Timeline |
| ⚡ Connect | Geel | Alle | Reviews, Contact Form, Social Proof |
| 🌙 Atmosphere | Paars | Hosts, Creators | Sfeerbeelden, Video Background, Galerij |
Dit is puur informatief — een Merchant kan prima een 🌙 Atmosphere block gebruiken.
Codex Interface
Section titled “Codex Interface”┌──────────────────────────────────────────────────────────┐│ 📖 Beam Codex ││ ││ Jouw collectie: 34 van 87 blocks ontdekt ││ ████████████████░░░░░░░░░░░ 39% ││ ││ Core Blocks (8/8) ✓ compleet ││ ◇ Hero ◇ Features ◇ CTA ◇ Text ││ ││ Blog Blocks (3/3) ✓ compleet ││ ★ Recente Posts ★ Post Card ★ Categorie Lijst ││ ││ Shop Blocks (0/5) 🔒 locked ││ [?] [?] [?] [?] [?] ││ ││ Synergie Blocks (1/6) ││ ✧ Gerelateerde Producten ││ [?] [?] [?] [?] [?] ││ ││ Yoga Studio (4/4) ✓ compleet ││ ✦ Lesrooster ✦ Docent Card ││ ✦ Prijspakket ✦ Studio Sfeer │└──────────────────────────────────────────────────────────┘Onontdekte blocks tonen als [?] met een silhouet — je weet dat er iets is, maar niet wat.
9. Booster Packs & Set Releases
Section titled “9. Booster Packs & Set Releases”De Unboxing Ervaring
Section titled “De Unboxing Ervaring”Wanneer een gebruiker een addon of vertical pack activeert, geen droge “Addon geactiveerd” melding. In plaats daarvan een onthulling:
┌──────────────────────────────────────────────┐│ ││ ✦ YOGA STUDIO PACK ✦ ││ ││ ┌─────────┐ ││ │ ✨ │ ← Kaart draait om ││ │ LESROO │ "Lesrooster" ││ │ STER │ Een weekoverzicht met ││ │ ✦ │ al je lessen en tijdslots ││ └─────────┘ ││ ││ Ontdekt: 1 van 4 ││ [Volgende kaart onthullen →] │└──────────────────────────────────────────────┘Elke block card wordt één voor één onthuld: face-down → omdraaien → naam, preview en beschrijving + rarity badge.
Dit is geen frivoliteit — het is een bewust ontworpen moment dat de waarde van het pakket voelbaar maakt.
Seizoensgebonden Set Releases
Section titled “Seizoensgebonden Set Releases”Geïnspireerd door Pokémon TCG sets. Beam brengt periodiek nieuwe block sets uit:
| Seizoen | Set Naam | Nieuwe Blocks |
|---|---|---|
| Lente | Fresh Start | Springtime Hero, Growth Timeline, Seed CTA |
| Zomer | Golden Hour | Summer Gallery, Booking Calendar, Event Banner |
| Herfst | Harvest | Year Review, Testimonial Wall, Cozy Section |
| Winter | Northern Light | Holiday Banner, Gift Card, Countdown |
Seasonal blocks zijn permanent — geen FOMO, geen tijdsdruk.
Patroon Trading
Section titled “Patroon Trading”In Pokémon TCG trade je kaarten. In Beam deel je patronen — custom block composities:
Anna maakt een lesrooster-patroon: Lesrooster block + Pricing table + CTA
Ze deelt het met connectie Lisa: [Patroon delen met Lisa →]
Lisa ontvangt: "Anna heeft een patroon met je gedeeld: Lesrooster Compleet" [Bekijken] [Toevoegen aan mijn patronen]Geen marketplace met prijzen — genereus delen tussen collega’s.
10. Vertical Packs
Section titled “10. Vertical Packs”Anatomie: Yoga Studio
Section titled “Anatomie: Yoga Studio”"Yoga Studio" Vertical Pack│├── Archetype: Healer × Guide│├── Requires:│ ├── Bookings (spec: groepslessen)│ ├── Blog (spec: persoonlijk)│ └── Reviews│├── Style Pack: "Healer Calm"│├── Niche Blocks:│ ├── Lesrooster (weekoverzicht met tijdslots)│ ├── Docent Card (foto, bio, specialisatie)│ └── Prijspakket (strippenkaart, abonnement, losse les)│├── Blueprint (complete site):│ ├── Home: hero + over + lesrooster + reviews + CTA│ ├── Lessen: rooster + prijzen + inschrijven│ ├── Over: verhaal + docenten grid + filosofie│ ├── Blog: archief met yoga/mindfulness posts│ └── Contact: formulier + locatie + openingstijden│├── Starter Content:│ ├── 3 voorbeeld blog posts│ └── 5 voorbeeldlessen│├── Asset Pack:│ ├── 8 yoga stockfoto's (opgeslagen in R2)│ ├── Icon set (lotus, mat, pose silhouettes)│ └── Favicon + OG image template│└── Milestones: ├── "Pas je homepage aan" ├── "Voeg je eerste les toe" ├── "Schrijf je eerste blog post" ├── "Vraag je eerste review aan" └── "Publiceer je site"Zie 06-guild-taxonomy.md voor de volledige vertical pack catalogus per gilde.
11. Database Schema
Section titled “11. Database Schema”Zie 08-brand-json-spec.md voor de complete SQL met alle RLS policies en indexes. Samenvatting:
Core Addon Tabellen
Section titled “Core Addon Tabellen”-- Geactiveerde addons per siteCREATE TABLE addons ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), site_id UUID NOT NULL REFERENCES sites(id) ON DELETE CASCADE, addon_type_id TEXT NOT NULL, -- 'blog', 'shop', 'bookings' specialization TEXT, config JSONB NOT NULL DEFAULT '{}', enabled BOOLEAN NOT NULL DEFAULT true, installed_via TEXT, -- 'manual' | 'vertical-pack:yoga-studio' created_at TIMESTAMPTZ DEFAULT now(), updated_at TIMESTAMPTZ DEFAULT now(), UNIQUE(site_id, addon_type_id));
-- Geactiveerde vertical packs per siteCREATE TABLE vertical_packs ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), site_id UUID NOT NULL REFERENCES sites(id) ON DELETE CASCADE, pack_type_id TEXT NOT NULL, -- 'yoga-studio', 'business-coach' config JSONB NOT NULL DEFAULT '{}', created_at TIMESTAMPTZ DEFAULT now(), UNIQUE(site_id, pack_type_id));12. Lifecycle Management
Section titled “12. Lifecycle Management”Activeren
Section titled “Activeren”- Record in
addonstabel - Specialisatie instellen (standaard of via vertical pack)
- Collections aanmaken
- Settings seeden vanuit manifest
- Blocks beschikbaar in picker
- Routes actief op public site
- Synergieën checken en ontgrendelen
Deactiveren
Section titled “Deactiveren”addons.enabled = false- Blocks verdwijnen uit picker — bestaande blocks op pages blijven intact (renderen als placeholder)
- Routes niet meer bereikbaar (404)
- Data blijft behouden — niets wordt verwijderd
Verwijderen
Section titled “Verwijderen”- Expliciete actie door gebruiker
- Waarschuwing: “Dit verwijdert X items permanent”
- Optie: exporteer als JSON voor verwijdering
- Cascade delete: addon → collections → items → taxonomies
Specialisatie Wisselen (Respec)
Section titled “Specialisatie Wisselen (Respec)”- Geen data verlies
- Andere templates en blocks worden actief/inactief
- Velden die niet bij de nieuwe spec horen worden verborgen (niet verwijderd)
13. Distributie
Section titled “13. Distributie”Fase 1: Bundled in Monorepo
Section titled “Fase 1: Bundled in Monorepo”packages/addons/├── _shared/ -- Gedeelde addon utilities│ ├── types.ts -- AddonManifest, interfaces│ └── utils.ts│├── blocks/ -- Kits (Laag 1)│ ├── pricing-kit/│ └── testimonial-kit/│├── functional/ -- Game Packs (Laag 2)│ ├── blog/│ │ ├── manifest.ts│ │ ├── specializations/│ │ ├── blocks/│ │ ├── editor/│ │ ├── public/│ │ └── api/│ ├── shop/│ ├── bookings/│ ├── portfolio/│ ├── forms/│ ├── popups/│ ├── reviews/│ └── events/│├── styles/ -- Stuff Packs (Laag 3)│ ├── healer-calm/│ ├── creator-bold/│ ├── merchant-trust/│ ├── scholar-authority/│ ├── host-atmosphere/│ └── builder-solid/│└── verticals/ -- Expansion Packs (Laag 4) ├── yoga-studio/ │ ├── manifest.ts │ ├── blueprint/ │ ├── blocks/ │ ├── assets/ -- Stockfoto's, iconen → geladen in R2 │ └── milestones.ts ├── business-coach/ ├── restaurant/ └── photographer/Fase 2: npm packages (toekomst)
Section titled “Fase 2: npm packages (toekomst)”Het manifest-systeem blijft identiek — alleen de distributie verandert:
pnpm add @beam/addon-blog @beam/vertical-yoga-studio14. Implementatie Roadmap
Section titled “14. Implementatie Roadmap”Fase 1: Foundation
Section titled “Fase 1: Foundation”- Core types:
AddonManifest,VerticalPack,StylePackinpackages/shared - Database migratie: addon tabellen + RLS + indexes
- Addon registry service (laden, activeren, deactiveren)
- API routes: addon CRUD
- Dashboard: addon overzicht + activatie UI
Fase 2: Blocks & Kits
Section titled “Fase 2: Blocks & Kits”- Dynamische block registry (core + addon blocks)
- Block picker met addon secties
- Pricing Kit als eerste kit
- Testimonial Kit
Fase 3: Functional Addons
Section titled “Fase 3: Functional Addons”- Collection CRUD (items, metadata, taxonomies)
- Dashboard: item listing + item editor
- Specialisatie-systeem
- Blog addon met 3 specialisaties
- Portfolio addon met 3 specialisaties
Fase 4: Templates, Routes & Synergieën
Section titled “Fase 4: Templates, Routes & Synergieën”- Route resolution in Astro public site middleware
- Template engine met dynamic blocks
- Custom archief page override systeem
- Synergie detectie en ontgrendeling
Fase 5: Style Packs & Theming
Section titled “Fase 5: Style Packs & Theming”- Theming engine (CSS variabelen cascade)
- Eerste style packs per gilde
- Seasonal override systeem
Fase 6: Vertical Packs & Onboarding
Section titled “Fase 6: Vertical Packs & Onboarding”- Blueprint systeem
- Asset pack loading (R2)
- Milestone tracking
- Yoga Studio als eerste vertical pack
- Business Coach als tweede
Fase 7: Advanced Addons
Section titled “Fase 7: Advanced Addons”- Shop, Bookings, Forms, Popups, Reviews
- Cross-addon synergieën voor alle combinaties
Fase 8: Codex & Collection
Section titled “Fase 8: Codex & Collection”- Block card systeem
- Beam Codex interface
- Booster pack unboxing ervaring
- Patroon trading
Fase 9: Set Releases & Scale
Section titled “Fase 9: Set Releases & Scale”- Seasonal set release pipeline
- Remaining vertical packs
- Voorbereiding npm distributie