コンテンツにスキップ

検索はプロダクションビルドでのみ利用可能です。 ローカルでテストするには、サイトをビルドしてプレビューしてください。

全体構造

Speakeasy は、店舗と顧客をつなぐコミュニケーションプラットフォームです。Turborepo モノレポとして構成され、全サービスが Cloudflare Workers 上で稼働します。

カテゴリ技術
MonorepoTurborepo + Bun
FrontendSvelte 5 (Runes) + SvelteKit
BackendCloudflare Workers + Hono (Native RPC)
DatabasePostgreSQL (Drizzle ORM v1.0 beta) + Hyperdrive
Authbetter-auth (Passkey, OAuth, 組織管理)
StylingTailwind CSS v4 + daisyUI 5
StorageDurable Objects + KV + R2 + Queues

詳細は技術スタックを参照してください。

speakeasy/
├── apps/ # フロントエンドアプリケーション
│ ├── counter/ # 店舗管理コックピット
│ └── penthouse/ # 管理者コンソール
├── gateways/ # API ゲートウェイ
│ ├── door/ # 認証ゲートウェイ
│ └── tap/ # 外部 API ゲートウェイ
├── services/ # マイクロサービス (Hono)
│ ├── proof/ # 認証サービス
│ ├── fizz/ # チャット・一括配信エンジン
│ ├── vintage/ # 連絡先・グループ管理
│ ├── bell/ # 通知配信サービス
│ └── base/ # 組織・アカウント基盤
├── packages/ # 共有ライブラリ
│ ├── cellar/ # 業務 DB (Drizzle ORM)
│ ├── vault/ # 認証 DB (Drizzle ORM)
│ ├── jigger/ # 共有スキーマ・型定義 (Zod)
│ ├── glass/ # UI コンポーネント (Svelte 5 + Melt UI)
│ ├── garnish/ # デザイントークン (Tailwind + daisyUI)
│ └── purelovers-client/ # 外部連携クライアント
└── docs/ # ドキュメント
├── developer/ # 開発者ドキュメント (このサイト)
├── menu/ # Storybook コンポーネントドキュメント
└── card/ # Public API リファレンス (Scalar)

全サービス間の通信は Native RPC (Service Bindings) を使用しています。

  1. クライアントが Door ゲートウェイにリクエスト
  2. Door が Service Binding 経由で Proof を呼び出し
  3. ProofVault DB でユーザーを検証、セッションを KV に保存
  4. クッキーがクライアントに返却(クロスサブドメイン対応)
  1. SvelteKit Remote Function が Fizz を Native RPC で呼び出し
  2. メッセージが Cellar DB に保存
  3. Durable Objects(UserInbox)経由で WebSocket でリアルタイム配信
  4. 通知が notification-queue 経由で Bell に送信
  1. Counter から Fizz に配信リクエスト(Native RPC)
  2. 配信条件に基づきターゲット顧客を算出
  3. Cron トリガーが SCHEDULED → QUEUED に移行(配信8時間前)
  4. broadcast-queue 経由で Fizz Queue Consumer が処理
  5. チャットルームにメッセージを一括挿入(5,000件バッチ)

詳細はデータフローを参照してください。