Add-ons bauen

Wie Erweiterungen gebucht, signiert und in Dashboard und Medusa geprüft werden.

Erweiterungen (Add-ons) schalten Funktionen pro Shop frei – wie Apps bei Shopify, aber als Code im Repository.

#Ablauf

config/addons.ts ──▶ Agentur bucht / Kunde bucht (Stripe) ──▶ shop_addons
                                                                   │
           Plattform signiert { plan, features[] } (Ed25519) ◀─────┘
                                   │  push an den Shop (Sekunden)
                                   ▼
        shop-admin: hasFeature("…")  ──▶  speichert Token in Medusa-Store-Metadaten
        medusa:     featureAllowed(metadata, "…")  prüft dieselbe Signatur

Ein Tarif kann Erweiterungen enthalten (includedIn), andere setzen eine voraus (requires).

#Ein neues Add-on

  1. Katalog – in apps/platform/config/addons.ts eintragen:

    apps/platform/config/addons.ts
    ts
    giftcard_designs: {
      label: "Geschenkkarten Pro",
      description: "Mehrere Gutschein-Designs zur Auswahl, eigene Textfelder mit Live-Vorschau …",
      includedIn: ["business"],
      requires: [],
      available: true,
    },
  2. Dashboard – Funktion nur zeigen, wenn gebucht:

    ts
    import { hasFeature } from "@/lib/entitlements"
    if (await hasFeature("giftcard_designs")) { /* … */ }
  3. Medusa – serverseitig durchsetzen (der Shop kann die Daten nicht fälschen):

    ts
    import { hasFeature } from "../lib/features"
    const pro = await hasFeature(req.scope, "giftcard_designs")
  4. Preis – unter Agentur → Abrechnung, damit Kund:innen im Portal buchen können.

Hinweis

Ohne Plattform-Schlüssel (lokale Entwicklung, nicht verbundener Shop) ist alles freigeschaltet. Ein verbundener Shop hat nur, was ein gültiger Token auflistet.

#Bestehende Add-ons

IDNameEnthalten in
loyaltyTreuepunkteBusiness
b2bB2B / Großhandel–
b2b_storefrontSeparater Händlershop (setzt b2b voraus)–
giftcard_designsGeschenkkarten ProBusiness

Zuletzt aktualisiert am 21. Oktober 2026