Openstatus
www.openstatus.dev
1import { allPlans } from "@openstatus/db/src/schema/plan/config";
2import type { Limits } from "@openstatus/db/src/schema/plan/schema";
3import type React from "react";
4
5export const plans = allPlans;
6
7export const config: Record<
8 string,
9 {
10 label: string;
11 features: {
12 value: keyof Limits;
13 label: string;
14 description?: React.ReactNode; // tooltip informations
15 badge?: string;
16 monthly?: boolean;
17 }[];
18 }
19> = {
20 monitors: {
21 label: "Monitors",
22 features: [
23 {
24 value: "periodicity",
25 label: "Frequency",
26 },
27 {
28 value: "monitors",
29 label: "Number of monitors",
30 },
31 {
32 value: "multi-region",
33 label: "Multi-region monitoring",
34 },
35 { value: "regions", label: "Total regions" },
36 { value: "max-regions", label: "Regions per monitor" },
37 { value: "data-retention", label: "Data retention" },
38 { value: "response-logs", label: "Response Logs" },
39 { value: "otel", label: "OTel Exporter" },
40 {
41 value: "synthetic-checks",
42 label: "Synthetic API Checks",
43 monthly: true,
44 },
45 ],
46 },
47 "status-pages": {
48 label: "Status Pages",
49 features: [
50 {
51 value: "status-pages",
52 label: "Number of status pages",
53 },
54 {
55 value: "maintenance",
56 label: "Maintenance status",
57 },
58 {
59 value: "monitor-values-visibility",
60 label: "Toggle numbers visibility",
61 },
62 {
63 value: "status-subscribers",
64 label: "Subscribers",
65 },
66 {
67 value: "custom-domain",
68 label: "Custom domain",
69 },
70 {
71 value: "white-label",
72 label: "White Label",
73 },
74 ],
75 },
76 "status-page-audience": {
77 label: "Status Page Audience",
78 features: [
79 {
80 value: "password-protection",
81 label: "Password Protection (Basic)",
82 },
83 {
84 value: "email-domain-protection",
85 label: "Magic Link (Auth)",
86 },
87 ],
88 },
89 notifications: {
90 label: "Notifications",
91 features: [
92 {
93 value: "notifications",
94 label: "Slack, Discord, Email, Webhook, ntfy.sh",
95 },
96 {
97 value: "sms",
98 label: "SMS",
99 },
100 {
101 value: "pagerduty",
102 label: "PagerDuty",
103 },
104 {
105 value: "opsgenie",
106 label: "OpsGenie",
107 },
108 {
109 value: "notification-channels",
110 label: "Number of notification channels",
111 },
112 ],
113 },
114 collaboration: {
115 label: "Collaboration",
116 features: [
117 {
118 value: "members",
119 label: "Team members",
120 },
121 {
122 value: "audit-log",
123 label: "Audit log",
124 badge: "Planned",
125 },
126 ],
127 },
128};