Files
claudemesh/packages/billing/src/config/plans.ts
Alejandro Gutiérrez d3163a5bff feat(db): mesh data model — meshes, members, invites, audit log
- pgSchema "mesh" with 4 tables isolating the peer mesh domain
- Enums: visibility, transport, tier, role
- audit_log is metadata-only (E2E encryption enforced at broker/client)
- Cascade on mesh delete, soft-delete via archivedAt/revokedAt

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 21:19:32 +01:00

108 lines
2.4 KiB
TypeScript

import {
BillingModel,
PricingPlanType,
RecurringInterval,
BillingDiscountType,
} from "../types";
import type { Discount } from "../types";
export const plans = [
{
id: PricingPlanType.FREE,
name: "plan.starter.name",
description: "plan.starter.description",
badge: null,
prices: [
{
id: "starter-lifetime",
amount: 0,
type: BillingModel.ONE_TIME,
},
{
id: "starter-monthly",
amount: 0,
interval: RecurringInterval.MONTH,
type: BillingModel.RECURRING,
},
{
id: "starter-yearly",
amount: 0,
interval: RecurringInterval.YEAR,
type: BillingModel.RECURRING,
},
],
},
{
id: PricingPlanType.PREMIUM,
name: "plan.premium.name",
description: "plan.premium.description",
badge: "plan.premium.badge",
prices: [
{
id: "price_1PpUagFQH4McJDTlHCzOmyT6",
amount: 29900,
type: BillingModel.ONE_TIME,
},
{
id: "price_1PpZAAFQH4McJDTlig6FBPyy",
amount: 1900,
interval: RecurringInterval.MONTH,
trialDays: 7,
type: BillingModel.RECURRING,
},
{
id: "price_1PpZALFQH4McJDTl8SWorWTO",
amount: 8900,
interval: RecurringInterval.YEAR,
trialDays: 7,
type: BillingModel.RECURRING,
},
],
},
{
id: PricingPlanType.ENTERPRISE,
name: "plan.enterprise.name",
description: "plan.enterprise.description",
badge: null,
prices: [
{
id: "enterprise-lifetime",
label: "common:contactUs",
href: "/contact",
type: BillingModel.ONE_TIME,
custom: true,
},
{
id: "enterprise-monthly",
label: "common:contactUs",
href: "/contact",
type: BillingModel.RECURRING,
interval: RecurringInterval.MONTH,
custom: true,
},
{
id: "enterprise-yearly",
label: "common:contactUs",
href: "/contact",
type: BillingModel.RECURRING,
interval: RecurringInterval.YEAR,
custom: true,
},
],
},
];
export const discounts: Discount[] = [
{
code: "50OFF",
type: BillingDiscountType.PERCENT,
off: 50,
appliesTo: [
"price_1PpUagFQH4McJDTlHCzOmyT6",
"price_1PpZAAFQH4McJDTlig6FBPyy",
"price_1PpZALFQH4McJDTl8SWorWTO",
],
},
];