機能カタログ · 17モジュール
機能カタログ
新イベントは create-event-app --features=… で機能を選んで生成する。 以後の変更は src/event.config.ts の boolean を倒すだけ — nav と route が自動で追従する。
cms
コンテンツ CMS@event/cms実装済みschema 駆動 admin。ResourceSchema を書くだけで一覧/編集/保存/CSV インポートが動く。locked フィールドは二層防御。
- event.config.ts で cms: true
- lib/cms.ts に ResourceSchema を宣言
- ADMIN_PASSWORD(+ 本番は GITHUB_TOKEN)
sessionCard
セッションカード@event/session-card実装済みrequires: cms1A–10A photo-first カード + 手動最終調整エディタ(DnD / 改行上書き / scale)。engine は元実装と挙動差分ゼロ。
- sessionCard: true
- FOURS_EVENT_SLUG + FOURS_PUBLIC_READ=1
- テーマは themes prop に CardTheme を登録
surveys
サーベイ & リーダーボード@event/feedback実装済み匿名アンケート(uaHash upsert・二段送信)+ IMDb 加重ランキング(校正済み・数値等価検証済み)。
- surveys: true
- BLOB_READ_WRITE_TOKEN
- createSubmitHandler に resolveUnit を注入
live
ライブ投票@event/feedback実装済み主催主導のライブ poll。状態は KV に一元化(本番 Upstash / dev in-memory shim)、リアルタイムはポーリング × 3 系統 rev(viewRev/promptRev/results.rev)。host key は秘密から導出(保存しない・定数時間比較)。
db
リレーショナル DB@event/crm-schema実装済みMCP-first 二層 DB。固定コア(手書き SQL migration)+ 拡張レイヤ(meta jsonb + Field Manifest)。org/member/user/entity_lp/audit/compliance。
- db: true
- DATABASE_URL(Neon)
- migrations/0001_init.sql を pg で適用
mcp
MCP 連携@event/mcp実装済みこの app を MCP server として公開。設定画面から URL・公開ツールを設定し stdio + HTTP 両方で接続可能。ツール: content(CMS 読み書き)/ fourS(照会)/ db(schema_addField=カラム追加・migration_propose=人間承認)。全 DB 書き込みに manifest ガード + 楽観ロック + audit。
- mcp: true
- MCP_BEARER_TOKEN(HTTP を使うなら)
- 設定画面 /admin/settings/mcp で URL・ツールを設定 → 接続 .mcp.json をコピー
visuals
ビジュアル生成@event/visuals実装済みSNS/印刷/会場ビジュアルの generator framework — EventBrand トークン(--vis-* 変数)+ TemplateRegistry + FormatRegistry(SNS + A1/A2/A3・√2 印刷拡大)+ chrome プリミティブ。capture は @event/asset-kit に構造互換で接続。
- visuals: true
- EventBrand を resolveBrand で定義
- defineTemplate でテンプレを登録 → asset-kit の exportPng/Pdf へ
booking
予約 & 見積@event/booking実装済みスロット制予約(capacity/waitlist・冪等 dedup・partial UNIQUE・kill-switch・IP rate-limit)+ 見積(basis-point tax・内税/外税・Blob|Neon driver)。resourceKey で booth/seat/table/session を汎用化。
- booking: true
- DATABASE_URL(予約テーブル)
- createReservationStore + createBookingActions を配線
networking
マッチング & ディレクトリ@event/networking実装済みentity-linking(Jaro-Winkler + Dice、多段照合 + decide ガード)+ PII 最小 registry factory + privacy trio(consent gating / whitelist 射影 / k-anonymity K=5)+ referral tier。
- networking: true
- createRegistrySchema({prefix}) でテーブル生成
- matchName + evaluateListingGrants + applyKAnonymity を配線
spatial
マップ & タイムテーブル@event/spatial実装済みSvgHotspotLayer(FloorMap/OverallMap/StartupZoneMap/FloorPlan の4コピー統合。inline SVG + overlay + hit-test + deep-link)+ lane-packing タイムテーブル + booth grid。
- spatial: true
- SpatialConfig に venue SVG + hotspot 座標
- SvgHotspotLayer / packTimeslots を配線
mailer
メール@event/mailer実装済みResend transactional + branded shell(brand トークン駆動)+ template slot registry(invitation/otp/notify)+ Slack Block Kit。missing-key 挙動は noop/throw で選択。
- mailer: true
- RESEND_API_KEY(省略時は noop)
- createMailer({ from, brand }) で template を register
leads
リード獲得@event/leads実装済み公開フォーム → honeypot → rate-limit → 検証(zod) → persist-first → fan-out(Slack/メール)。通知が失敗してもリードを失わない。dev は content/leads.json、通知キー未設定は no-op。
- leads: true
- recipe add-leads(/contact + /api/lead + /admin/leads を転写)
- SLACK_WEBHOOK_URL / RESEND_API_KEY + LEAD_NOTIFY_TO(任意)
i18n
多言語 i18n@event/i18n実装済みpickLang({ja,en} record と {value,valueEn} 対の2形対応)+ LangProvider/useLang/useT + cookie 永続。4S languages.en fallback 規則に整合。基盤層のため feature flag は不要。
design
デザイントークン層 + Worldview@event/design実装済みdefineDesign でトークンを型付き宣言 → tokensToCssVars が globals.css の実 CSS 変数へ写像。さらに defineWorldview で世界観(パレット/書体/ムード)を1回宣言すれば、サイト/ビジュアル/セッションカード/メールの4面へ純関数で派生する(トークンが対象。ページ構成やモーションは対象外)。
- recipe apply-worldview(flag 不要・推奨)
- src/worldview.ts に defineWorldview({...}) → 4面の lib が派生を読む
- 単面だけなら recipe add-design の defineDesign 直書きも可
cutout
スピーカー切り抜き@event/visuals実装済みrequires: visualspluggable CutoutBackend(透過 PNG Blob 契約)+ zero-dep canvas フォールバック(しきい値/羽化)。MODNet / @imgly は差し込み口のみ = 依存導入後に第2引数を差し替えるだけで UI 無改修。
- visuals: true(add-visuals 済み前提)
- recipe add-cutout(/admin/cutout を転写)
- 本番品質は onnxruntime-web 等の backend を注入
motion
モーショングラフィックス@event/motion実装済みReveal(入場 stagger)/ CountUp / ネイティブ CSS scroll-driven([data-scroll-fade])/ spring easing トークン。連動は CSS・発火は IntersectionObserver の 2026 構成。reduced-motion で全停止。基盤層のため feature flag は不要。
- recipe add-motion(flag 不要)
- layout に <MotionStyles /> を1回
- <Reveal>/<CountUp>/[data-scroll-fade] を置くだけ