Stripe Connect の destination charge を、Hono + SvelteKit + Better Auth + D1(Drizzle) で実装したデモです。
apps/
web/ # SvelteKit Worker
api/ # Hono Worker
packages/
db/ # Drizzle schema / query helpers / migrations
POST /api/connect/accountPOST /api/connect/account-linkPOST /api/checkout/sessionGET /api/meGET|POST /api/auth/*POST /internal/connect/accountPOST /internal/connect/account-linkPOST /internal/checkout/sessionPOST /webhooks/stripeGET /healthzBETTER_AUTH_SECRETBETTER_AUTH_URLPUBLIC_BETTER_AUTH_URLINTERNAL_API_TOKENPRIVATE_API_BASE_URL (Vite開発時フォールバック)PUBLIC_STRIPE_PUBLISHABLE_KEYSTRIPE_SECRET_KEYSTRIPE_WEBHOOK_SECRETINTERNAL_API_TOKENpnpm install
pnpm d1:migrate:local
pnpm seed
cp apps/api/.dev.vars.example apps/api/.dev.vars
cp apps/web/.dev.vars.example apps/web/.dev.vars
cp apps/web/.env.example apps/web/.env
pnpm dev
http://127.0.0.1:8787http://127.0.0.1:8788Viteモードが必要な場合:
pnpm dev:vite
stripe listen --forward-to http://127.0.0.1:8787/webhooks/stripe
pnpm check
pnpm --filter @demo/api test
pnpm --filter @demo/web test:e2e
test:e2e は Playwright 実行環境に依存します。
database_id を apps/api/wrangler.jsonc と apps/web/wrangler.jsonc に設定cd apps/api
wrangler secret put STRIPE_SECRET_KEY
wrangler secret put STRIPE_WEBHOOK_SECRET
wrangler secret put INTERNAL_API_TOKEN
cd ../web
wrangler secret put BETTER_AUTH_SECRET
wrangler secret put INTERNAL_API_TOKEN
wrangler secret put BETTER_AUTH_URL
pnpm d1:migrate:remote
pnpm deploy
x-internal-token で保護MIT