mirror of
https://github.com/stablyai/orca.git
synced 2026-11-15 18:37:24 +00:00
* feat(billing): Team-only pricing, opt-in overage with spend cap, live Stripe test-mode e2e - Catalog: Team $50/seat/mo or $480/seat/yr, 60 Standard h/seat/month pooled (monthly windows on annual plans), Large 2x, 3 running/seat, 15-min idle sleep; Enterprise is contact-only. All numbers/labels in BILLING_PLANS defaults. - Overage is opt-in (adds the metered item), $0.75/h, monthly spend cap (default $25, admin-raisable) enforced in the meter outbox; 80%/100% usage warnings. - Checkout: plan/interval/seats with adjustable quantity; portal configuration var. - Workers reject fetch redirect 'error': use 'manual'. Log route errors. - scripts/stripe-test-setup.ts creates the test catalog + portal configuration; scripts/e2e-test-mode.ts drives Checkout (headless, test card), overage, meter, cap, annual, test-clock renewal, payment failure and cancel. - Desktop: Team/Enterprise cards with interval + seats, usage warnings, overage toggle + cap; split into copy/offers/usage modules. * feat(billing): dev deployment config, dev operator keys, return page - wrangler.dev.jsonc for orca-billing-dev (workers.dev, dev D1, test-mode prices). - BILLING_DEV_JWKS (issuer orca-billing-dev-test) accepted only when BILLING_ENV is not prod, for e2e runs until auth mints billing tokens. - GET /return: static 'return to Orca' page for Checkout/Portal redirects. - Design doc: final pricing, dev URL and resources for the control plane.
31 lines
1.2 KiB
JSON
31 lines
1.2 KiB
JSON
{
|
|
"$schema": "node_modules/wrangler/config-schema.json",
|
|
// Local `wrangler dev` only. No routes and workers.dev is off, so a deploy from this file
|
|
// publishes nothing reachable. Deployed environments live in the private deploy config.
|
|
// Secrets (stdin only, never here): STRIPE_SECRET_KEY (rk_test_...), STRIPE_WEBHOOK_SECRET,
|
|
// CONTROL_PLANE_TOKEN. For local dev put them in an untracked .dev.vars.
|
|
"name": "orca-billing-local",
|
|
"main": "src/index.ts",
|
|
"compatibility_date": "2026-11-01",
|
|
"workers_dev": false,
|
|
"d1_databases": [
|
|
{
|
|
"binding": "BILLING_DB",
|
|
"database_name": "orca-billing-local",
|
|
"database_id": "00000000-0000-0000-0000-000000000000",
|
|
"migrations_dir": "migrations"
|
|
}
|
|
],
|
|
// Retries Stripe meter reports that failed inline.
|
|
"triggers": { "crons": ["*/10 * * * *"] },
|
|
"vars": {
|
|
"STRIPE_API_VERSION": "2025-09-30.clover",
|
|
"STRIPE_METER_EVENT_NAME": "orca_sandbox_seconds",
|
|
"STRIPE_PRICE_TEAM_MONTHLY": "price_local_team_month",
|
|
"STRIPE_PRICE_TEAM_ANNUAL": "price_local_team_year",
|
|
"STRIPE_PRICE_OVERAGE": "price_local_overage",
|
|
"BILLING_RETURN_URL": "http://127.0.0.1:8790/return",
|
|
"BILLING_JWT_AUDIENCE": "orca-billing"
|
|
}
|
|
}
|