aboutsummaryrefslogtreecommitdiff
path: root/web/ui/src/lib/plans.ts
blob: bf6c47439f649e073aaf240e1bd2608780dad64a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
export type PlanId = 'free' | 'dev' | 'pro' | 'enterprise';

export interface Plan {
  id: PlanId;
  name: string;
  price: number | null;         // null = custom / contact us
  priceLabel: string;
  period: string;
  requestsPerMonth: number;     // Infinity for enterprise
  maxKeys: number;              // Infinity for enterprise
  features: string[];
  cta: string;
}

export const PLANS: Record<PlanId, Plan> = {
  free: {
    id: 'free',
    name: 'Free',
    price: 0,
    priceLabel: '$0',
    period: 'forever',
    requestsPerMonth: 1_000,
    maxKeys: 1,
    features: [
      '1,000 requests per month',
      '1 API key',
      'JSON + JSONL access',
      'Community support'
    ],
    cta: 'Switch to Free'
  },
  dev: {
    id: 'dev',
    name: 'Developer',
    price: 100,
    priceLabel: '$100',
    period: '/ month',
    requestsPerMonth: 50_000,
    maxKeys: 5,
    features: [
      '50,000 requests per month',
      '5 API keys',
      'All response shapes',
      'Email support'
    ],
    cta: 'Switch to Developer'
  },
  pro: {
    id: 'pro',
    name: 'Professional',
    price: 1000,
    priceLabel: '$1,000',
    period: '/ month',
    requestsPerMonth: 500_000,
    maxKeys: 20,
    features: [
      '500,000 requests per month',
      '20 API keys',
      'Priority support',
      'SLA on uptime'
    ],
    cta: 'Switch to Pro'
  },
  enterprise: {
    id: 'enterprise',
    name: 'Enterprise',
    price: null,
    priceLabel: 'Custom',
    period: '',
    requestsPerMonth: Number.POSITIVE_INFINITY,
    maxKeys: Number.POSITIVE_INFINITY,
    features: [
      'Unlimited requests',
      'Unlimited keys',
      'Dedicated support',
      'Custom datasets and SLAs'
    ],
    cta: 'Contact us'
  }
};

export const PLAN_ORDER: PlanId[] = ['free', 'dev', 'pro', 'enterprise'];