Openstatus
www.openstatus.dev
1import {
2 getComparePages,
3 getProductPages,
4 getToolsPages,
5} from "@/content/utils";
6import type { Region } from "@openstatus/regions";
7
8const products = getProductPages();
9
10const productsSection = {
11 label: "Products",
12 items: products.map((product) => ({
13 label: product.metadata.title,
14 href: `/${product.slug}`,
15 })),
16};
17
18const resourcesFooterSection = {
19 label: "Resources",
20 items: [
21 {
22 label: "Blog",
23 href: "/blog",
24 },
25 {
26 label: "Pricing",
27 href: "/pricing",
28 },
29 {
30 label: "Docs",
31 href: "https://docs.openstatus.dev",
32 },
33 {
34 label: "External Status",
35 href: "/status",
36 },
37 {
38 label: "OSS Friends",
39 href: "/oss-friends",
40 },
41 {
42 label: "Marketing V1",
43 href: "https://v1.openstatus.dev",
44 },
45 ],
46};
47
48const resourcesHeaderSection = {
49 label: "Resources",
50 items: [
51 {
52 label: "Docs",
53 href: "https://docs.openstatus.dev",
54 },
55 {
56 label: "Blog",
57 href: "/blog",
58 },
59 {
60 label: "Changelog",
61 href: "/changelog",
62 },
63 {
64 label: "Global Speed Checker",
65 href: "/play/checker",
66 },
67 {
68 label: "Compare",
69 href: "/compare",
70 },
71 ],
72};
73
74const companySection = {
75 label: "Company",
76 items: [
77 {
78 label: "About",
79 href: "/about",
80 },
81 {
82 label: "Changelog",
83 href: "/changelog",
84 },
85 {
86 label: "I'm an LLM",
87 href: "https://www.openstatus.dev/llms.txt",
88 },
89 {
90 label: "Terms",
91 href: "/terms",
92 },
93 {
94 label: "Privacy",
95 href: "/privacy",
96 },
97 {
98 label: "Subprocessors",
99 href: "/subprocessors",
100 },
101 ],
102};
103
104const compareSection = {
105 label: "Compare",
106 items: getComparePages().map((page) => ({
107 label: page.metadata.title,
108 href: `/compare/${page.slug}`,
109 })),
110};
111
112const toolsSection = {
113 label: "Tools",
114 items: [
115 ...getToolsPages()
116 .filter((page) => page.slug !== "checker-slug")
117 .map((page) => ({
118 label: page.metadata.title,
119 href: `/play/${page.slug}`,
120 })),
121 {
122 label: "Theme Explorer",
123 href: "https://themes.openstatus.dev",
124 },
125 {
126 label: "All Status Codes",
127 href: "https://openstat.us",
128 },
129 {
130 label: "Vercel Edge Ping",
131 href: "https://light.openstatus.dev",
132 },
133 ],
134};
135
136const communitySection = {
137 label: "Community",
138 items: [
139 {
140 label: "Discord",
141 href: "https://openstatus.dev/discord",
142 },
143 {
144 label: "GitHub",
145 href: "https://openstatus.dev/github",
146 },
147 {
148 label: "X",
149 href: "https://openstatus.dev/twitter",
150 },
151 {
152 label: "BlueSky",
153 href: "https://openstatus.dev/bsky",
154 },
155 {
156 label: "YouTube",
157 href: "https://openstatus.dev/youtube",
158 },
159 {
160 label: "LinkedIn",
161 href: "https://openstatus.dev/linkedin",
162 },
163 ],
164};
165
166export const playSection = {
167 label: "Play",
168 items: [
169 ...getToolsPages()
170 .filter((page) => page.slug !== "checker-slug")
171 .map((page) => ({
172 label: page.metadata.title,
173 href: `/play/${page.slug}`,
174 })),
175 {
176 label: "Theme Explorer",
177 href: "https://themes.openstatus.dev",
178 },
179 {
180 label: "All Status Codes",
181 href: "https://openstat.us",
182 },
183 {
184 label: "Vercel Edge Ping",
185 href: "https://light.openstatus.dev",
186 },
187 {
188 label: "React Data Table",
189 href: "https://logs.run",
190 },
191 {
192 label: "Shadcn Time Picker",
193 href: "https://time.openstatus.dev",
194 },
195 {
196 label: "Astro Status Page",
197 href: "https://astro.openstat.us",
198 },
199 ],
200};
201
202export const headerLinks = [productsSection, resourcesHeaderSection];
203
204export const footerLinks = [
205 productsSection,
206 resourcesFooterSection,
207 companySection,
208 compareSection,
209 toolsSection,
210 communitySection,
211];
212
213// --------------------------------
214
215export type RegionMetricsChartTable = {
216 region: Region;
217 count: number;
218 ok: number;
219 p50Latency: number | null;
220 p75Latency: number | null;
221 p90Latency: number | null;
222 p95Latency: number | null;
223 p99Latency: number | null;
224};