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