aboutsummaryrefslogtreecommitdiff
path: root/web/ui/src/lib/plans.ts
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--web/ui/src/lib/plans.ts82
1 files changed, 82 insertions, 0 deletions
diff --git a/web/ui/src/lib/plans.ts b/web/ui/src/lib/plans.ts
new file mode 100644
index 0000000..bf6c474
--- /dev/null
+++ b/web/ui/src/lib/plans.ts
@@ -0,0 +1,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'];