Installer la Eventual RSVP sur votre site EmDash.

Trois modes d’installation pris en charge selon votre hébergement, suivis du pack de champs partagé et des pages Astro nécessaires pour les visiteurs et l’accueil à la porte.

  • Disponible
  • EmDash ≥ 1.2.0 < 2.0.0 (1.4.0 recommandé)
  • Cloudflare Workers Paid · Node 24+

Compatibilité EmDash

EmDash >= 1.2.0 < 2.0.0 (1.4.0 conseillé). Sur Cloudflare en mode sandboxé : offre Workers Paid requise pour worker_loaders (LOADER) + PluginBridge réexporté + EMDASH_SITE_URL défini.

Fournisseur e-mail

Installez un plugin d’envoi d’e-mails dans EmDash pour expédier confirmations, offres de liste d’attente, rappels, instructions de virement et billets QR.

Chiffrement EMDASH_ENCRYPTION_KEY

Nécessaire uniquement pour les clés secrètes Stripe en paiement carte dans Tickets. Core, Registrations, billets gratuits, virements et clé de licence fonctionnent sans.

Trois façons d’installer les extensions

Eventual RSVP – Core 0.18.0 est sur le registre EmDash (son paquet npm suivra). Eventual RSVP – Registrations 0.1.0 est sur le registre et sur npm. Eventual RSVP – Tickets arrive bientôt.

Depuis l’administration EmDash → Plugins → Registry, recherchez « Eventual RSVP – Core » ou « Eventual RSVP – Registrations » (éditeur vermeulen.solutions), vérifiez les permissions affichées et installez. Les composants Astro (.astro) viennent du paquet npm correspondant.

Eventual RSVP – Tickets rejoindra le registre et npm dès sa publication.

Méthode recommandée : exécute chaque extension dans un isolat sandboxé avec plafond strict à 10 appels pont / 50 ms CPU. Déclarez vos paquets dans astro.config.mjs :

// astro.config.mjs
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
import eventualAttendance from "@vermeulen.solutions/eventual-attendance";
// Eventual RSVP – Core: install it from the EmDash Registry (its npm package follows).
// Eventual RSVP – Tickets: coming soon.

export default defineConfig({
  integrations: [
    emdash({
      // database, storage, email provider…
      sandboxed: [eventualAttendance],
      sandboxRunner: "@emdash-cms/cloudflare/sandbox", // on Node: "@emdash-cms/sandbox-workerd/sandbox"
    }),
  ],
});

Sur Cloudflare Workers Paid, ajoutez la liaison LOADER dans wrangler.jsonc et réexportez PluginBridge dans votre fichier d’entrée Worker :

// wrangler.jsonc
{
  "worker_loaders": [{ "binding": "LOADER" }]
}

// src/worker.ts (your main Worker entry)
export { PluginBridge } from "@emdash-cms/cloudflare/worker";

Pour les paiements par carte Stripe : générez EMDASH_ENCRYPTION_KEY via npx emdash secrets generate puis enregistrez-la avec wrangler secret put EMDASH_ENCRYPTION_KEY (et configurez EMDASH_SITE_URL).

Uniquement sur hébergement Node que vous contrôlez entièrement : exécute les extensions directement dans le processus hôte sans isolation ni plafond Worker Loader.

// astro.config.mjs (Node hosts you trust only)
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
import eventualAttendance from "@vermeulen.solutions/eventual-attendance";
// Eventual RSVP – Core: install it from the EmDash Registry (its npm package follows).
// Eventual RSVP – Tickets: coming soon.

export default defineConfig({
  integrations: [
    emdash({
      // database, storage, email provider…
      plugins: [eventualAttendance],
    }),
  ],
});

Pack de champs et pages Astro requises sur votre site

Core gère les collections de contenu ; Registrations et Tickets lisent trois champs partagés facultatifs (inventory_mode, capacity, allow_waitlist) générés au moment du build sans toucher au schéma automatiquement.

  1. Exporter les collections et fusionner les champs de capacité

    Exportez d’abord le schéma natif d’Eventual RSVP – Core (depuis son dépôt public, rien à installer), puis fusionnez les champs partagés de @vermeulen.solutions/eventual-capacity avant de l’appliquer via votre workflow EmDash (sans écraser les champs existants de même type) :

    git clone --depth 1 https://github.com/Vermeulen-Solutions/eventual-emdash-sandbox eventual-core
    node eventual-core/scripts/export-native-schema.mjs --locale fr --output eventual-schema.json
    npx -p @vermeulen.solutions/eventual-capacity eventual-capacity-fields --merge eventual-schema.json --output eventual-schema-with-capacity.json

    Note importante : l’identifiant d’une date récurrente dans le flux Core a la forme <contentId>#<occurrence>. Passez eventId={id.split("#")[0]} et occurrenceStart={event.start} aux composants Registrations et Tickets.

  2. Créer la page visiteur et /rsvp/manage (Eventual RSVP – Registrations)

    Ajoutez <RsvpForm /> sur la fiche événement et créez la page /rsvp/manage (liens d’annulation et offres de liste d’attente par #fragment) :

    // src/pages/rsvp/manage.astro
    import RsvpManage from "@vermeulen.solutions/eventual-attendance/astro/RsvpManage.astro";
    <RsvpManage locale="en" />
    
    // On an event detail page:
    import RsvpForm from "@vermeulen.solutions/eventual-attendance/astro/RsvpForm.astro";
    <RsvpForm eventId={contentId} occurrenceStart={event.start} locale="en" />
  3. Créer /tickets/checkout, /tickets/order et /tickets/check (Eventual RSVP – Tickets)

    Si vous utilisez Eventual RSVP – Tickets, créez les trois pages par défaut (/tickets/checkout, /tickets/order, et /tickets/check réservé à l’équipe connectée) puis reportez l’URL webhook indiquée dans Admin → Tickets sur votre tableau de bord Stripe :

    // Event page:
    import TicketCheckout from "@vermeulen.solutions/eventual-tickets/astro/TicketCheckout.astro";
    <TicketCheckout eventId={contentId} occurrenceStart={event.start} locale="en" />
    
    // /tickets/checkout -> <TicketCheckoutReturn backHref="/events" locale="en" />
    // /tickets/order    -> <TicketOrder checkinPath="/tickets/check" locale="en" />
    // /tickets/check    -> <TicketCheckin locale="en" /> (keep behind authenticated staff access)