Merge pull request #2192 from OneUptime/demo-improve

Demo improve
This commit is contained in:
Simon Larsen
2025-12-19 21:27:34 +00:00
committed by GitHub
31 changed files with 1644 additions and 322 deletions

View File

@@ -43,7 +43,7 @@
<li class="m-0 px-5 py-4">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dd><code class="inline-flex items-center rounded-md bg-amber-50 px-2 py-1 text-xs font-medium text-amber-700 ring-1 ring-inset ring-amber-600/20">4xx</code></dd>
<dd class="w-full flex-none text-sm text-slate-600 mt-1">A 4xx status code indicates a client error this means it's a <em>you</em> problem.</dd>
<dd class="w-full flex-none text-sm text-slate-600 mt-1">A 4xx status code indicates a client error - this means it's a <em>you</em> problem.</dd>
</dl>
</li>
<li class="m-0 px-5 py-4">
@@ -55,7 +55,7 @@
<li class="m-0 px-5 py-4">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dd><code class="inline-flex items-center rounded-md bg-red-50 px-2 py-1 text-xs font-medium text-red-700 ring-1 ring-inset ring-red-600/20">5xx</code></dd>
<dd class="w-full flex-none text-sm text-slate-600 mt-1">A 5xx status code indicates a server error you won't be seeing a lot of these.</dd>
<dd class="w-full flex-none text-sm text-slate-600 mt-1">A 5xx status code indicates a server error - you won't be seeing a lot of these.</dd>
</dl>
</li>
</ul>

View File

@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="theme-color" content="#000000">
<meta name="slack-app-id" content="ACVBMTPJQ">
<meta name="description" content="OneUptime the complete open-source observability platform.">
<meta name="description" content="OneUptime - the complete open-source observability platform.">
<% if(typeof enableGoogleTagManager !== 'undefined' ? enableGoogleTagManager : false){ %>
<!-- Google Tag Manager -->

View File

@@ -176,7 +176,7 @@ const buildWhatsAppSetupMarkdown: BuildWhatsAppSetupMarkdown = (): string => {
const webhookSection: string = [
"### Configure Meta Webhook Subscription",
"1. In the OneUptime Admin Dashboard, open **Settings → WhatsApp → Meta WhatsApp Settings** and enter a strong value in **Webhook Verify Token**. Save the form so the encrypted token is stored in Global Config.",
"2. Keep that verify token handyMeta does not generate one for you. You'll paste the exact same value when configuring the callback.",
"2. Keep that verify token handy-Meta does not generate one for you. You'll paste the exact same value when configuring the callback.",
"3. In [Meta for Developers](https://developers.facebook.com/apps/), select your WhatsApp app and navigate to **WhatsApp → Configuration → Webhooks**.",
`4. Click **Configure**, then supply one of the following callback URLs when Meta asks for your endpoint:\n - \`${primaryWebhookUrl}\`\n `,
"5. Paste the verify token from step 1 into Meta's **Verify Token** field and submit. Meta will call the callback URL and expect that value to match before it approves the subscription.",
@@ -195,7 +195,7 @@ const buildWhatsAppSetupMarkdown: BuildWhatsAppSetupMarkdown = (): string => {
"### Required WhatsApp Templates",
templateSummaryTable,
"### Template Bodies",
"> Copy the exact template body belowincluding punctuation and spacingwhen creating each template inside Meta. The variables list shows every placeholder that must be configured in WhatsApp Manager.",
"> Copy the exact template body below-including punctuation and spacing-when creating each template inside Meta. The variables list shows every placeholder that must be configured in WhatsApp Manager.",
templateBodies,
]
.filter(Boolean)

View File

@@ -9,7 +9,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="theme-color" content="#000000">
<meta name="slack-app-id" content="ACVBMTPJQ">
<meta name="description" content="OneUptime the complete open-source observability platform.">
<meta name="description" content="OneUptime - the complete open-source observability platform.">
<% if(typeof enableGoogleTagManager !== 'undefined' ? enableGoogleTagManager : false){ %>
<!-- Google Tag Manager -->

View File

@@ -1963,13 +1963,13 @@ export default class MicrosoftTeamsUtil extends WorkspaceBase {
return `Hello! I'm the OneUptime bot. I can help you with the following commands:
**Available Commands:**
- **help** Show this help message
- **create incident** Create a new incident
- **create maintenance** Create a new scheduled maintenance event
- **show active incidents** Display all currently active incidents
- **show scheduled maintenance** Show upcoming scheduled maintenance events
- **show ongoing maintenance** Display currently ongoing maintenance events
- **show active alerts** Display all active alerts
- **help** - Show this help message
- **create incident** - Create a new incident
- **create maintenance** - Create a new scheduled maintenance event
- **show active incidents** - Display all currently active incidents
- **show scheduled maintenance** - Show upcoming scheduled maintenance events
- **show ongoing maintenance** - Display currently ongoing maintenance events
- **show active alerts** - Display all active alerts
Just type any of these commands to get the information you need!`;
}

View File

@@ -228,7 +228,7 @@ const LogDetailsPanel: FunctionComponent<LogDetailsPanelProps> = (
</pre>
) : (
<p className="whitespace-pre-wrap break-words font-mono text-[13px] leading-6 text-slate-100">
{bodyDetails.pretty || ""}
{bodyDetails.pretty || "-"}
</p>
)}
</div>

View File

@@ -187,7 +187,7 @@ const LogsTable: FunctionComponent<LogsTableProps> = (
? OneUptimeDate.getDateAsUserFriendlyFormattedString(
log.time,
)
: ""}
: "-"}
</td>
<td className="px-4 py-3">
<div className="flex items-center gap-3 text-sm text-slate-300">
@@ -211,7 +211,7 @@ const LogsTable: FunctionComponent<LogsTableProps> = (
className={`whitespace-pre-wrap break-words text-sm text-slate-200 transition-colors duration-150 group-hover:text-slate-50 ${severityTheme.textClass}`}
title={message}
>
{message || ""}
{message || "-"}
</p>
{(traceId || spanId) && (
<div className="flex flex-wrap gap-3 text-[11px] tracking-wide text-slate-500">

View File

@@ -538,7 +538,7 @@ const MarkdownEditor: FunctionComponent<ComponentProps> = (
title="Horizontal Rule"
className="p-2 rounded-md text-gray-600 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2"
>
<span className="font-bold text-sm"></span>
<span className="font-bold text-sm">-</span>
</button>
<button
type="button"

View File

@@ -32,7 +32,7 @@ const TeamsAvailableModal: FunctionComponent<TeamsAvailableModalProps> = (
return (
<Modal
title="Microsoft Teams Available Teams"
title="Microsoft Teams - Available Teams"
description="Teams that OneUptime can access in your tenant. Use Refresh if you recently added or changed teams."
modalWidth={ModalWidth.Large}
submitButtonStyleType={ButtonStyleType.NORMAL}

View File

@@ -286,7 +286,7 @@ ${exampleEmailBody}
\`\`\``;
}
return `**Available Template Variables** Use these variables in your template with the \`{{variableName}}\` syntax.
return `**Available Template Variables** - Use these variables in your template with the \`{{variableName}}\` syntax.
| Variable | Description |
|----------|-------------|

View File

@@ -8,7 +8,7 @@
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1E293B" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="description" content="OneUptime the complete open-source observability platform.">
<meta name="description" content="OneUptime - the complete open-source observability platform.">
<meta name="keywords" content="monitoring, observability, uptime, dashboard, PWA, progressive web app">
<meta name="author" content="OneUptime">
<meta name="slack-app-id" content="ACVBMTPJQ">

View File

@@ -21,7 +21,7 @@ import Express, {
} from "Common/Server/Utils/Express";
import "ejs";
// xmlbuilder imports removed (handled inside Sitemap util)
import OSSFriends, { OSSFriend } from "./Utils/OSSFriends";
import OSSFriends, { OSSFriend, OSSCategory } from "./Utils/OSSFriends";
import Reviews from "./Utils/Reviews";
// import jobs.
@@ -138,13 +138,24 @@ const HomeFeatureSet: FeatureSet = {
"/oss-friends",
res.locals["homeUrl"] as string,
);
// Get unique categories in the order they appear
const categories: OSSCategory[] = [];
for (const friend of OSSFriends) {
if (!categories.includes(friend.category)) {
categories.push(friend.category);
}
}
res.render(`${ViewsPath}/oss-friends`, {
ossFriends: OSSFriends.map((friend: OSSFriend) => {
return {
...friend,
repositoryUrl: friend.repositoryUrl.toString(),
websiteUrl: friend.websiteUrl.toString(),
};
}),
categories,
enableGoogleTagManager: IsBillingEnabled,
seo,
});

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -0,0 +1,8 @@
<svg width="151" height="24" viewBox="0 0 151 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 8.45825V23.3333H4.23948V15.8157H17.7989V23.2985H21.9549V0H9.1253C3.46108 0 0 3.34428 0 8.45825ZM17.7502 13.0497H4.23948V8.56972C4.31593 5.30905 5.63642 2.93321 9.1253 2.93321H17.7989L17.7502 13.0497Z" fill="#051163"/>
<path d="M141.342 5.83203H126.086V8.71647H129.436V23.3059H133.745V8.70951H141.404C144.837 8.70951 146.179 11.0784 146.276 14.2903V23.3059H150.46V14.2903C150.404 9.25295 146.964 5.83203 141.342 5.83203Z" fill="#051163"/>
<path d="M47.7532 5.83203H37.0433C31.3791 5.83203 27.918 9.25992 27.918 14.3599C27.918 20.526 31.9489 23.3129 36.5985 23.3129H51.0405V20.526H47.7601V5.83203H47.7532ZM43.5832 20.4006H37.3352C33.7212 20.4006 32.0949 18.2128 32.1018 14.6108C32.1018 11.2247 33.4362 8.72344 37.0085 8.72344H43.5832V20.4006Z" fill="#051163"/>
<path d="M113.125 5.24609H110.157C104.166 5.24609 100.309 7.82398 100.26 14.0806V14.4359C100.26 20.8109 104.138 23.3052 110.157 23.3052H113.125C119.136 23.3052 123.021 20.8109 123.021 14.4359V14.0806C122.945 7.82398 119.109 5.24609 113.125 5.24609ZM118.817 14.6379C118.817 18.6372 117.128 20.3999 112.603 20.3999H110.824C106.3 20.3999 104.618 18.6302 104.618 14.6379V13.9134C104.618 9.46825 106.786 8.1375 110.81 8.1375H112.61C116.634 8.1375 118.817 9.46825 118.817 13.9134V14.6379Z" fill="#051163"/>
<path d="M86.1519 5.81738H84.4074C77.9162 5.81738 74.6636 9.35675 74.6636 14.3523C74.6636 20.4974 78.6807 23.2982 83.3163 23.2982H91.6632V20.4626H84.0113C80.8143 20.4626 79.1811 18.6859 78.8614 15.8154H95.4926C95.5204 14.8609 95.4787 13.8994 95.3606 12.9519C94.6378 8.66002 92.2539 5.82435 86.1519 5.82435V5.81738ZM85.2831 13.0006H78.8961C79.0976 11.7256 79.5842 8.68092 84.5534 8.68092H86.0337C91.0029 8.68092 91.4755 11.7326 91.691 13.0006H85.2831Z" fill="#051163"/>
<path d="M56.1694 14.2966V23.2983H60.3533V14.3523C60.4576 11.1544 61.7989 8.84122 65.2322 8.84122H72.1752V5.97071H65.2669C59.6653 5.96375 56.2181 9.25926 56.1694 14.3035V14.2966Z" fill="#051163"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
Home/Static/img/avolve.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

28
Home/Static/img/cscs.svg Normal file
View File

@@ -0,0 +1,28 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="264px" height="53.049px" viewBox="0 0 264 53.049">
<g>
<polygon fill="#D1D1D1" points="26.182,0 15.953,10.228 24.136,10.228 34.364,0"/>
<polygon fill="#7B7B7B" points="34.364,20.46 26.182,20.46 15.953,10.228 24.136,10.228"/>
<polygon fill="#D1D1D1" points="10.228,15.959 0,26.188 8.182,26.188 18.411,15.959"/>
<polygon fill="#7B7B7B" points="18.411,36.415 10.228,36.415 0,26.184 8.182,26.188"/>
<polygon fill="#D1D1D1" points="26.182,31.915 15.953,42.143 24.136,42.143 34.364,31.915"/>
<polygon fill="#7B7B7B" points="34.364,52.375 26.182,52.375 15.953,42.143 24.136,42.143"/>
<rect x="43.088" y="3" transform="matrix(0.707 -0.7072 0.7072 0.707 7.507 38.5852)" fill="#E2001A" width="14.466" height="14.466"/>
<polygon fill="#F09B9B" points="42.135,0 31.911,10.228 40.093,10.228 50.321,0"/>
<polygon fill="#A60B16" points="50.321,20.46 42.14,20.46 31.911,10.228 40.093,10.228"/>
<rect x="59.042" y="18.956" transform="matrix(0.7071 -0.7071 0.7071 0.7071 0.893 54.5336)" fill="#E2001A" width="14.465" height="14.465"/>
<polygon fill="#F09B9B" points="58.095,15.959 47.866,26.188 56.048,26.188 66.276,15.959"/>
<polygon fill="#A60B16" points="66.276,36.415 58.095,36.415 47.866,26.184 56.048,26.188"/>
<rect x="27.129" y="18.953" transform="matrix(0.707 -0.7072 0.7072 0.707 -8.4503 31.9725)" fill="#E2001A" width="14.464" height="14.464"/>
<polygon fill="#F09B9B" points="26.182,15.959 15.953,26.188 24.136,26.188 34.364,15.959"/>
<polygon fill="#A60B16" points="34.364,36.415 26.182,36.415 15.953,26.184 24.136,26.188"/>
<rect x="43.086" y="34.915" transform="matrix(0.707 -0.7072 0.7072 0.707 -15.0641 47.9351)" fill="#E2001A" width="14.466" height="14.466"/>
<polygon fill="#F09B9B" points="42.14,31.915 31.911,42.143 40.093,42.143 50.321,31.915"/>
<polygon fill="#A60B16" points="50.321,52.375 42.14,52.375 31.911,42.143 40.093,42.143"/>
<g>
<path fill="#000000" d="M98.63,8.921c-0.209-1.484-1.629-2.612-3.26-2.612c-2.946,0-4.054,2.508-4.054,5.12c0,2.487,1.108,4.994,4.054,4.994c2.006,0,3.135-1.379,3.385-3.343h3.176c-0.334,3.719-2.905,6.102-6.561,6.102c-4.617,0-7.334-3.448-7.334-7.753c0-4.431,2.717-7.878,7.334-7.878c3.28,0,6.039,1.923,6.436,5.37H98.63L98.63,8.921z"/>
<path fill="#000000" d="M107.45,13.873c0,1.985,1.546,2.759,3.301,2.759c1.15,0,2.905-0.335,2.905-1.861c0-1.609-2.236-1.881-4.431-2.466c-2.215-0.585-4.451-1.441-4.451-4.241c0-3.051,2.883-4.514,5.579-4.514c3.113,0,5.977,1.358,5.977,4.806h-3.177c-0.104-1.797-1.379-2.257-2.946-2.257c-1.045,0-2.257,0.439-2.257,1.693c0,1.149,0.711,1.295,4.452,2.257c1.087,0.271,4.43,0.961,4.43,4.346c0,2.737-2.153,4.786-6.207,4.786c-3.301,0-6.393-1.63-6.352-5.308L107.45,13.873L107.45,13.873L107.45,13.873z"/>
<path fill="#000000" d="M129.768,8.921c-0.209-1.484-1.629-2.612-3.26-2.612c-2.946,0-4.054,2.508-4.054,5.12c0,2.487,1.108,4.994,4.054,4.994c2.006,0,3.135-1.379,3.386-3.343h3.175c-0.333,3.719-2.904,6.102-6.561,6.102c-4.617,0-7.334-3.448-7.334-7.753c0-4.431,2.717-7.878,7.334-7.878c3.282,0,6.039,1.923,6.436,5.37H129.768L129.768,8.921z"/>
<path fill="#000000" d="M138.587,13.873c0,1.985,1.546,2.759,3.302,2.759c1.148,0,2.905-0.335,2.905-1.861c0-1.609-2.236-1.881-4.43-2.466c-2.214-0.585-4.45-1.441-4.45-4.241c0-3.051,2.883-4.514,5.578-4.514c3.114,0,5.977,1.358,5.977,4.806h-3.177c-0.104-1.797-1.379-2.257-2.946-2.257c-1.044,0-2.256,0.439-2.256,1.693c0,1.149,0.71,1.295,4.452,2.257c1.086,0.271,4.43,0.961,4.43,4.346c0,2.737-2.154,4.786-6.207,4.786c-3.3,0-6.392-1.63-6.35-5.308h3.173l0,0C138.588,13.873,138.587,13.873,138.587,13.873z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="0 0 256 233"><path d="M186.18182 0h46.54545v46.54545h-46.54545z"/><path fill="#F7D046" d="M209.45454 0h46.54545v46.54545h-46.54545z"/><path d="M0 0h46.54545v46.54545H0zM0 46.54545h46.54545V93.0909H0zM0 93.09091h46.54545v46.54545H0zM0 139.63636h46.54545v46.54545H0zM0 186.18182h46.54545v46.54545H0z"/><path fill="#F7D046" d="M23.27273 0h46.54545v46.54545H23.27273z"/><path fill="#F2A73B" d="M209.45454 46.54545h46.54545V93.0909h-46.54545zM23.27273 46.54545h46.54545V93.0909H23.27273z"/><path d="M139.63636 46.54545h46.54545V93.0909h-46.54545z"/><path fill="#F2A73B" d="M162.90909 46.54545h46.54545V93.0909h-46.54545zM69.81818 46.54545h46.54545V93.0909H69.81818z"/><path fill="#EE792F" d="M116.36364 93.09091h46.54545v46.54545h-46.54545zM162.90909 93.09091h46.54545v46.54545h-46.54545zM69.81818 93.09091h46.54545v46.54545H69.81818z"/><path d="M93.09091 139.63636h46.54545v46.54545H93.09091z"/><path fill="#EB5829" d="M116.36364 139.63636h46.54545v46.54545h-46.54545z"/><path fill="#EE792F" d="M209.45454 93.09091h46.54545v46.54545h-46.54545zM23.27273 93.09091h46.54545v46.54545H23.27273z"/><path d="M186.18182 139.63636h46.54545v46.54545h-46.54545z"/><path fill="#EB5829" d="M209.45454 139.63636h46.54545v46.54545h-46.54545z"/><path d="M186.18182 186.18182h46.54545v46.54545h-46.54545z"/><path fill="#EB5829" d="M23.27273 139.63636h46.54545v46.54545H23.27273z"/><path fill="#EA3326" d="M209.45454 186.18182h46.54545v46.54545h-46.54545zM23.27273 186.18182h46.54545v46.54545H23.27273z"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
Home/Static/img/nt-ware.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

BIN
Home/Static/img/syniti.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -1,47 +1,304 @@
import URL from "Common/Types/API/URL";
export type OSSCategory =
| "Data & Analytics"
| "Developer Tools"
| "Productivity & Collaboration"
| "Infrastructure & DevOps"
| "Security"
| "AI & Machine Learning";
export interface OSSFriend {
name: string;
description: string;
repositoryUrl: URL;
websiteUrl: URL;
category: OSSCategory;
}
const OSSFriends: OSSFriend[] = [
// Data & Analytics
{
name: "Airbyte",
description:
"Airbyte is an open-source EL(T) platform that helps you replicate your data in your warehouses, lakes, and databases.",
"Open-source EL(T) platform that helps you replicate your data in your warehouses, lakes, and databases.",
repositoryUrl: URL.fromString("https://github.com/airbytehq/airbyte"),
websiteUrl: URL.fromString("https://airbyte.com"),
category: "Data & Analytics",
},
{
name: "Metabase",
description:
"The easy, open-source way for everyone in your company to ask questions and learn from data.",
repositoryUrl: URL.fromString("https://github.com/metabase/metabase"),
websiteUrl: URL.fromString("https://metabase.com"),
category: "Data & Analytics",
},
{
name: "PostHog",
description:
"Open-source product analytics, session recording, feature flags, and A/B testing - all in one platform.",
repositoryUrl: URL.fromString("https://github.com/PostHog/posthog"),
websiteUrl: URL.fromString("https://posthog.com"),
category: "Data & Analytics",
},
{
name: "Apache Superset",
description:
"A modern, enterprise-ready business intelligence web application for data exploration and visualization.",
repositoryUrl: URL.fromString("https://github.com/apache/superset"),
websiteUrl: URL.fromString("https://superset.apache.org"),
category: "Data & Analytics",
},
{
name: "ClickHouse",
description:
"An open-source column-oriented database management system for real-time analytics using SQL.",
repositoryUrl: URL.fromString("https://github.com/ClickHouse/ClickHouse"),
websiteUrl: URL.fromString("https://clickhouse.com"),
category: "Data & Analytics",
},
{
name: "Plausible",
description:
"Simple, open-source, lightweight and privacy-friendly web analytics alternative to Google Analytics.",
repositoryUrl: URL.fromString("https://github.com/plausible/analytics"),
websiteUrl: URL.fromString("https://plausible.io"),
category: "Data & Analytics",
},
// Developer Tools
{
name: "GitLab",
description:
"The complete DevOps platform. From project planning and source code management to CI/CD and monitoring.",
repositoryUrl: URL.fromString("https://github.com/gitlabhq/gitlabhq"),
websiteUrl: URL.fromString("https://gitlab.com"),
category: "Developer Tools",
},
{
name: "Gitea",
description:
"A painless self-hosted Git service. Lightweight, fast, and easy to set up.",
repositoryUrl: URL.fromString("https://github.com/go-gitea/gitea"),
websiteUrl: URL.fromString("https://gitea.io"),
category: "Developer Tools",
},
{
name: "n8n",
description:
"Free and open fair-code licensed workflow automation tool. Easily automate tasks across different services.",
repositoryUrl: URL.fromString("https://github.com/n8n-io/n8n"),
websiteUrl: URL.fromString("https://n8n.io"),
category: "Developer Tools",
},
{
name: "Backstage",
description:
"An open platform for building developer portals. Powered by a centralized software catalog.",
repositoryUrl: URL.fromString("https://github.com/backstage/backstage"),
websiteUrl: URL.fromString("https://backstage.io"),
category: "Developer Tools",
},
{
name: "Hoppscotch",
description:
"Open-source API development ecosystem. A free, fast, and beautiful alternative to Postman.",
repositoryUrl: URL.fromString("https://github.com/hoppscotch/hoppscotch"),
websiteUrl: URL.fromString("https://hoppscotch.io"),
category: "Developer Tools",
},
{
name: "Insomnia",
description:
"The open-source, cross-platform API client for GraphQL, REST, WebSockets and gRPC.",
repositoryUrl: URL.fromString("https://github.com/Kong/insomnia"),
websiteUrl: URL.fromString("https://insomnia.rest"),
category: "Developer Tools",
},
// Productivity & Collaboration
{
name: "Cal.com",
description:
"Open Source Scheduling: Send a link and meet or build an entire marketplace for humans to connect.",
repositoryUrl: URL.fromString("https://github.com/calcom/cal.com"),
},
{
name: "Infiscal",
description:
"Infisical is an open-source end-to-end platform to manage secrets and configuration across your team and infrastructure.",
repositoryUrl: URL.fromString("https://github.com/Infisical/infisical"),
},
{
name: "Metabase",
description:
"Metabase is the easy, open-source way for everyone in your company to ask questions and learn from data.",
repositoryUrl: URL.fromString("https://github.com/metabase/metabase"),
},
{
name: "Posthog",
description:
"PostHog is open-source product analytics, built for developers.",
repositoryUrl: URL.fromString("https://github.com/PostHog/posthog"),
websiteUrl: URL.fromString("https://cal.com"),
category: "Productivity & Collaboration",
},
{
name: "Twenty",
description:
"Twenty is building an open-source modern CRM. It's alternative to Salesforce and HubSpot.",
"Building an open-source modern CRM. A powerful alternative to Salesforce and HubSpot.",
repositoryUrl: URL.fromString("https://github.com/twentyhq/twenty"),
websiteUrl: URL.fromString("https://twenty.com"),
category: "Productivity & Collaboration",
},
{
name: "AppFlowy",
description:
"Open-source alternative to Notion. A privacy-first, customizable workspace for notes and tasks.",
repositoryUrl: URL.fromString("https://github.com/AppFlowy-IO/AppFlowy"),
websiteUrl: URL.fromString("https://appflowy.io"),
category: "Productivity & Collaboration",
},
{
name: "Mattermost",
description:
"Open-source platform for secure collaboration across the entire software development lifecycle.",
repositoryUrl: URL.fromString("https://github.com/mattermost/mattermost"),
websiteUrl: URL.fromString("https://mattermost.com"),
category: "Productivity & Collaboration",
},
{
name: "Chatwoot",
description:
"Open-source customer engagement suite. An alternative to Intercom, Zendesk, and Salesforce Service Cloud.",
repositoryUrl: URL.fromString("https://github.com/chatwoot/chatwoot"),
websiteUrl: URL.fromString("https://chatwoot.com"),
category: "Productivity & Collaboration",
},
{
name: "Documenso",
description:
"The open-source DocuSign alternative. Sign documents digitally with ease and security.",
repositoryUrl: URL.fromString("https://github.com/documenso/documenso"),
websiteUrl: URL.fromString("https://documenso.com"),
category: "Productivity & Collaboration",
},
// Infrastructure & DevOps
{
name: "Docker",
description:
"The platform for building, sharing, and running containerized applications anywhere.",
repositoryUrl: URL.fromString("https://github.com/moby/moby"),
websiteUrl: URL.fromString("https://docker.com"),
category: "Infrastructure & DevOps",
},
{
name: "Kubernetes",
description:
"Production-grade container orchestration. Automate deployment, scaling, and management of containerized applications.",
repositoryUrl: URL.fromString("https://github.com/kubernetes/kubernetes"),
websiteUrl: URL.fromString("https://kubernetes.io"),
category: "Infrastructure & DevOps",
},
{
name: "Terraform",
description:
"Infrastructure as code tool that lets you build, change, and version cloud and on-prem resources safely.",
repositoryUrl: URL.fromString("https://github.com/hashicorp/terraform"),
websiteUrl: URL.fromString("https://terraform.io"),
category: "Infrastructure & DevOps",
},
{
name: "Ansible",
description:
"Radically simple IT automation platform that makes your applications and systems easier to deploy and maintain.",
repositoryUrl: URL.fromString("https://github.com/ansible/ansible"),
websiteUrl: URL.fromString("https://ansible.com"),
category: "Infrastructure & DevOps",
},
{
name: "Coolify",
description:
"An open-source and self-hostable Heroku/Netlify alternative. Deploy anything with ease.",
repositoryUrl: URL.fromString("https://github.com/coollabsio/coolify"),
websiteUrl: URL.fromString("https://coolify.io"),
category: "Infrastructure & DevOps",
},
{
name: "Traefik",
description:
"A modern HTTP reverse proxy and load balancer that makes deploying microservices easy.",
repositoryUrl: URL.fromString("https://github.com/traefik/traefik"),
websiteUrl: URL.fromString("https://traefik.io"),
category: "Infrastructure & DevOps",
},
// Security
{
name: "Infisical",
description:
"Open-source end-to-end platform to manage secrets and configuration across your team and infrastructure.",
repositoryUrl: URL.fromString("https://github.com/Infisical/infisical"),
websiteUrl: URL.fromString("https://infisical.com"),
category: "Security",
},
{
name: "Vault",
description:
"A tool for secrets management, encryption as a service, and privileged access management.",
repositoryUrl: URL.fromString("https://github.com/hashicorp/vault"),
websiteUrl: URL.fromString("https://vaultproject.io"),
category: "Security",
},
{
name: "Keycloak",
description:
"Open-source identity and access management for modern applications and services.",
repositoryUrl: URL.fromString("https://github.com/keycloak/keycloak"),
websiteUrl: URL.fromString("https://keycloak.org"),
category: "Security",
},
{
name: "Trivy",
description:
"Find vulnerabilities, misconfigurations, secrets, and SBOM in containers, Kubernetes, and code repositories.",
repositoryUrl: URL.fromString("https://github.com/aquasecurity/trivy"),
websiteUrl: URL.fromString("https://trivy.dev"),
category: "Security",
},
{
name: "Authentik",
description:
"Open-source Identity Provider focused on flexibility and versatility. SSO, MFA, and more.",
repositoryUrl: URL.fromString("https://github.com/goauthentik/authentik"),
websiteUrl: URL.fromString("https://goauthentik.io"),
category: "Security",
},
// AI & Machine Learning
{
name: "Langfuse",
description:
"Open-source LLM engineering platform. Debug, analyze, and iterate on your LLM applications.",
repositoryUrl: URL.fromString("https://github.com/langfuse/langfuse"),
websiteUrl: URL.fromString("https://langfuse.com"),
category: "AI & Machine Learning",
},
{
name: "Flowise",
description:
"Build LLM apps easily with a drag-and-drop UI. Open-source low-code tool for developers.",
repositoryUrl: URL.fromString("https://github.com/FlowiseAI/Flowise"),
websiteUrl: URL.fromString("https://flowiseai.com"),
category: "AI & Machine Learning",
},
{
name: "Ollama",
description:
"Get up and running with large language models locally. Run Llama, Mistral, and other models.",
repositoryUrl: URL.fromString("https://github.com/ollama/ollama"),
websiteUrl: URL.fromString("https://ollama.com"),
category: "AI & Machine Learning",
},
{
name: "LocalAI",
description:
"Free, open-source alternative to OpenAI. Self-hosted, community-driven, local-first AI inference.",
repositoryUrl: URL.fromString("https://github.com/mudler/LocalAI"),
websiteUrl: URL.fromString("https://localai.io"),
category: "AI & Machine Learning",
},
{
name: "Dify",
description:
"Open-source LLM app development platform. Build AI workflows, RAG pipelines, and agent capabilities.",
repositoryUrl: URL.fromString("https://github.com/langgenius/dify"),
websiteUrl: URL.fromString("https://dify.ai"),
category: "AI & Machine Learning",
},
];

View File

@@ -43,7 +43,7 @@
<li>Facilitation payments: Do not make facilitation payments unless there is an immediate threat to personal safety; any such incident must be promptly documented and reported.</li>
<li>Gifts, hospitality, and entertainment: Keep modest and infrequent, never to obtain or provide improper advantage. Obtain prior approval when required by policy and always record accurately.</li>
<li>Books and records: Maintain accurate, complete, and timely records; no off-the-books accounts. Submit truthful expense reports with supporting documentation.</li>
<li>Fair competition: Comply with antitrust/competition lawsnever agree on prices, allocate markets, or exchange competitively sensitive information with competitors.</li>
<li>Fair competition: Comply with antitrust/competition laws-never agree on prices, allocate markets, or exchange competitively sensitive information with competitors.</li>
</ul>
<h2>5) Conflicts of interest and corporate opportunities</h2>

View File

@@ -17,9 +17,9 @@
residency requirements.</p>
<p>Thousands of companies use OneUptime every day, but because data is primarily stored in the United States, many
organizations abroad remain on the sidelines. To bridge this gapand make OneUptime available to more organizations
organizations abroad remain on the sidelines. To bridge this gap-and make OneUptime available to more organizations
in highly regulated
sectors, such as financial services, government and health carewere delivering data residency for OneUptime. </p>
sectors, such as financial services, government and health care-were delivering data residency for OneUptime. </p>
<p>Data residency will give global organizations more control over where their data is stored. We can deploy your
data to any of the Microsoft Azure, Aamazon Web Services or Google Cloud Platform, or On-Prem regions around the

View File

@@ -4,82 +4,791 @@
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<head>
<title>OneUptime | One Complete Observability platform. </title>
<title>Request Demo | OneUptime</title>
<meta name="description"
content="OneUptime monitors websites, APIs, and servers and alerts your team if something goes wrong. It also keeps your customers updated about any downtime.">
content="Schedule a personalized demo of OneUptime. See how our complete observability platform can help you monitor, observe, debug, and resolve issues faster.">
<%- include('head', {
enableGoogleTagManager: typeof enableGoogleTagManager !== 'undefined' ? enableGoogleTagManager : false
}) -%>
<style>
html {
scroll-behavior: smooth;
}
</style>
</head>
<body>
<body class="antialiased bg-white">
<%- include('nav') -%>
<main id="main-content">
<div class="bg-white">
<div class="mx-auto max-w-7xl py-24 px-6 lg:px-8">
<div class="sm:align-center sm:flex sm:flex-col">
<h1 class="text-5xl font-bold tracking-tight text-gray-900 sm:text-center">Request Demo</h1>
<p class="mt-5 text-xl text-gray-500 sm:text-center">Our team is happy to give you a personalized demo. Pick
any time slot that works for you.</p>
<!-- Hero Section -->
<section class="relative isolate overflow-hidden">
<!-- Background - dot pattern (same as OSS friends) -->
<div class="absolute inset-0 -z-10 h-full w-full bg-white bg-[radial-gradient(#e5e7eb_1px,transparent_1px)] bg-[size:2rem_2rem] [mask-image:radial-gradient(ellipse_60%_50%_at_50%_0%,#000_70%,transparent_110%)]"></div>
<div class="py-20 sm:py-28 lg:py-32">
<div class="mx-auto max-w-7xl px-6 lg:px-8">
<div class="mx-auto max-w-3xl text-center">
<!-- Badge -->
<a href="#book-demo" class="group mb-8 inline-flex items-center gap-1.5 rounded-full bg-gray-50 px-4 py-1.5 text-sm text-gray-600 ring-1 ring-inset ring-gray-200 transition-all hover:bg-gray-100 hover:ring-gray-300">
<svg class="h-4 w-4" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z"></path>
</svg>
<span>Schedule a demo</span>
<svg class="h-3.5 w-3.5 text-gray-400 transition-transform group-hover:translate-x-0.5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"></path></svg>
</a>
<!-- Main headline -->
<h1 class="text-3xl font-medium tracking-tight text-gray-900 sm:text-4xl lg:text-5xl xl:text-[3.5rem] xl:leading-[1.15]">
Let's solve your <br class="hidden sm:block" />software-ops challenges
</h1>
<!-- Subheadline -->
<p class="mt-6 text-base leading-7 text-gray-600 sm:text-lg sm:leading-8 max-w-xl mx-auto">
Get a personalized demo (30 mins to 1 hour). We'll show you how OneUptime can replace your fragmented toolchain with one unified platform.
</p>
<!-- CTA buttons -->
<div class="mt-10 flex flex-col sm:flex-row items-center justify-center gap-3 sm:gap-4">
<a href="#book-demo" class="w-full sm:w-auto inline-flex items-center justify-center rounded-lg bg-gray-900 px-6 py-2.5 text-sm font-medium text-white shadow-sm transition-all hover:bg-gray-700 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-900">
Schedule the call
<svg class="ml-2 h-4 w-4" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M19 14l-7 7m0 0l-7-7m7 7V3"></path></svg>
</a>
</div>
</div>
</div>
<div style="margin-top: 50px;">
<!-- Cal inline embed code begins -->
<div style="width:100%;height:100%;overflow:scroll" id="my-cal-inline"></div>
<script type="text/javascript">
(function (C, A, L) { let p = function (a, ar) { a.q.push(ar); }; let d = C.document; C.Cal = C.Cal || function () { let cal = C.Cal; let ar = arguments; if (!cal.loaded) { cal.ns = {}; cal.q = cal.q || []; d.head.appendChild(d.createElement("script")).src = A; cal.loaded = true; } if (ar[0] === L) { const api = function () { p(api, arguments); }; const namespace = ar[1]; api.q = api.q || []; typeof namespace === "string" ? (cal.ns[namespace] = api) && p(api, ar) : p(cal, ar); return; } p(cal, ar); }; })(window, "https://app.cal.com/embed/embed.js", "init");
Cal("init", { origin: "https://cal.com" });
Cal("inline", {
elementOrSelector: "#my-cal-inline",
calLink: "oneuptimehq/demo",
layout: "month_view"
});
Cal("ui", { "styles": { "branding": { "brandColor": "#6366f1" } }, "hideEventTypeDetails": false, "layout": "month_view" });
Cal("on", {
action: "bookingSuccessful",
callback: (e) => {
// `data` is properties for the event.
// `type` is the name of the action(You can also call it type of the action.) This would be same as "ANY_ACTION_NAME" except when ANY_ACTION_NAME="*" which listens to all the events.
// `namespace` tells you the Cal namespace for which the event is fired/
const { data, type, namespace } = e.detail;
if (posthog) {
posthog.capture('home/demo-booked', {
'page': {
'path': window.location.pathname,
'referrer': document.referrer,
'search': window.location.search,
'url': window.location.href,
'title': document.title,
},
'data': data,
'type': type,
'namespace': namespace
});
}
}
})
</script>
<!-- Cal inline embed code ends -->
</div>
</div>
</div>
<!-- Calendar Widget -->
<div class="mx-auto max-w-5xl px-6 lg:px-8 pb-20" id="book-demo">
<!-- Section header -->
<div class="text-center mb-8">
<h2 class="text-xl font-semibold text-gray-900">Pick a time that works for you</h2>
<p class="mt-2 text-sm text-gray-500">30 mins to 1 hour call. Speak to an engineer, never a salesperson.</p>
</div>
<!-- Calendar container -->
<div class="relative">
<div class="">
<div class="w-full overflow-hidden h-[500px] sm:h-[600px] lg:h-[680px]" id="my-cal-inline"></div>
</div>
</div>
<!-- Helper text -->
<div class="mt-6 flex flex-col sm:flex-row items-center justify-center gap-4 sm:gap-8 text-sm text-gray-500">
<div class="flex items-center gap-2">
<svg class="h-4 w-4 text-green-500" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z" clip-rule="evenodd" />
</svg>
<span>No commitment required</span>
</div>
<div class="flex items-center gap-2">
<svg class="h-4 w-4 text-green-500" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z" clip-rule="evenodd" />
</svg>
<span>Cancel or reschedule anytime</span>
</div>
</div>
<p class="mt-4 text-center text-sm text-gray-400">
Prefer email? <a href="mailto:sales@oneuptime.com" class="text-gray-600 hover:text-gray-900 underline underline-offset-2">sales@oneuptime.com</a>
</p>
</div>
</section>
<!-- What will we do -->
<section class="py-12 sm:py-16 lg:py-20 bg-gray-50 border-t border-gray-100">
<div class="mx-auto max-w-7xl px-6 lg:px-8">
<div class="text-center mb-8 sm:mb-12">
<h2 class="text-xl sm:text-2xl lg:text-3xl font-semibold tracking-tight text-gray-900">What to expect</h2>
<p class="mt-2 sm:mt-3 text-sm sm:text-base text-gray-500">Your demo, your agenda. We listen first, then show you what matters most.</p>
</div>
<div class="grid sm:grid-cols-3 gap-4 sm:gap-6 max-w-4xl mx-auto">
<div class="bg-white rounded-xl sm:rounded-2xl p-4 sm:p-6 ring-1 ring-gray-200 hover:shadow-lg transition-all">
<div class="mb-3 sm:mb-4 inline-flex h-10 w-10 sm:h-12 sm:w-12 items-center justify-center rounded-lg sm:rounded-xl bg-gray-900">
<svg class="h-5 w-5 sm:h-6 sm:w-6 text-white" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 002.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 00-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75 2.25 2.25 0 00-.1-.664m-5.8 0A2.251 2.251 0 0113.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25zM6.75 12h.008v.008H6.75V12zm0 3h.008v.008H6.75V15zm0 3h.008v.008H6.75V18z"></path>
</svg>
</div>
<p class="font-semibold text-gray-900 text-sm sm:text-base">Understand your requirements</p>
<p class="mt-1.5 sm:mt-2 text-xs sm:text-sm text-gray-500 leading-relaxed">We'll learn about your infrastructure, challenges, and goals to tailor the demo</p>
</div>
<div class="bg-white rounded-xl sm:rounded-2xl p-4 sm:p-6 ring-1 ring-gray-200 hover:shadow-lg transition-all">
<div class="mb-3 sm:mb-4 inline-flex h-10 w-10 sm:h-12 sm:w-12 items-center justify-center rounded-lg sm:rounded-xl bg-gray-900">
<svg class="h-5 w-5 sm:h-6 sm:w-6 text-white" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z"></path>
</svg>
</div>
<p class="font-semibold text-gray-900 text-sm sm:text-base">Customer guides the demo</p>
<p class="mt-1.5 sm:mt-2 text-xs sm:text-sm text-gray-500 leading-relaxed">You're in control - tell us what you want to see and we'll show you exactly that</p>
</div>
<div class="bg-white rounded-xl sm:rounded-2xl p-4 sm:p-6 ring-1 ring-gray-200 hover:shadow-lg transition-all">
<div class="mb-3 sm:mb-4 inline-flex h-10 w-10 sm:h-12 sm:w-12 items-center justify-center rounded-lg sm:rounded-xl bg-gray-900">
<svg class="h-5 w-5 sm:h-6 sm:w-6 text-white" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M8.625 12a.375.375 0 11-.75 0 .375.375 0 01.75 0zm0 0H8.25m4.125 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zm0 0H12m4.125 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zm0 0h-.375M21 12c0 4.556-4.03 8.25-9 8.25a9.764 9.764 0 01-2.555-.337A5.972 5.972 0 015.41 20.97a5.969 5.969 0 01-.474-.065 4.48 4.48 0 00.978-2.025c.09-.457-.133-.901-.467-1.226C3.93 16.178 3 14.189 3 12c0-4.556 4.03-8.25 9-8.25s9 3.694 9 8.25z"></path>
</svg>
</div>
<p class="font-semibold text-gray-900 text-sm sm:text-base">We answer all of your questions</p>
<p class="mt-1.5 sm:mt-2 text-xs sm:text-sm text-gray-500 leading-relaxed">No question is too small - we're here to help you make the right decision</p>
</div>
</div>
</div>
</section>
<!-- Cal.com Script -->
<script type="text/javascript">
(function (C, A, L) { let p = function (a, ar) { a.q.push(ar); }; let d = C.document; C.Cal = C.Cal || function () { let cal = C.Cal; let ar = arguments; if (!cal.loaded) { cal.ns = {}; cal.q = cal.q || []; d.head.appendChild(d.createElement("script")).src = A; cal.loaded = true; } if (ar[0] === L) { const api = function () { p(api, arguments); }; const namespace = ar[1]; api.q = api.q || []; typeof namespace === "string" ? (cal.ns[namespace] = api) && p(api, ar) : p(cal, ar); return; } p(cal, ar); }; })(window, "https://app.cal.com/embed/embed.js", "init");
Cal("init", { origin: "https://cal.com" });
Cal("inline", {
elementOrSelector: "#my-cal-inline",
calLink: "oneuptimehq/demo",
layout: "month_view"
});
Cal("ui", { "styles": { "branding": { "brandColor": "#4f46e5" } }, "hideEventTypeDetails": false, "layout": "month_view" });
Cal("on", {
action: "bookingSuccessful",
callback: (e) => {
const { data, type, namespace } = e.detail;
if (typeof posthog !== 'undefined' && posthog) {
posthog.capture('home/demo-booked', {
'page': {
'path': window.location.pathname,
'referrer': document.referrer,
'search': window.location.search,
'url': window.location.href,
'title': document.title,
},
'data': data,
'type': type,
'namespace': namespace
});
}
}
});
</script>
</section>
<!-- Logo Roll -->
<%- include('logo-roll') -%>
<%- include('features-table') -%>
<%- include('cta') -%>
<!-- Platform Overview -->
<section class="py-16 sm:py-20 lg:py-28 bg-gray-50 border-t border-gray-100">
<div class="mx-auto max-w-7xl px-6 lg:px-8">
<div class="max-w-2xl mb-10 sm:mb-16">
<h2 class="text-2xl sm:text-3xl font-semibold tracking-tight text-gray-900">
The complete observability platform
</h2>
<p class="mt-3 sm:mt-4 text-base sm:text-lg text-gray-500">
Replace your fragmented toolchain with one unified platform. Monitor, observe, debug, and resolve faster.
</p>
</div>
<div class="grid grid-cols-2 sm:grid-cols-2 lg:grid-cols-4 gap-x-4 sm:gap-x-8 gap-y-8 sm:gap-y-10">
<a href="/product/status-page" class="group block">
<div class="w-9 h-9 sm:w-10 sm:h-10 rounded-lg bg-white border border-gray-200 flex items-center justify-center mb-3 sm:mb-4 group-hover:border-indigo-300 group-hover:bg-indigo-50 transition-colors">
<svg class="h-4 w-4 sm:h-5 sm:w-5 text-gray-600 group-hover:text-indigo-600 transition-colors" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
</svg>
</div>
<p class="font-medium text-gray-900 group-hover:text-indigo-600 transition-colors text-sm sm:text-base">Status Pages</p>
<p class="mt-1 text-xs sm:text-sm text-gray-500">Beautiful public and private status pages with custom domains and branding.</p>
</a>
<a href="/product/monitoring" class="group block">
<div class="w-9 h-9 sm:w-10 sm:h-10 rounded-lg bg-white border border-gray-200 flex items-center justify-center mb-3 sm:mb-4 group-hover:border-indigo-300 group-hover:bg-indigo-50 transition-colors">
<svg class="h-4 w-4 sm:h-5 sm:w-5 text-gray-600 group-hover:text-indigo-600 transition-colors" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 21a9.004 9.004 0 008.716-6.747M12 21a9.004 9.004 0 01-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 017.843 4.582M12 3a8.997 8.997 0 00-7.843 4.582m15.686 0A11.953 11.953 0 0112 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0121 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0112 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 013 12c0-1.605.42-3.113 1.157-4.418"></path>
</svg>
</div>
<p class="font-medium text-gray-900 group-hover:text-indigo-600 transition-colors text-sm sm:text-base">Monitoring</p>
<p class="mt-1 text-xs sm:text-sm text-gray-500">Monitor websites, APIs, servers, containers, and Kubernetes clusters.</p>
</a>
<a href="/product/incident-management" class="group block">
<div class="w-9 h-9 sm:w-10 sm:h-10 rounded-lg bg-white border border-gray-200 flex items-center justify-center mb-3 sm:mb-4 group-hover:border-indigo-300 group-hover:bg-indigo-50 transition-colors">
<svg class="h-4 w-4 sm:h-5 sm:w-5 text-gray-600 group-hover:text-indigo-600 transition-colors" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"></path>
</svg>
</div>
<p class="font-medium text-gray-900 group-hover:text-indigo-600 transition-colors text-sm sm:text-base">Incident Management</p>
<p class="mt-1 text-xs sm:text-sm text-gray-500">Detect, respond, and resolve incidents faster with automated workflows.</p>
</a>
<a href="/product/on-call" class="group block">
<div class="w-9 h-9 sm:w-10 sm:h-10 rounded-lg bg-white border border-gray-200 flex items-center justify-center mb-3 sm:mb-4 group-hover:border-indigo-300 group-hover:bg-indigo-50 transition-colors">
<svg class="h-4 w-4 sm:h-5 sm:w-5 text-gray-600 group-hover:text-indigo-600 transition-colors" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M2.25 6.75c0 8.284 6.716 15 15 15h2.25a2.25 2.25 0 002.25-2.25v-1.372c0-.516-.351-.966-.852-1.091l-4.423-1.106c-.44-.11-.902.055-1.173.417l-.97 1.293c-.282.376-.769.542-1.21.38a12.035 12.035 0 01-7.143-7.143c-.162-.441.004-.928.38-1.21l1.293-.97c.363-.271.527-.734.417-1.173L6.963 3.102a1.125 1.125 0 00-1.091-.852H4.5A2.25 2.25 0 002.25 4.5v2.25z"></path>
</svg>
</div>
<p class="font-medium text-gray-900 group-hover:text-indigo-600 transition-colors text-sm sm:text-base">On-Call & Alerts</p>
<p class="mt-1 text-xs sm:text-sm text-gray-500">Smart escalations, rotations, and multi-channel alerting.</p>
</a>
<a href="/product/logs-management" class="group block">
<div class="w-9 h-9 sm:w-10 sm:h-10 rounded-lg bg-white border border-gray-200 flex items-center justify-center mb-3 sm:mb-4 group-hover:border-indigo-300 group-hover:bg-indigo-50 transition-colors">
<svg class="h-4 w-4 sm:h-5 sm:w-5 text-gray-600 group-hover:text-indigo-600 transition-colors" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M3.75 12h16.5m-16.5 3.75h16.5M3.75 19.5h16.5M5.625 4.5h12.75a1.875 1.875 0 010 3.75H5.625a1.875 1.875 0 010-3.75z"></path>
</svg>
</div>
<p class="font-medium text-gray-900 group-hover:text-indigo-600 transition-colors text-sm sm:text-base">Logs Management</p>
<p class="mt-1 text-xs sm:text-sm text-gray-500">Centralize logs from any source and search in milliseconds.</p>
</a>
<a href="/product/apm" class="group block">
<div class="w-9 h-9 sm:w-10 sm:h-10 rounded-lg bg-white border border-gray-200 flex items-center justify-center mb-3 sm:mb-4 group-hover:border-indigo-300 group-hover:bg-indigo-50 transition-colors">
<svg class="h-4 w-4 sm:h-5 sm:w-5 text-gray-600 group-hover:text-indigo-600 transition-colors" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M3 12h4l3-9 4 18 3-9h4"></path>
</svg>
</div>
<p class="font-medium text-gray-900 group-hover:text-indigo-600 transition-colors text-sm sm:text-base">APM & Traces</p>
<p class="mt-1 text-xs sm:text-sm text-gray-500">Distributed tracing and performance monitoring for any stack.</p>
</a>
<a href="/product/workflows" class="group block">
<div class="w-9 h-9 sm:w-10 sm:h-10 rounded-lg bg-white border border-gray-200 flex items-center justify-center mb-3 sm:mb-4 group-hover:border-indigo-300 group-hover:bg-indigo-50 transition-colors">
<svg class="h-4 w-4 sm:h-5 sm:w-5 text-gray-600 group-hover:text-indigo-600 transition-colors" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M2.25 7.125C2.25 6.504 2.754 6 3.375 6h6c.621 0 1.125.504 1.125 1.125v3.75c0 .621-.504 1.125-1.125 1.125h-6a1.125 1.125 0 01-1.125-1.125v-3.75zM14.25 8.625c0-.621.504-1.125 1.125-1.125h5.25c.621 0 1.125.504 1.125 1.125v8.25c0 .621-.504 1.125-1.125 1.125h-5.25a1.125 1.125 0 01-1.125-1.125v-8.25zM3.75 16.125c0-.621.504-1.125 1.125-1.125h5.25c.621 0 1.125.504 1.125 1.125v2.25c0 .621-.504 1.125-1.125 1.125h-5.25a1.125 1.125 0 01-1.125-1.125v-2.25z"></path>
</svg>
</div>
<p class="font-medium text-gray-900 group-hover:text-indigo-600 transition-colors text-sm sm:text-base">Workflows</p>
<p class="mt-1 text-xs sm:text-sm text-gray-500">Automate incident response with 5000+ integrations.</p>
</a>
<a href="/product/ai-agent" class="group block">
<div class="w-9 h-9 sm:w-10 sm:h-10 rounded-lg bg-white border border-gray-200 flex items-center justify-center mb-3 sm:mb-4 group-hover:border-indigo-300 group-hover:bg-indigo-50 transition-colors">
<svg class="h-4 w-4 sm:h-5 sm:w-5 text-gray-600 group-hover:text-indigo-600 transition-colors" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09zM18.259 8.715L18 9.75l-.259-1.035a3.375 3.375 0 00-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 002.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 002.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 00-2.456 2.456z"></path>
</svg>
</div>
<p class="font-medium text-gray-900 group-hover:text-indigo-600 transition-colors text-sm sm:text-base">AI Copilot</p>
<p class="mt-1 text-xs sm:text-sm text-gray-500">Automatically fix errors with AI-generated pull requests.</p>
</a>
</div>
</div>
</section>
<!-- Why OneUptime -->
<section class="py-16 sm:py-20 lg:py-28 border-t border-gray-100">
<div class="mx-auto max-w-7xl px-6 lg:px-8">
<div class="max-w-2xl mb-10 sm:mb-16">
<h2 class="text-2xl sm:text-3xl font-semibold tracking-tight text-gray-900">
Why teams choose OneUptime
</h2>
<p class="mt-3 sm:mt-4 text-base sm:text-lg text-gray-500">
Built for modern engineering teams who want simplicity without compromising on power.
</p>
</div>
<div class="grid sm:grid-cols-2 lg:grid-cols-3 gap-x-8 lg:gap-x-12 gap-y-10 sm:gap-y-16">
<div>
<div class="w-10 h-10 rounded-lg bg-indigo-600 flex items-center justify-center mb-4">
<svg class="h-5 w-5 text-white" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6A2.25 2.25 0 016 3.75h2.25A2.25 2.25 0 0110.5 6v2.25a2.25 2.25 0 01-2.25 2.25H6a2.25 2.25 0 01-2.25-2.25V6zM3.75 15.75A2.25 2.25 0 016 13.5h2.25a2.25 2.25 0 012.25 2.25V18a2.25 2.25 0 01-2.25 2.25H6A2.25 2.25 0 013.75 18v-2.25zM13.5 6a2.25 2.25 0 012.25-2.25H18A2.25 2.25 0 0120.25 6v2.25A2.25 2.25 0 0118 10.5h-2.25a2.25 2.25 0 01-2.25-2.25V6zM13.5 15.75a2.25 2.25 0 012.25-2.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-2.25A2.25 2.25 0 0113.5 18v-2.25z"></path>
</svg>
</div>
<h3 class="font-semibold text-gray-900 mb-2">All-in-one platform</h3>
<p class="text-sm text-gray-500 leading-relaxed">
Replace StatusPage.io, PagerDuty, Datadog, and Sentry with one unified platform. One dashboard, one bill, one vendor.
</p>
</div>
<div>
<div class="w-10 h-10 rounded-lg bg-indigo-600 flex items-center justify-center mb-4">
<svg class="h-5 w-5 text-white" fill="currentColor" viewBox="0 0 24 24">
<path fill-rule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clip-rule="evenodd" />
</svg>
</div>
<h3 class="font-semibold text-gray-900 mb-2">Open source</h3>
<p class="text-sm text-gray-500 leading-relaxed">
Self-host on your infrastructure or use our managed cloud. Full transparency, no vendor lock-in, and your data stays yours.
</p>
</div>
<div>
<div class="w-10 h-10 rounded-lg bg-indigo-600 flex items-center justify-center mb-4">
<svg class="h-5 w-5 text-white" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M9 12.75L11.25 15 15 9.75m-3-7.036A11.959 11.959 0 013.598 6 11.99 11.99 0 003 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285z"></path>
</svg>
</div>
<h3 class="font-semibold text-gray-900 mb-2">Enterprise ready</h3>
<p class="text-sm text-gray-500 leading-relaxed">
SOC 2 Type II, ISO 27001, HIPAA, and GDPR compliant. SSO, SAML, SCIM, custom data residency, and dedicated support.
</p>
</div>
<div>
<div class="w-10 h-10 rounded-lg bg-indigo-600 flex items-center justify-center mb-4">
<svg class="h-5 w-5 text-white" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09z"></path>
</svg>
</div>
<h3 class="font-semibold text-gray-900 mb-2">AI-powered remediation</h3>
<p class="text-sm text-gray-500 leading-relaxed">
Our AI copilot automatically identifies root causes and creates pull requests to fix issues in your codebase.
</p>
</div>
<div>
<div class="w-10 h-10 rounded-lg bg-indigo-600 flex items-center justify-center mb-4">
<svg class="h-5 w-5 text-white" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M7.5 21L3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5"></path>
</svg>
</div>
<h3 class="font-semibold text-gray-900 mb-2">OpenTelemetry native</h3>
<p class="text-sm text-gray-500 leading-relaxed">
Built on open standards. Ingest traces, metrics, and logs from any source without proprietary agents or SDKs.
</p>
</div>
<div>
<div class="w-10 h-10 rounded-lg bg-indigo-600 flex items-center justify-center mb-4">
<svg class="h-5 w-5 text-white" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 6v12m-3-2.818l.879.659c1.171.879 3.07.879 4.242 0 1.172-.879 1.172-2.303 0-3.182C13.536 12.219 12.768 12 12 12c-.725 0-1.45-.22-2.003-.659-1.106-.879-1.106-2.303 0-3.182s2.9-.879 4.006 0l.415.33M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
</svg>
</div>
<h3 class="font-semibold text-gray-900 mb-2">Predictable pricing</h3>
<p class="text-sm text-gray-500 leading-relaxed">
No surprise bills. Simple, transparent pricing based on your needs. Free tier available for small teams.
</p>
</div>
</div>
</div>
</section>
<!-- Testimonials -->
<section class="py-16 sm:py-20 lg:py-28 bg-gray-50 border-t border-gray-100">
<div class="mx-auto max-w-7xl px-6 lg:px-8">
<div class="max-w-2xl mb-10 sm:mb-16">
<h2 class="text-2xl sm:text-3xl font-semibold tracking-tight text-gray-900">
What our customers say
</h2>
</div>
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-4 sm:gap-6 lg:gap-8">
<div class="bg-white rounded-xl p-5 sm:p-8 border border-gray-200">
<blockquote>
<p class="text-sm sm:text-base text-gray-700 leading-relaxed">
"OneUptime replaced three separate tools for us. Having everything unified has cut our incident response time in half and saved us over $50k annually."
</p>
</blockquote>
<div class="mt-4 sm:mt-6 pt-4 sm:pt-6 border-t border-gray-100">
<p class="font-medium text-gray-900 text-sm sm:text-base">Engineering Lead</p>
<p class="text-xs sm:text-sm text-gray-500">Fortune 500 Technology Company</p>
</div>
</div>
<div class="bg-white rounded-xl p-5 sm:p-8 border border-gray-200">
<blockquote>
<p class="text-sm sm:text-base text-gray-700 leading-relaxed">
"The AI copilot is a game changer. It automatically fixed a memory leak that had been plaguing us for weeks. Just created a PR and we merged it."
</p>
</blockquote>
<div class="mt-4 sm:mt-6 pt-4 sm:pt-6 border-t border-gray-100">
<p class="font-medium text-gray-900 text-sm sm:text-base">Senior SRE</p>
<p class="text-xs sm:text-sm text-gray-500">Series B Startup</p>
</div>
</div>
<div class="bg-white rounded-xl p-5 sm:p-8 border border-gray-200">
<blockquote>
<p class="text-sm sm:text-base text-gray-700 leading-relaxed">
"We self-host OneUptime in our private cloud. Having full control over our observability data while getting enterprise features is exactly what we needed."
</p>
</blockquote>
<div class="mt-4 sm:mt-6 pt-4 sm:pt-6 border-t border-gray-100">
<p class="font-medium text-gray-900 text-sm sm:text-base">VP of Engineering</p>
<p class="text-xs sm:text-sm text-gray-500">Healthcare SaaS Company</p>
</div>
</div>
</div>
<p class="mt-10 text-center text-sm text-gray-500 flex items-center justify-center gap-2">
<svg class="h-5 w-5 text-gray-400" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M20.25 8.511c.884.284 1.5 1.128 1.5 2.097v4.286c0 1.136-.847 2.1-1.98 2.193-.34.027-.68.052-1.02.072v3.091l-3-3c-1.354 0-2.694-.055-4.02-.163a2.115 2.115 0 01-.825-.242m9.345-8.334a2.126 2.126 0 00-.476-.095 48.64 48.64 0 00-8.048 0c-1.131.094-1.976 1.057-1.976 2.192v4.286c0 .837.46 1.58 1.155 1.951m9.345-8.334V6.637c0-1.621-1.152-3.026-2.76-3.235A48.455 48.455 0 0011.25 3c-2.115 0-4.198.137-6.24.402-1.608.209-2.76 1.614-2.76 3.235v6.226c0 1.621 1.152 3.026 2.76 3.235.577.075 1.157.14 1.74.194V21l4.155-4.155"></path>
</svg>
Want to speak with one of our customers? <a href="mailto:sales@oneuptime.com" class="text-indigo-600 hover:text-indigo-700 font-medium">Contact us</a> to arrange a reference call.
</p>
</div>
</section>
<!-- Security & Compliance -->
<section class="py-16 sm:py-24 lg:py-32 border-t border-gray-100 relative overflow-hidden">
<!-- Subtle background -->
<div class="absolute inset-0 -z-10 bg-gradient-to-b from-gray-50 to-white"></div>
<div class="absolute top-0 left-1/2 -translate-x-1/2 -z-10 w-[800px] h-[400px] bg-gradient-to-b from-indigo-50/50 to-transparent rounded-full blur-3xl"></div>
<div class="mx-auto max-w-7xl px-6 lg:px-8">
<!-- Header -->
<div class="text-center max-w-3xl mx-auto mb-10 sm:mb-16 lg:mb-20">
<h2 class="text-2xl sm:text-3xl lg:text-4xl font-semibold tracking-tight text-gray-900">
Enterprise-grade security & compliance
</h2>
<p class="mt-3 sm:mt-4 text-base sm:text-lg text-gray-500 leading-relaxed">
Your data deserves the highest level of protection. We maintain rigorous security standards and compliance certifications trusted by Fortune 500 companies.
</p>
</div>
<!-- Compliance Certifications - Clean grid -->
<div class="grid grid-cols-2 xs:grid-cols-2 sm:grid-cols-3 lg:grid-cols-6 gap-2 sm:gap-3 lg:gap-4 mb-12 sm:mb-20">
<!-- SOC 2 Type II -->
<a href="/legal/soc-2" class="group bg-white rounded-xl sm:rounded-2xl p-4 sm:p-6 ring-1 ring-gray-200 hover:ring-gray-300 hover:shadow-xl hover:-translate-y-1 transition-all duration-300 text-center block">
<div class="w-10 h-10 sm:w-12 sm:h-12 rounded-lg sm:rounded-xl bg-gray-900 flex items-center justify-center mx-auto mb-3 sm:mb-4">
<svg class="h-6 w-6 text-white" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M9 12.75L11.25 15 15 9.75m-3-7.036A11.959 11.959 0 013.598 6 11.99 11.99 0 003 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285z"></path>
</svg>
</div>
<p class="font-semibold text-gray-900 text-sm">SOC 2 Type II</p>
<p class="text-xs text-gray-500 mt-1">Security & availability</p>
</a>
<!-- ISO 27001 -->
<a href="/legal/iso-27001" class="group bg-white rounded-xl sm:rounded-2xl p-4 sm:p-6 ring-1 ring-gray-200 hover:ring-gray-300 hover:shadow-xl hover:-translate-y-1 transition-all duration-300 text-center block">
<div class="w-10 h-10 sm:w-12 sm:h-12 rounded-lg sm:rounded-xl bg-gray-900 flex items-center justify-center mx-auto mb-3 sm:mb-4">
<svg class="h-6 w-6 text-white" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 21a9.004 9.004 0 008.716-6.747M12 21a9.004 9.004 0 01-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 017.843 4.582M12 3a8.997 8.997 0 00-7.843 4.582m15.686 0A11.953 11.953 0 0112 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0121 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0112 16.5a17.92 17.92 0 01-8.716-2.247m0 0A9.015 9.015 0 013 12c0-1.605.42-3.113 1.157-4.418"></path>
</svg>
</div>
<p class="font-semibold text-gray-900 text-sm">ISO 27001</p>
<p class="text-xs text-gray-500 mt-1">Information security</p>
</a>
<!-- HIPAA -->
<a href="/legal/hipaa" class="group bg-white rounded-xl sm:rounded-2xl p-4 sm:p-6 ring-1 ring-gray-200 hover:ring-gray-300 hover:shadow-xl hover:-translate-y-1 transition-all duration-300 text-center block">
<div class="w-10 h-10 sm:w-12 sm:h-12 rounded-lg sm:rounded-xl bg-gray-900 flex items-center justify-center mx-auto mb-3 sm:mb-4">
<svg class="h-6 w-6 text-white" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12z"></path>
</svg>
</div>
<p class="font-semibold text-gray-900 text-sm">HIPAA</p>
<p class="text-xs text-gray-500 mt-1">Healthcare compliance</p>
</a>
<!-- GDPR -->
<a href="/legal/gdpr" class="group bg-white rounded-xl sm:rounded-2xl p-4 sm:p-6 ring-1 ring-gray-200 hover:ring-gray-300 hover:shadow-xl hover:-translate-y-1 transition-all duration-300 text-center block">
<div class="w-10 h-10 sm:w-12 sm:h-12 rounded-lg sm:rounded-xl bg-gray-900 flex items-center justify-center mx-auto mb-3 sm:mb-4">
<svg class="h-6 w-6 text-white" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M15 19.128a9.38 9.38 0 002.625.372 9.337 9.337 0 004.121-.952 4.125 4.125 0 00-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 018.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0111.964-3.07M12 6.375a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zm8.25 2.25a2.625 2.625 0 11-5.25 0 2.625 2.625 0 015.25 0z"></path>
</svg>
</div>
<p class="font-semibold text-gray-900 text-sm">GDPR</p>
<p class="text-xs text-gray-500 mt-1">Data privacy</p>
</a>
<!-- PCI DSS -->
<a href="/legal/pci" class="group bg-white rounded-xl sm:rounded-2xl p-4 sm:p-6 ring-1 ring-gray-200 hover:ring-gray-300 hover:shadow-xl hover:-translate-y-1 transition-all duration-300 text-center block">
<div class="w-10 h-10 sm:w-12 sm:h-12 rounded-lg sm:rounded-xl bg-gray-900 flex items-center justify-center mx-auto mb-3 sm:mb-4">
<svg class="h-6 w-6 text-white" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M2.25 8.25h19.5M2.25 9h19.5m-16.5 5.25h6m-6 2.25h3m-3.75 3h15a2.25 2.25 0 002.25-2.25V6.75A2.25 2.25 0 0019.5 4.5h-15a2.25 2.25 0 00-2.25 2.25v10.5A2.25 2.25 0 004.5 19.5z"></path>
</svg>
</div>
<p class="font-semibold text-gray-900 text-sm">PCI DSS</p>
<p class="text-xs text-gray-500 mt-1">Payment security</p>
</a>
<!-- SOC 3 -->
<a href="/legal/soc-3" class="group bg-white rounded-xl sm:rounded-2xl p-4 sm:p-6 ring-1 ring-gray-200 hover:ring-gray-300 hover:shadow-xl hover:-translate-y-1 transition-all duration-300 text-center block">
<div class="w-10 h-10 sm:w-12 sm:h-12 rounded-lg sm:rounded-xl bg-gray-900 flex items-center justify-center mx-auto mb-3 sm:mb-4">
<svg class="h-6 w-6 text-white" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z"></path>
</svg>
</div>
<p class="font-semibold text-gray-900 text-sm">SOC 3</p>
<p class="text-xs text-gray-500 mt-1">Public trust report</p>
</a>
</div>
<!-- Security Features - Grid layout for proper alignment -->
<div class="bg-white rounded-2xl sm:rounded-3xl ring-1 ring-gray-200 p-5 sm:p-8 lg:p-12">
<div class="grid sm:grid-cols-2 gap-x-8 lg:gap-x-12 gap-y-6 sm:gap-y-8">
<!-- Row 1 -->
<div class="flex gap-3 sm:gap-5">
<div class="flex-shrink-0 w-10 h-10 sm:w-12 sm:h-12 rounded-lg sm:rounded-xl bg-gray-100 flex items-center justify-center">
<svg class="h-5 w-5 sm:h-6 sm:w-6 text-gray-900" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M16.5 10.5V6.75a4.5 4.5 0 10-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H6.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z"></path>
</svg>
</div>
<div>
<p class="font-semibold text-gray-900 text-sm sm:text-base">End-to-end encryption</p>
<p class="text-xs sm:text-sm text-gray-500 mt-1 leading-relaxed">AES-256 encryption protects your data at rest and TLS 1.3 secures data in transit.</p>
</div>
</div>
<div class="flex gap-3 sm:gap-5">
<div class="flex-shrink-0 w-10 h-10 sm:w-12 sm:h-12 rounded-lg sm:rounded-xl bg-gray-100 flex items-center justify-center">
<svg class="h-5 w-5 sm:h-6 sm:w-6 text-gray-900" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 002.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 00-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75 2.25 2.25 0 00-.1-.664m-5.8 0A2.251 2.251 0 0113.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25zM6.75 12h.008v.008H6.75V12zm0 3h.008v.008H6.75V15zm0 3h.008v.008H6.75V18z"></path>
</svg>
</div>
<div>
<p class="font-semibold text-gray-900 text-sm sm:text-base">Complete audit logs</p>
<p class="text-xs sm:text-sm text-gray-500 mt-1 leading-relaxed">Every action is logged with timestamps, user info, and IP addresses.</p>
</div>
</div>
<!-- Row 2 -->
<div class="flex gap-3 sm:gap-5">
<div class="flex-shrink-0 w-10 h-10 sm:w-12 sm:h-12 rounded-lg sm:rounded-xl bg-gray-100 flex items-center justify-center">
<svg class="h-5 w-5 sm:h-6 sm:w-6 text-gray-900" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 5.25a3 3 0 013 3m3 0a6 6 0 01-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1121.75 8.25z"></path>
</svg>
</div>
<div>
<p class="font-semibold text-gray-900 text-sm sm:text-base">SSO, SAML & SCIM</p>
<p class="text-xs sm:text-sm text-gray-500 mt-1 leading-relaxed">Integrate with Okta, Azure AD, Google Workspace, and other identity providers.</p>
</div>
</div>
<div class="flex gap-3 sm:gap-5">
<div class="flex-shrink-0 w-10 h-10 sm:w-12 sm:h-12 rounded-lg sm:rounded-xl bg-gray-100 flex items-center justify-center">
<svg class="h-5 w-5 sm:h-6 sm:w-6 text-gray-900" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M18 18.72a9.094 9.094 0 003.741-.479 3 3 0 00-4.682-2.72m.94 3.198l.001.031c0 .225-.012.447-.037.666A11.944 11.944 0 0112 21c-2.17 0-4.207-.576-5.963-1.584A6.062 6.062 0 016 18.719m12 0a5.971 5.971 0 00-.941-3.197m0 0A5.995 5.995 0 0012 12.75a5.995 5.995 0 00-5.058 2.772m0 0a3 3 0 00-4.681 2.72 8.986 8.986 0 003.74.477m.94-3.197a5.971 5.971 0 00-.94 3.197M15 6.75a3 3 0 11-6 0 3 3 0 016 0zm6 3a2.25 2.25 0 11-4.5 0 2.25 2.25 0 014.5 0zm-13.5 0a2.25 2.25 0 11-4.5 0 2.25 2.25 0 014.5 0z"></path>
</svg>
</div>
<div>
<p class="font-semibold text-gray-900 text-sm sm:text-base">Role-based access control</p>
<p class="text-xs sm:text-sm text-gray-500 mt-1 leading-relaxed">Granular permissions let you control exactly who can see and do what.</p>
</div>
</div>
<!-- Row 3 -->
<div class="flex gap-3 sm:gap-5">
<div class="flex-shrink-0 w-10 h-10 sm:w-12 sm:h-12 rounded-lg sm:rounded-xl bg-gray-100 flex items-center justify-center">
<svg class="h-5 w-5 sm:h-6 sm:w-6 text-gray-900" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125"></path>
</svg>
</div>
<div>
<p class="font-semibold text-gray-900 text-sm sm:text-base">Custom data residency</p>
<p class="text-xs sm:text-sm text-gray-500 mt-1 leading-relaxed">Choose where your data lives - US, EU, APAC, or your own infrastructure.</p>
</div>
</div>
<div class="flex gap-3 sm:gap-5">
<div class="flex-shrink-0 w-10 h-10 sm:w-12 sm:h-12 rounded-lg sm:rounded-xl bg-gray-100 flex items-center justify-center">
<svg class="h-5 w-5 sm:h-6 sm:w-6 text-gray-900" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M5.25 14.25h13.5m-13.5 0a3 3 0 01-3-3m3 3a3 3 0 100 6h13.5a3 3 0 100-6m-16.5-3a3 3 0 013-3h13.5a3 3 0 013 3m-19.5 0a4.5 4.5 0 01.9-2.7L5.737 5.1a3.375 3.375 0 012.7-1.35h7.126c1.062 0 2.062.5 2.7 1.35l2.587 3.45a4.5 4.5 0 01.9 2.7m0 0a3 3 0 01-3 3m0 3h.008v.008h-.008v-.008zm0-6h.008v.008h-.008v-.008zm-3 6h.008v.008h-.008v-.008zm0-6h.008v.008h-.008v-.008z"></path>
</svg>
</div>
<div>
<p class="font-semibold text-gray-900 text-sm sm:text-base">Self-hosted option</p>
<p class="text-xs sm:text-sm text-gray-500 mt-1 leading-relaxed">Deploy on your own infrastructure with Docker, Kubernetes, or Helm.</p>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- FAQ -->
<section class="py-16 sm:py-20 lg:py-28 border-t border-gray-100">
<div class="mx-auto max-w-3xl px-6 lg:px-8">
<div class="text-center mb-8 sm:mb-12">
<p class="text-sm font-medium text-indigo-600 mb-2 sm:mb-3">FAQ</p>
<h2 class="text-2xl sm:text-3xl font-semibold tracking-tight text-gray-900">
Common questions
</h2>
</div>
<div class="divide-y divide-gray-200">
<!-- FAQ Item 1 -->
<div class="faq-item">
<button class="faq-trigger w-full flex items-center justify-between py-5 text-left group" onclick="toggleFaq(this)">
<span class="font-medium text-gray-900 group-hover:text-indigo-600 transition-colors pr-8">What security certifications does OneUptime have?</span>
<span class="faq-icon flex-shrink-0 w-8 h-8 rounded-full bg-gray-100 group-hover:bg-indigo-50 flex items-center justify-center transition-all">
<svg class="w-4 h-4 text-gray-500 group-hover:text-indigo-600 transition-transform" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 6v12m6-6H6"></path>
</svg>
</span>
</button>
<div class="faq-content overflow-hidden max-h-0 transition-all duration-300 ease-out">
<p class="pb-5 text-gray-500 text-sm leading-relaxed">
OneUptime is SOC 2 Type II, ISO 27001, HIPAA, GDPR, and PCI DSS compliant. We undergo annual third-party security audits and can provide detailed security documentation, penetration test reports, and vendor security questionnaires upon request.
</p>
</div>
</div>
<!-- FAQ Item 2 -->
<div class="faq-item">
<button class="faq-trigger w-full flex items-center justify-between py-5 text-left group" onclick="toggleFaq(this)">
<span class="font-medium text-gray-900 group-hover:text-indigo-600 transition-colors pr-8">Can we deploy OneUptime in our own cloud or on-premises?</span>
<span class="faq-icon flex-shrink-0 w-8 h-8 rounded-full bg-gray-100 group-hover:bg-indigo-50 flex items-center justify-center transition-all">
<svg class="w-4 h-4 text-gray-500 group-hover:text-indigo-600 transition-transform" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 6v12m6-6H6"></path>
</svg>
</span>
</button>
<div class="faq-content overflow-hidden max-h-0 transition-all duration-300 ease-out">
<p class="pb-5 text-gray-500 text-sm leading-relaxed">
Yes. OneUptime is fully open source and can be deployed on your own infrastructure using Docker, Kubernetes, or Helm charts. Enterprise customers get dedicated deployment support, custom SLAs, and the option to deploy in air-gapped environments. We also offer managed hosting with custom data residency in US, EU, or APAC regions.
</p>
</div>
</div>
<!-- FAQ Item 3 -->
<div class="faq-item">
<button class="faq-trigger w-full flex items-center justify-between py-5 text-left group" onclick="toggleFaq(this)">
<span class="font-medium text-gray-900 group-hover:text-indigo-600 transition-colors pr-8">Do you support SSO and enterprise identity providers?</span>
<span class="faq-icon flex-shrink-0 w-8 h-8 rounded-full bg-gray-100 group-hover:bg-indigo-50 flex items-center justify-center transition-all">
<svg class="w-4 h-4 text-gray-500 group-hover:text-indigo-600 transition-transform" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 6v12m6-6H6"></path>
</svg>
</span>
</button>
<div class="faq-content overflow-hidden max-h-0 transition-all duration-300 ease-out">
<p class="pb-5 text-gray-500 text-sm leading-relaxed">
Yes. We support SAML 2.0, OIDC, and SCIM for automated user provisioning. OneUptime integrates with Okta, Azure AD, Google Workspace, OneLogin, Ping Identity, and other enterprise identity providers. Role-based access control (RBAC) allows granular permissions management across teams.
</p>
</div>
</div>
<!-- FAQ Item 4 -->
<div class="faq-item">
<button class="faq-trigger w-full flex items-center justify-between py-5 text-left group" onclick="toggleFaq(this)">
<span class="font-medium text-gray-900 group-hover:text-indigo-600 transition-colors pr-8">What SLAs do you offer for enterprise customers?</span>
<span class="faq-icon flex-shrink-0 w-8 h-8 rounded-full bg-gray-100 group-hover:bg-indigo-50 flex items-center justify-center transition-all">
<svg class="w-4 h-4 text-gray-500 group-hover:text-indigo-600 transition-transform" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 6v12m6-6H6"></path>
</svg>
</span>
</button>
<div class="faq-content overflow-hidden max-h-0 transition-all duration-300 ease-out">
<p class="pb-5 text-gray-500 text-sm leading-relaxed">
Enterprise plans include 99.99% uptime SLA with financial credits, 24/7 priority support with dedicated account managers, and guaranteed response times (15 minutes for critical issues). We also offer custom SLAs tailored to your organization's requirements.
</p>
</div>
</div>
<!-- FAQ Item 5 -->
<div class="faq-item">
<button class="faq-trigger w-full flex items-center justify-between py-5 text-left group" onclick="toggleFaq(this)">
<span class="font-medium text-gray-900 group-hover:text-indigo-600 transition-colors pr-8">How do you handle data privacy and retention?</span>
<span class="faq-icon flex-shrink-0 w-8 h-8 rounded-full bg-gray-100 group-hover:bg-indigo-50 flex items-center justify-center transition-all">
<svg class="w-4 h-4 text-gray-500 group-hover:text-indigo-600 transition-transform" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 6v12m6-6H6"></path>
</svg>
</span>
</button>
<div class="faq-content overflow-hidden max-h-0 transition-all duration-300 ease-out">
<p class="pb-5 text-gray-500 text-sm leading-relaxed">
All data is encrypted at rest (AES-256) and in transit (TLS 1.3). Enterprise customers can configure custom data retention policies, choose their data residency region, and request data export or deletion at any time. We sign DPAs, BAAs, and custom contractual agreements as needed.
</p>
</div>
</div>
<!-- FAQ Item 6 -->
<div class="faq-item">
<button class="faq-trigger w-full flex items-center justify-between py-5 text-left group" onclick="toggleFaq(this)">
<span class="font-medium text-gray-900 group-hover:text-indigo-600 transition-colors pr-8">Can you help us migrate from our existing tools?</span>
<span class="faq-icon flex-shrink-0 w-8 h-8 rounded-full bg-gray-100 group-hover:bg-indigo-50 flex items-center justify-center transition-all">
<svg class="w-4 h-4 text-gray-500 group-hover:text-indigo-600 transition-transform" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 6v12m6-6H6"></path>
</svg>
</span>
</button>
<div class="faq-content overflow-hidden max-h-0 transition-all duration-300 ease-out">
<p class="pb-5 text-gray-500 text-sm leading-relaxed">
Yes. Our enterprise team provides white-glove migration support to help you transition from tools like PagerDuty, Datadog, Splunk, New Relic, or StatusPage. We'll help import your existing monitors, alert rules, on-call schedules, and historical data with zero downtime.
</p>
</div>
</div>
<!-- FAQ Item 7 -->
<div class="faq-item">
<button class="faq-trigger w-full flex items-center justify-between py-5 text-left group" onclick="toggleFaq(this)">
<span class="font-medium text-gray-900 group-hover:text-indigo-600 transition-colors pr-8">How does enterprise pricing work?</span>
<span class="faq-icon flex-shrink-0 w-8 h-8 rounded-full bg-gray-100 group-hover:bg-indigo-50 flex items-center justify-center transition-all">
<svg class="w-4 h-4 text-gray-500 group-hover:text-indigo-600 transition-transform" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 6v12m6-6H6"></path>
</svg>
</span>
</button>
<div class="faq-content overflow-hidden max-h-0 transition-all duration-300 ease-out">
<p class="pb-5 text-gray-500 text-sm leading-relaxed">
Enterprise pricing is based on your usage and requirements. We offer annual contracts with volume discounts, custom invoicing (NET 30/60/90), and flexible terms. Unlike competitors, we don't charge per-host fees that can lead to surprise bills. Book a demo to get a custom quote for your organization.
</p>
</div>
</div>
<!-- FAQ Item 8 -->
<div class="faq-item">
<button class="faq-trigger w-full flex items-center justify-between py-5 text-left group" onclick="toggleFaq(this)">
<span class="font-medium text-gray-900 group-hover:text-indigo-600 transition-colors pr-8">What scale can OneUptime handle?</span>
<span class="faq-icon flex-shrink-0 w-8 h-8 rounded-full bg-gray-100 group-hover:bg-indigo-50 flex items-center justify-center transition-all">
<svg class="w-4 h-4 text-gray-500 group-hover:text-indigo-600 transition-transform" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 6v12m6-6H6"></path>
</svg>
</span>
</button>
<div class="faq-content overflow-hidden max-h-0 transition-all duration-300 ease-out">
<p class="pb-5 text-gray-500 text-sm leading-relaxed">
OneUptime is built to handle enterprise scale. Our platform processes billions of data points daily, supports thousands of concurrent monitors, and handles millions of log events per second. Fortune 500 companies trust us to monitor their most critical infrastructure.
</p>
</div>
</div>
</div>
<div class="mt-10 text-center">
<p class="text-sm text-gray-500">
Have more questions? <a href="mailto:support@oneuptime.com" class="text-indigo-600 hover:text-indigo-700 font-medium">Contact us</a>
</p>
</div>
</div>
</section>
<script>
function toggleFaq(button) {
const item = button.closest('.faq-item');
const content = item.querySelector('.faq-content');
const icon = button.querySelector('.faq-icon svg');
const isOpen = item.classList.contains('open');
// Close all other items
document.querySelectorAll('.faq-item.open').forEach(openItem => {
if (openItem !== item) {
openItem.classList.remove('open');
openItem.querySelector('.faq-content').style.maxHeight = '0';
openItem.querySelector('.faq-icon svg').style.transform = 'rotate(0deg)';
}
});
// Toggle current item
if (isOpen) {
item.classList.remove('open');
content.style.maxHeight = '0';
icon.style.transform = 'rotate(0deg)';
} else {
item.classList.add('open');
content.style.maxHeight = content.scrollHeight + 'px';
icon.style.transform = 'rotate(45deg)';
}
}
</script>
<!-- Final CTA -->
<section class="py-16 sm:py-20 lg:py-28 border-t border-gray-100">
<div class="mx-auto max-w-3xl px-6 lg:px-8 text-center">
<h2 class="text-2xl sm:text-3xl lg:text-4xl font-semibold tracking-tight text-gray-900">
Ready to get started?
</h2>
<p class="mt-3 sm:mt-4 text-base sm:text-lg text-gray-500">
Book a demo with our team or start using OneUptime for free today.
</p>
<div class="mt-10 flex flex-col sm:flex-row items-center justify-center gap-4">
<a href="#book-demo" class="w-full sm:w-auto inline-flex items-center justify-center rounded-lg bg-indigo-600 px-6 py-3 text-sm font-medium text-white hover:bg-indigo-700 transition-colors">
Schedule a demo
</a>
<a href="/accounts/register" class="w-full sm:w-auto inline-flex items-center justify-center rounded-lg bg-white px-6 py-3 text-sm font-medium text-gray-700 border border-gray-200 hover:bg-gray-50 transition-colors">
Start free
</a>
</div>
<p class="mt-6 text-sm text-gray-400">
No credit card required. Free tier available.
</p>
</div>
</section>
</main>
<%- include('footer') -%>
<%- include('footer') -%>
</body>
</html>
</html>

View File

@@ -1,185 +1,206 @@
<%- include('cookie-banner') -%>
<footer class="bg-white" aria-labelledby="footer-heading">
<footer class="bg-gradient-to-b from-slate-50 to-white border-t border-slate-200/60" aria-labelledby="footer-heading">
<h2 id="footer-heading" class="sr-only">Footer</h2>
<div class="mx-auto max-w-7xl px-6 pb-8 pt-16 sm:pt-24 lg:px-8 lg:pt-32">
<div class="xl:grid xl:grid-cols-3 xl:gap-8">
<div class="space-y-8">
<img class="h-20 -ml-2 -mb-5 -mt-5" src="/img/logo-gray.svg" alt="OneUptime">
<p class="text-sm leading-6 text-gray-600">OneUptime is the complete observability platform. OneUptime is
open-source and always will be.</p>
<div class="flex space-x-6">
<a href="https://x.com/oneuptimehq" target="_blank" class="text-gray-400 hover:text-gray-500">
<span class="sr-only">X</span>
<svg class="h-5 w-5 mt-0.5" fill="currentColor" viewBox="0 0 220 200" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M173.263 0H206.998L133.297 84.718L220 200H152.112L98.9403 130.082L38.0995 200H4.34432L83.1743 109.385L0 0H69.6111L117.674 63.9077L173.263 0ZM161.423 179.692H180.116L59.4539 19.241H39.3946L161.423 179.692Z"/>
<!-- CTA Section -->
<div class="border-b border-slate-200/60 bg-gradient-to-r from-slate-50 via-indigo-50/30 to-slate-50">
<div class="mx-auto max-w-7xl px-6 py-14 lg:px-8">
<div class="flex flex-col lg:flex-row lg:items-center lg:justify-between gap-10">
<div class="max-w-2xl">
<div class="flex items-center gap-3 mb-3">
<div class="flex h-10 w-10 items-center justify-center rounded-xl bg-slate-900 shadow-sm">
<svg class="h-5 w-5 text-white" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M6.429 9.75L2.25 12l4.179 2.25m0-4.5l5.571 3 5.571-3m-11.142 0L2.25 7.5 12 2.25l9.75 5.25-4.179 2.25m0 0L21.75 12l-4.179 2.25m0 0l4.179 2.25L12 21.75 2.25 16.5l4.179-2.25m11.142 0l-5.571 3-5.571-3" />
</svg>
</div>
<span class="text-sm font-medium text-slate-900">Open Source Observability</span>
</div>
<h3 class="text-2xl font-semibold text-slate-900 tracking-tight">Build reliable systems with confidence</h3>
<p class="mt-3 text-base text-slate-600">Join thousands of developers using OneUptime to monitor, debug, and optimize their infrastructure, stack, and apps.</p>
</div>
<div class="flex flex-col sm:flex-row gap-4 sm:items-center">
<a href="/blog" class="inline-flex items-center justify-center gap-2 rounded-full bg-white px-6 py-3 text-sm font-semibold text-slate-900 shadow-sm ring-1 ring-slate-200 hover:bg-slate-50 hover:ring-slate-300 transition-all duration-200">
<svg class="h-4 w-4 text-slate-500" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 6.042A8.967 8.967 0 006 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 016 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 016-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0018 18a8.967 8.967 0 00-6 2.292m0-14.25v14.25" />
</svg>
Read Blog
</a>
<a href="https://github.com/oneuptime/oneuptime" target="_blank" class="inline-flex items-center justify-center gap-2 rounded-full bg-slate-900 px-6 py-3 text-sm font-semibold text-white shadow-sm hover:bg-slate-800 transition-all duration-200 hover:shadow-md">
<svg class="h-4 w-4" fill="currentColor" viewBox="0 0 24 24">
<path fill-rule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clip-rule="evenodd" />
</svg>
Star on GitHub
</a>
</div>
</div>
</div>
</div>
<a href="https://github.com/oneuptime" target="_blank" class="text-gray-400 hover:text-gray-500">
<!-- Main Footer Content -->
<div class="mx-auto max-w-7xl px-6 py-16 lg:px-8">
<div class="xl:grid xl:grid-cols-3 xl:gap-12">
<!-- Brand Section -->
<div class="space-y-6">
<a href="/" class="inline-block">
<img class="h-8 w-auto" src="/img/4-gray.svg" alt="OneUptime">
</a>
<p class="text-sm text-slate-600 leading-relaxed max-w-xs">
The complete open-source observability platform. Monitor, debug, and improve your entire stack in one place.
</p>
<!-- Social Links -->
<div class="flex items-center gap-4">
<a href="https://github.com/oneuptime/oneuptime" target="_blank"
class="group flex items-center justify-center w-10 h-10 rounded-full bg-slate-100 text-slate-600 hover:bg-slate-900 hover:text-white transition-all duration-200 hover:scale-105">
<span class="sr-only">GitHub</span>
<svg class="h-6 w-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path fill-rule="evenodd"
d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
clip-rule="evenodd" />
<svg class="h-5 w-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path fill-rule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clip-rule="evenodd" />
</svg>
</a>
<a href="https://www.reddit.com/r/oneuptimehq/" target="_blank" class="text-gray-400 hover:text-gray-500">
<span class="sr-only">Reddit</span>
<svg class="mt-0.5 h-5 w-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path d="M14.238 15.348c.085.084.085.221 0 .306-.465.462-1.194.687-2.231.687l-.008-.002-.008.002c-1.036 0-1.766-.225-2.231-.688-.085-.084-.085-.221 0-.305.084-.084.222-.084.307 0 .379.377 1.008.561 1.924.561l.008.002.008-.002c.915 0 1.544-.184 1.924-.561.085-.084.223-.084.307 0zm-3.44-2.418c0-.507-.414-.919-.922-.919-.509 0-.923.412-.923.919 0 .506.414.918.923.918.508.001.922-.411.922-.918zm13.202-.93c0 6.627-5.373 12-12 12s-12-5.373-12-12 5.373-12 12-12 12 5.373 12 12zm-5-.129c0-.851-.695-1.543-1.55-1.543-.417 0-.795.167-1.074.435-1.056-.695-2.485-1.137-4.066-1.194l.865-2.724 2.343.549-.003.034c0 .696.569 1.262 1.268 1.262.699 0 1.267-.566 1.267-1.262s-.568-1.262-1.267-1.262c-.537 0-.994.335-1.179.804l-2.525-.592c-.11-.027-.223.037-.257.145l-.965 3.038c-1.656.02-3.155.466-4.258 1.181-.277-.255-.644-.415-1.05-.415-.854.001-1.549.693-1.549 1.544 0 .566.311 1.056.768 1.325-.03.164-.05.331-.05.5 0 2.281 2.805 4.137 6.253 4.137s6.253-1.856 6.253-4.137c0-.16-.017-.317-.044-.472.486-.261.82-.766.82-1.353zm-4.872.141c-.509 0-.922.412-.922.919 0 .506.414.918.922.918s.922-.412.922-.918c0-.507-.413-.919-.922-.919z"/>
<a href="https://x.com/oneuptimehq" target="_blank"
class="group flex items-center justify-center w-10 h-10 rounded-full bg-slate-100 text-slate-600 hover:bg-slate-900 hover:text-white transition-all duration-200 hover:scale-105">
<span class="sr-only">X</span>
<svg class="h-4 w-4" fill="currentColor" viewBox="0 0 220 200" aria-hidden="true">
<path d="M173.263 0H206.998L133.297 84.718L220 200H152.112L98.9403 130.082L38.0995 200H4.34432L83.1743 109.385L0 0H69.6111L117.674 63.9077L173.263 0ZM161.423 179.692H180.116L59.4539 19.241H39.3946L161.423 179.692Z"/>
</svg>
</a>
<a href="https://www.youtube.com/@OneUptimeHQ" class="text-gray-400 hover:text-gray-500">
<a href="https://www.youtube.com/@OneUptimeHQ" target="_blank"
class="group flex items-center justify-center w-10 h-10 rounded-full bg-slate-100 text-slate-600 hover:bg-red-600 hover:text-white transition-all duration-200 hover:scale-105">
<span class="sr-only">YouTube</span>
<svg class="h-7 w-7 -mt-0.5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<svg class="h-5 w-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path fill-rule="evenodd" d="M19.812 5.418c.861.23 1.538.907 1.768 1.768C21.998 8.746 22 12 22 12s0 3.255-.418 4.814a2.504 2.504 0 0 1-1.768 1.768c-1.56.419-7.814.419-7.814.419s-6.255 0-7.814-.419a2.505 2.505 0 0 1-1.768-1.768C2 15.255 2 12 2 12s0-3.255.417-4.814a2.507 2.507 0 0 1 1.768-1.768C5.744 5 11.998 5 11.998 5s6.255 0 7.814.418ZM15.194 12 10 15V9l5.194 3Z" clip-rule="evenodd" />
</svg>
</a>
<a href="https://www.reddit.com/r/oneuptimehq/" target="_blank"
class="group flex items-center justify-center w-10 h-10 rounded-full bg-slate-100 text-slate-600 hover:bg-orange-600 hover:text-white transition-all duration-200 hover:scale-105">
<span class="sr-only">Reddit</span>
<svg class="h-5 w-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path d="M14.238 15.348c.085.084.085.221 0 .306-.465.462-1.194.687-2.231.687l-.008-.002-.008.002c-1.036 0-1.766-.225-2.231-.688-.085-.084-.085-.221 0-.305.084-.084.222-.084.307 0 .379.377 1.008.561 1.924.561l.008.002.008-.002c.915 0 1.544-.184 1.924-.561.085-.084.223-.084.307 0zm-3.44-2.418c0-.507-.414-.919-.922-.919-.509 0-.923.412-.923.919 0 .506.414.918.923.918.508.001.922-.411.922-.918zm13.202-.93c0 6.627-5.373 12-12 12s-12-5.373-12-12 5.373-12 12-12 12 5.373 12 12zm-5-.129c0-.851-.695-1.543-1.55-1.543-.417 0-.795.167-1.074.435-1.056-.695-2.485-1.137-4.066-1.194l.865-2.724 2.343.549-.003.034c0 .696.569 1.262 1.268 1.262.699 0 1.267-.566 1.267-1.262s-.568-1.262-1.267-1.262c-.537 0-.994.335-1.179.804l-2.525-.592c-.11-.027-.223.037-.257.145l-.965 3.038c-1.656.02-3.155.466-4.258 1.181-.277-.255-.644-.415-1.05-.415-.854.001-1.549.693-1.549 1.544 0 .566.311 1.056.768 1.325-.03.164-.05.331-.05.5 0 2.281 2.805 4.137 6.253 4.137s6.253-1.856 6.253-4.137c0-.16-.017-.317-.044-.472.486-.261.82-.766.82-1.353zm-4.872.141c-.509 0-.922.412-.922.919 0 .506.414.918.922.918s.922-.412.922-.918c0-.507-.413-.919-.922-.919z"/>
</svg>
</a>
<a href="https://www.linkedin.com/company/oneuptime" target="_blank"
class="group flex items-center justify-center w-10 h-10 rounded-full bg-slate-100 text-slate-600 hover:bg-blue-700 hover:text-white transition-all duration-200 hover:scale-105">
<span class="sr-only">LinkedIn</span>
<svg class="h-5 w-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/>
</svg>
</a>
</div>
<!-- Trust Statement -->
<p class="text-sm text-slate-500 leading-relaxed pt-2">
Trusted by thousands of teams worldwide - from Fortune 500 enterprises to fast-growing startups.
</p>
</div>
<!-- Links Grid -->
<div class="mt-16 grid grid-cols-2 gap-8 xl:col-span-2 xl:mt-0">
<div class="md:grid md:grid-cols-2 md:gap-8">
<!-- Products Column -->
<div>
<h3 class="text-sm font-semibold leading-6 text-gray-900">Products</h3>
<ul role="list" class="mt-6 space-y-4">
<li>
<a href="/product/status-page" class="text-sm leading-6 text-gray-600 hover:text-gray-900">Status
Page</a>
</li>
<li>
<a href="/product/incident-management"
class="text-sm leading-6 text-gray-600 hover:text-gray-900">Incident Management</a>
</li>
<li>
<a href="/product/monitoring"
class="text-sm leading-6 text-gray-600 hover:text-gray-900">Monitoring</a>
</li>
<li>
<a href="/product/on-call" class="text-sm leading-6 text-gray-600 hover:text-gray-900">On-Call and
Alerts</a>
</li>
<li>
<a href="/product/workflows" class="text-sm leading-6 text-gray-600 hover:text-gray-900">Workflows</a>
</li>
<h3 class="text-sm font-semibold text-slate-900">Products</h3>
<ul role="list" class="mt-4 space-y-3">
<li><a href="/product/monitoring" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Uptime Monitoring</a></li>
<li><a href="/product/status-page" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Status Pages</a></li>
<li><a href="/product/incident-management" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Incident Management</a></li>
<li><a href="/product/on-call" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">On-Call & Alerts</a></li>
<li><a href="/product/logs-management" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Logs Management</a></li>
<li><a href="/product/apm" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">APM & Traces</a></li>
<li><a href="/product/workflows" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Workflows</a></li>
<li><a href="/product/ai-agent" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">AI Agent</a></li>
</ul>
</div>
<!-- Solutions Column -->
<div class="mt-10 md:mt-0">
<h3 class="text-sm font-semibold leading-6 text-gray-900">Enterprise</h3>
<ul role="list" class="mt-6 space-y-4">
<li>
<a href="/enterprise/overview"
class="text-sm leading-6 text-gray-600 hover:text-gray-900">Overview</a>
</li>
<li>
<a href="/enterprise/demo" class="text-sm leading-6 text-gray-600 hover:text-gray-900">Request
Demo</a>
</li>
<h3 class="text-sm font-semibold text-slate-900">Solutions</h3>
<ul role="list" class="mt-4 space-y-3">
<li><a href="/enterprise/overview" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Enterprise</a></li>
<li><a href="/enterprise/demo" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Request Demo</a></li>
<li><a href="/pricing" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Pricing</a></li>
<li><a href="/legal/data-residency" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Data Residency</a></li>
</ul>
<h3 class="text-sm font-semibold text-slate-900 mt-8">Compare</h3>
<ul role="list" class="mt-4 space-y-3">
<li><a href="/compare/pagerduty" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">vs PagerDuty</a></li>
<li><a href="/compare/statuspage.io" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">vs Statuspage</a></li>
<li><a href="/compare/incident.io" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">vs Incident.io</a></li>
<li><a href="/compare/pingdom" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">vs Pingdom</a></li>
</ul>
</div>
</div>
<div class="md:grid md:grid-cols-2 md:gap-8">
<!-- Resources Column -->
<div>
<h3 class="text-sm font-semibold leading-6 text-gray-900">Compare</h3>
<ul role="list" class="mt-6 space-y-4">
<li>
<a href="/compare/statuspage.io"
class="text-sm leading-6 text-gray-600 hover:text-gray-900">StatusPage.io</a>
</li>
<li>
<a href="/compare/incident.io"
class="text-sm leading-6 text-gray-600 hover:text-gray-900">Incident.io</a>
</li>
<li>
<a href="/compare/pagerduty" class="text-sm leading-6 text-gray-600 hover:text-gray-900">PagerDuty</a>
</li>
<li>
<a href="/compare/pingdom" class="text-sm leading-6 text-gray-600 hover:text-gray-900">Pingdom</a>
</li>
<h3 class="text-sm font-semibold text-slate-900">Resources</h3>
<ul role="list" class="mt-4 space-y-3">
<li><a href="/docs" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Documentation</a></li>
<li><a href="/reference" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">API Reference</a></li>
<li><a href="/blog" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Blog</a></li>
<li><a href="/support" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Help & Support</a></li>
<li><a href="https://github.com/oneuptime/oneuptime" target="_blank" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">GitHub</a></li>
<li><a href="https://github.com/oneuptime/oneuptime/releases" target="_blank" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Changelog</a></li>
<li><a href="/oss-friends" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Open Source Friends</a></li>
</ul>
</div>
<!-- Company Column -->
<div class="mt-10 md:mt-0">
<h3 class="text-sm font-semibold leading-6 text-gray-900">More</h3>
<ul role="list" class="mt-6 space-y-4">
<h3 class="text-sm font-semibold text-slate-900">Company</h3>
<ul role="list" class="mt-4 space-y-3">
<li><a href="/about" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">About Us</a></li>
<li><a href="https://github.com/OneUptime/interview" target="_blank" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Careers</a></li>
<li><a href="https://shop.oneuptime.com" target="_blank" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Merch Store</a></li>
<li><a href="/legal/contact" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Contact</a></li>
</ul>
<li>
<a href="/docs" class="text-sm leading-6 text-gray-600 hover:text-gray-900">Docs</a>
</li>
<li>
<a href="/reference" class="text-sm leading-6 text-gray-600 hover:text-gray-900">API Reference</a>
</li>
<li>
<a href="/support" class="text-sm leading-6 text-gray-600 hover:text-gray-900">Help and Support</a>
</li>
<li>
<a href="/legal" class="text-sm leading-6 text-gray-600 hover:text-gray-900">Legal Center</a>
</li>
<li>
<a href="https://github.com/oneuptime/oneuptime" target="_blank"
class="text-sm leading-6 text-gray-600 hover:text-gray-900">GitHub</a>
</li>
<li>
<a href="/blog" target="_blank" class="text-sm leading-6 text-gray-600 hover:text-gray-900">Blog</a>
</li>
<li>
<a target="_blank" href="https://github.com/OneUptime/interview"
class="text-sm leading-6 text-gray-600 hover:text-gray-900">Careers</a>
</li>
<li>
<a href="/oss-friends" target="_blank" class="text-sm leading-6 text-gray-600 hover:text-gray-900">Open Source Friends</a>
</li>
<li>
<a href="https://shop.oneuptime.com" target="_blank" class="text-sm leading-6 text-gray-600 hover:text-gray-900">Merch Store</a>
</li>
<li>
<a href="/about" class="text-sm leading-6 text-gray-600 hover:text-gray-900">About Us</a>
</li>
<h3 class="text-sm font-semibold text-slate-900 mt-8">Legal</h3>
<ul role="list" class="mt-4 space-y-3">
<li><a href="/legal/terms" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Terms of Service</a></li>
<li><a href="/legal/privacy" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Privacy Policy</a></li>
<li><a href="/legal/sla" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">SLA</a></li>
<li><a href="/legal" class="text-sm text-slate-600 hover:text-indigo-600 transition-colors duration-200">Legal Center</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="mt-16 border-t border-gray-900/10 pt-8 sm:mt-20 lg:mt-24">
<p class="text-xs leading-5 text-gray-500">&copy; HackerBay, Inc. All rights reserved.</p>
</div>
<!-- Bottom Bar -->
<div class="border-t border-slate-200/60 bg-slate-50/50">
<div class="mx-auto max-w-7xl px-6 py-6 lg:px-8">
<div class="flex flex-col md:flex-row md:items-center md:justify-between gap-4">
<div class="flex flex-col sm:flex-row sm:items-center gap-4 sm:gap-6">
<p class="text-sm text-slate-500">&copy; <%= new Date().getFullYear() %> HackerBay, Inc. All rights reserved.</p>
<div class="flex items-center gap-4">
<a href="https://github.com/oneuptime/oneuptime" target="_blank" class="inline-flex items-center gap-2 text-sm text-slate-600 hover:text-slate-900 transition-colors duration-200 group">
<span class="flex items-center justify-center w-6 h-6 rounded-full bg-slate-200 group-hover:bg-slate-900 transition-colors duration-200">
<svg class="h-3.5 w-3.5 text-slate-600 group-hover:text-white transition-colors duration-200" fill="currentColor" viewBox="0 0 24 24">
<path fill-rule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clip-rule="evenodd" />
</svg>
</span>
<span class="font-medium">Open Source</span>
</a>
<span class="text-slate-300">|</span>
<span class="text-sm text-slate-500">Made with care for developers worldwide</span>
</div>
</div>
<div class="flex items-center gap-4">
<a href="/legal/soc-2" class="text-xs text-slate-400 hover:text-slate-600 transition-colors duration-200">SOC 2</a>
<a href="/legal/hipaa" class="text-xs text-slate-400 hover:text-slate-600 transition-colors duration-200">HIPAA</a>
<a href="/legal/gdpr" class="text-xs text-slate-400 hover:text-slate-600 transition-colors duration-200">GDPR</a>
<a href="/legal/iso-27001" class="text-xs text-slate-400 hover:text-slate-600 transition-colors duration-200">ISO 27001</a>
</div>
</div>
</div>
</div>
<div class="flex items-center gap-x-6 bg-gray-700 px-6 py-2.5 sm:px-3.5 sm:before:flex-1">
<p class="text-sm leading-6 text-white">
<a href="https://github.com/oneuptime/interview" target="blank">
<strong class="font-semibold">We're hiring remotely, worldwide! </strong><svg viewBox="0 0 2 2"
class="mx-2 inline h-0.5 w-0.5 fill-current" aria-hidden="true">
<circle cx="1" cy="1" r="1" />
</svg>See open roles &nbsp;<span aria-hidden="true">&rarr;</span>
</a>
</p>
<div class="flex flex-1 justify-end">
</div>
</div>
</footer>
</footer>

View File

@@ -2,7 +2,7 @@
<h1>ISO/IEC 27017:2015</h1>
<p>Information technology Security techniques Code of practice for information security controls based on
<p>Information technology - Security techniques - Code of practice for information security controls based on
ISO/IEC 27002 for cloud services</p>
</header>

View File

@@ -2,7 +2,7 @@
<h1>ISO/IEC 27018:2014</h1>
<p>Information technology Security techniques Code of practice for protection of personally identifiable
<p>Information technology - Security techniques - Code of practice for protection of personally identifiable
information (PII) in public clouds acting as PII processors</p>
</header>

View File

@@ -1,34 +1,151 @@
<style>
@keyframes scroll {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-50%);
}
}
.logo-marquee {
display: flex;
width: max-content;
animation: scroll 45s linear infinite;
}
.logo-marquee:hover {
animation-play-state: paused;
}
.logo-item {
display: flex;
align-items: center;
justify-content: center;
min-width: 160px;
height: 60px;
padding: 0 20px;
flex-shrink: 0;
}
.logo-item img {
max-height: 36px;
max-width: 140px;
width: auto;
height: auto;
object-fit: contain;
filter: brightness(0) invert(1);
opacity: 0.7;
transition: opacity 0.3s ease;
}
.logo-item img:hover {
opacity: 1;
}
.marquee-container {
overflow: hidden;
mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
-webkit-mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
}
</style>
<div class="bg-indigo-700">
<div class="mx-auto max-w-7xl py-16 px-6 sm:py-20 lg:px-8">
<h2 class="text-2xl font-medium tracking-tight text-white text-center text-indigo-300">Thousands of world's most
innovative companies use OneUptime to build reliable software.</h2>
<div class="grid grid-cols-4 gap-4 mt-10">
<div class="mx-auto max-w-7xl py-12 px-6 sm:py-16 lg:px-8">
<p class="text-center text-sm font-medium uppercase tracking-wider text-indigo-200 mb-8">
Powering thousands of teams from startups to the Fortune 500
</p>
<div class="mt-4 ml-8 flex justify-center flex-shrink-0 flex-grow lg:ml-4 lg:flex-grow-0">
<img class="h-8" src="/img/securonix-blue.svg" alt="Securonix">
</div>
<div class="mt-4 ml-8 flex justify-center flex-shrink-0 flex-grow lg:ml-4 lg:flex-grow-0">
<img class="h-6 mt-2" src="/img/viewsonic.svg" alt="ViewSonic">
</div>
<div class="mt-4 ml-8 flex justify-center flex-shrink-0 flex-grow lg:ml-4 lg:flex-grow-0">
<img class="h-12 -mt-4" src="/img/skillable-logo.svg" alt="Skillable">
</div>
<div class="mt-4 ml-8 flex justify-center flex-shrink-0 flex-grow lg:ml-4 lg:flex-grow-0">
<img class="h-11 -mt-2" src="/img/sodexo.svg" alt="Sodexo">
</div>
<div class="mt-4 ml-8 flex justify-center flex-shrink-0 flex-grow lg:ml-4 lg:flex-grow-0">
<img class="h-10 mt-0" src="/img/Dotdash_Meredith.svg" alt="Dotdash">
</div>
<div class="marquee-container">
<div class="logo-marquee">
<!-- First set of logos -->
<div class="logo-item">
<img src="/img/mistral-ai-full.png" alt="Mistral AI">
</div>
<div class="logo-item">
<img src="/img/securonix-blue.svg" alt="Securonix">
</div>
<div class="logo-item">
<img src="/img/aareon.svg" alt="Aareon">
</div>
<div class="logo-item">
<img src="/img/viewsonic.svg" alt="ViewSonic">
</div>
<div class="logo-item">
<img src="/img/syniti.png" alt="Syniti" style="transform: translateY(4px);">
</div>
<div class="logo-item">
<img src="/img/skillable-logo.svg" alt="Skillable" style="max-height: 46px; transform: translateY(-8px);">
</div>
<div class="logo-item">
<img src="/img/nt-ware.png" alt="NT-ware" style="max-height: 26px;">
</div>
<div class="logo-item">
<img src="/img/sodexo.svg" alt="Sodexo" style="max-height: 40px; transform: translateY(-4px);">
</div>
<div class="logo-item">
<img src="/img/avolve.webp" alt="Avolve Software" style="transform: translateY(-4px);">
</div>
<div class="logo-item">
<img src="/img/Dotdash_Meredith.svg" alt="Dotdash Meredith">
</div>
<div class="logo-item">
<img src="/img/trustify.svg" alt="Trustify" style="max-height: 46px;">
</div>
<div class="logo-item">
<img src="/img/bowie.svg" alt="Bowie" style="max-height: 66px; transform: translateY(-8px);">
</div>
<div class="logo-item">
<img src="/img/talkwalker.svg" alt="Talkwalker" style="max-height: 56px;">
</div>
<div class="logo-item">
<img src="/img/cscs.svg" alt="CSCS">
</div>
<div class="mt-4 ml-8 flex justify-center flex-shrink-0 flex-grow lg:ml-4 lg:flex-grow-0">
<img class="h-12" src="/img/trustify.svg" alt="Securonix">
</div>
<div class="mt-4 ml-8 flex justify-center flex-shrink-0 flex-grow lg:ml-4 lg:flex-grow-0">
<img class="h-24 -mt-8" src="/img/bowie.svg" alt="ViewSonic">
</div>
<div class="mt-4 ml-8 flex justify-center flex-shrink-0 flex-grow lg:ml-4 lg:flex-grow-0">
<img class="h-12 mt-2 -ml-10" src="/img/talkwalker.svg" alt="Siemens">
<!-- Duplicate set for seamless loop -->
<div class="logo-item">
<img src="/img/mistral-ai-full.png" alt="Mistral AI">
</div>
<div class="logo-item">
<img src="/img/securonix-blue.svg" alt="Securonix">
</div>
<div class="logo-item">
<img src="/img/aareon.svg" alt="Aareon">
</div>
<div class="logo-item">
<img src="/img/viewsonic.svg" alt="ViewSonic">
</div>
<div class="logo-item">
<img src="/img/syniti.png" alt="Syniti" style="transform: translateY(4px);">
</div>
<div class="logo-item">
<img src="/img/skillable-logo.svg" alt="Skillable" style="max-height: 46px; transform: translateY(-8px);">
</div>
<div class="logo-item">
<img src="/img/nt-ware.png" alt="NT-ware" style="max-height: 26px;">
</div>
<div class="logo-item">
<img src="/img/sodexo.svg" alt="Sodexo" style="max-height: 40px; transform: translateY(-4px);">
</div>
<div class="logo-item">
<img src="/img/avolve.webp" alt="Avolve Software" style="transform: translateY(-4px);">
</div>
<div class="logo-item">
<img src="/img/Dotdash_Meredith.svg" alt="Dotdash Meredith">
</div>
<div class="logo-item">
<img src="/img/trustify.svg" alt="Trustify" style="max-height: 46px;">
</div>
<div class="logo-item">
<img src="/img/bowie.svg" alt="Bowie" style="max-height: 66px; transform: translateY(-8px);">
</div>
<div class="logo-item">
<img src="/img/talkwalker.svg" alt="Talkwalker" style="max-height: 56px;">
</div>
<div class="logo-item">
<img src="/img/cscs.svg" alt="CSCS">
</div>
</div>
</div>
</div>
</div>
</div>

View File

@@ -1,12 +1,12 @@
<!DOCTYPE html>
<html lang="en" id="contact">
<html lang="en" id="oss-friends">
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<head>
<title>OneUptime | Our Open Source Friends</title>
<meta name="description"
content="OneUptime monitors websites, APIs, and servers and alerts your team if something goes wrong. It also keeps your customers updated about any downtime.">
content="Discover amazing open-source projects and companies that are building the future of software. From observability to AI, these are the tools we love and recommend.">
<%- include('head', {
enableGoogleTagManager: typeof enableGoogleTagManager !== 'undefined' ? enableGoogleTagManager : false
}) -%>
@@ -15,43 +15,212 @@
<body>
<%- include('nav') -%>
<main id="main-content">
<div class="relative isolate overflow-hidden bg-white">
<div class="py-24 sm:py-32 sm:pb-24">
<!-- Hero Section -->
<div class="relative isolate bg-white overflow-hidden">
<!-- Subtle grid pattern background (different from homepage - using dots pattern) -->
<div class="absolute inset-0 -z-10 h-full w-full bg-white bg-[radial-gradient(#e5e7eb_1px,transparent_1px)] bg-[size:2rem_2rem] [mask-image:radial-gradient(ellipse_60%_50%_at_50%_0%,#000_70%,transparent_110%)]"></div>
<div class="py-24 sm:py-32 lg:py-40">
<div class="mx-auto max-w-7xl px-6 lg:px-8">
<div class="mx-auto max-w-2xl text-center">
<h1 class="text-3xl font-bold tracking-tight text-gray-900 sm:text-5xl">
Our Open Source Friends
<div class="mx-auto max-w-3xl text-center">
<!-- Badge -->
<div class="mb-8 inline-flex items-center gap-2 rounded-full bg-gray-50 px-4 py-1.5 text-sm text-gray-600 ring-1 ring-inset ring-gray-200">
<svg class="h-4 w-4 text-red-500" fill="currentColor" viewBox="0 0 24 24">
<path d="M11.645 20.91l-.007-.003-.022-.012a15.247 15.247 0 01-.383-.218 25.18 25.18 0 01-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0112 5.052 5.5 5.5 0 0116.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 01-4.244 3.17 15.247 15.247 0 01-.383.219l-.022.012-.007.004-.003.001a.752.752 0 01-.704 0l-.003-.001z" />
</svg>
<span>Tools we love and use</span>
</div>
<!-- Main headline -->
<h1 class="text-4xl font-medium tracking-tight text-gray-900 sm:text-5xl lg:text-[3.5rem] lg:leading-[1.15]">
Our Open Source <br class="hidden sm:block" />Friends
</h1>
<p class="mt-6 text-xl sm:text-2xl leading-8 text-gray-600">
We are proud to be part of the open-source community. Here are some of our friends who are doing amazing work.
<!-- Subheadline -->
<p class="mt-6 text-base leading-7 text-gray-600 sm:text-lg sm:leading-8 max-w-xl mx-auto">
We believe in the power of open source. These amazing projects inspire us and are building the future of software together.
</p>
<!-- CTA buttons -->
<div class="mt-10 flex flex-col sm:flex-row items-center justify-center gap-3 sm:gap-4">
<a href="https://github.com/oneuptime/oneuptime" target="_blank"
class="w-full sm:w-auto inline-flex items-center justify-center rounded-lg bg-gray-900 px-6 py-2.5 text-sm font-medium text-white shadow-sm transition-all hover:bg-gray-700 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-900">
Star us on GitHub
<svg class="ml-2 h-4 w-4" fill="currentColor" viewBox="0 0 24 24"><path fill-rule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clip-rule="evenodd" /></svg>
</a>
<a href="#projects" class="w-full sm:w-auto inline-flex items-center justify-center rounded-lg bg-white px-6 py-2.5 text-sm font-medium text-gray-700 shadow-sm ring-1 ring-inset ring-gray-300 transition-all hover:bg-gray-50 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-600">
Explore projects
</a>
</div>
</div>
</div>
</div>
</div>
<div class="mx-auto max-w-5xl">
<ul role="list" class="divide-y divide-gray-100">
<% for(var i=0; i<ossFriends.length; i++) {%>
<li class="flex items-center justify-between gap-x-6 py-5">
<div class="min-w-0">
<div class="flex items-start gap-x-3">
<p class="text-xl font-semibold leading-6 text-gray-900">
<%= ossFriends[i].name %>
</p>
</div>
<div class="mt-1 flex items-center gap-x-2 leading-5 text-gray-500">
<p>
<%= ossFriends[i].description %>
</p>
</div>
</div>
<div class="flex flex-none items-center gap-x-4">
<a href="<%= ossFriends[i].repositoryUrl %>" type="_blank" class="hidden rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50 sm:block">View Repository</a>
</div>
</li>
<% } %>
</ul>
<!-- Category Navigation -->
<div class="sticky top-0 z-10 border-b border-gray-200 bg-white/80 backdrop-blur-sm">
<div class="mx-auto max-w-7xl px-6 lg:px-8">
<div class="flex items-center justify-between py-4">
<div class="flex items-center gap-2 text-sm text-gray-500">
<span class="font-medium text-gray-900"><%= ossFriends.length %></span> projects across
<span class="font-medium text-gray-900"><%= categories.length %></span> categories
</div>
<nav class="hidden sm:flex items-center gap-1">
<% for(var c=0; c<categories.length; c++) { %>
<% var cat = categories[c]; %>
<% var catId = cat.toLowerCase().replace(/[^a-z0-9]+/g, '-'); %>
<a href="#category-<%= catId %>" class="rounded-full px-3 py-1.5 text-sm font-medium text-gray-600 transition-colors hover:bg-gray-100 hover:text-gray-900">
<%= cat.split(' & ')[0] %>
</a>
<% } %>
</nav>
</div>
</div>
</div>
<!-- Projects by Category -->
<div id="projects" class="bg-white py-16 sm:py-24">
<div class="mx-auto max-w-7xl px-6 lg:px-8">
<% for(var c=0; c<categories.length; c++) { %>
<% var category = categories[c]; %>
<% var categoryId = category.toLowerCase().replace(/[^a-z0-9]+/g, '-'); %>
<% var categoryFriends = ossFriends.filter(function(friend) { return friend.category === category; }); %>
<div id="category-<%= categoryId %>" class="<%= c > 0 ? 'mt-20' : '' %> scroll-mt-20">
<!-- Category Header -->
<div class="flex items-center gap-x-4 mb-8">
<% if(category === 'Data & Analytics') { %>
<div class="flex h-12 w-12 items-center justify-center rounded-lg bg-indigo-600">
<svg class="h-6 w-6 text-white" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125" />
</svg>
</div>
<% } else if(category === 'Developer Tools') { %>
<div class="flex h-12 w-12 items-center justify-center rounded-lg bg-indigo-600">
<svg class="h-6 w-6 text-white" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M17.25 6.75L22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3l-4.5 16.5" />
</svg>
</div>
<% } else if(category === 'Productivity & Collaboration') { %>
<div class="flex h-12 w-12 items-center justify-center rounded-lg bg-indigo-600">
<svg class="h-6 w-6 text-white" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M18 18.72a9.094 9.094 0 003.741-.479 3 3 0 00-4.682-2.72m.94 3.198l.001.031c0 .225-.012.447-.037.666A11.944 11.944 0 0112 21c-2.17 0-4.207-.576-5.963-1.584A6.062 6.062 0 016 18.719m12 0a5.971 5.971 0 00-.941-3.197m0 0A5.995 5.995 0 0012 12.75a5.995 5.995 0 00-5.058 2.772m0 0a3 3 0 00-4.681 2.72 8.986 8.986 0 003.74.477m.94-3.197a5.971 5.971 0 00-.94 3.197M15 6.75a3 3 0 11-6 0 3 3 0 016 0zm6 3a2.25 2.25 0 11-4.5 0 2.25 2.25 0 014.5 0zm-13.5 0a2.25 2.25 0 11-4.5 0 2.25 2.25 0 014.5 0z" />
</svg>
</div>
<% } else if(category === 'Infrastructure & DevOps') { %>
<div class="flex h-12 w-12 items-center justify-center rounded-lg bg-indigo-600">
<svg class="h-6 w-6 text-white" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M5.25 14.25h13.5m-13.5 0a3 3 0 01-3-3m3 3a3 3 0 100 6h13.5a3 3 0 100-6m-16.5-3a3 3 0 013-3h13.5a3 3 0 013 3m-19.5 0a4.5 4.5 0 01.9-2.7L5.737 5.1a3.375 3.375 0 012.7-1.35h7.126c1.062 0 2.062.5 2.7 1.35l2.587 3.45a4.5 4.5 0 01.9 2.7m0 0a3 3 0 01-3 3m0 3h.008v.008h-.008v-.008zm0-6h.008v.008h-.008v-.008zm-3 6h.008v.008h-.008v-.008zm0-6h.008v.008h-.008v-.008z" />
</svg>
</div>
<% } else if(category === 'Security') { %>
<div class="flex h-12 w-12 items-center justify-center rounded-lg bg-indigo-600">
<svg class="h-6 w-6 text-white" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M9 12.75L11.25 15 15 9.75m-3-7.036A11.959 11.959 0 013.598 6 11.99 11.99 0 003 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285z" />
</svg>
</div>
<% } else if(category === 'AI & Machine Learning') { %>
<div class="flex h-12 w-12 items-center justify-center rounded-lg bg-indigo-600">
<svg class="h-6 w-6 text-white" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09zM18.259 8.715L18 9.75l-.259-1.035a3.375 3.375 0 00-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 002.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 002.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 00-2.456 2.456zM16.894 20.567L16.5 21.75l-.394-1.183a2.25 2.25 0 00-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 001.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 001.423 1.423l1.183.394-1.183.394a2.25 2.25 0 00-1.423 1.423z" />
</svg>
</div>
<% } %>
<div>
<h2 class="text-2xl font-bold tracking-tight text-gray-900"><%= category %></h2>
<p class="text-sm text-gray-500"><%= categoryFriends.length %> projects</p>
</div>
</div>
<!-- Cards Grid -->
<div class="grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3">
<% for(var i=0; i<categoryFriends.length; i++) { %>
<% var friend = categoryFriends[i]; %>
<div class="group relative flex flex-col overflow-hidden rounded-2xl bg-white shadow-sm ring-1 ring-gray-200 hover:shadow-lg hover:ring-gray-300 transition-all duration-200">
<div class="flex flex-1 flex-col p-6">
<div class="flex items-center gap-x-3">
<h3 class="text-lg font-semibold leading-7 text-gray-900 group-hover:text-indigo-600 transition-colors">
<%= friend.name %>
</h3>
</div>
<p class="mt-3 text-sm leading-6 text-gray-600 flex-1">
<%= friend.description %>
</p>
<div class="mt-6 flex items-center gap-x-3">
<a href="<%= friend.websiteUrl %>" target="_blank" rel="noopener noreferrer"
class="inline-flex items-center gap-x-1.5 rounded-md bg-indigo-50 px-3 py-2 text-sm font-semibold text-indigo-600 hover:bg-indigo-100 transition-colors">
<svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 21a9.004 9.004 0 008.716-6.747M12 21a9.004 9.004 0 01-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 017.843 4.582M12 3a8.997 8.997 0 00-7.843 4.582m15.686 0A11.953 11.953 0 0112 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0121 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0112 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 013 12c0-1.605.42-3.113 1.157-4.418" />
</svg>
Website
</a>
<a href="<%= friend.repositoryUrl %>" target="_blank" rel="noopener noreferrer"
class="inline-flex items-center gap-x-1.5 rounded-md bg-gray-100 px-3 py-2 text-sm font-semibold text-gray-700 hover:bg-gray-200 transition-colors">
<svg class="h-4 w-4" fill="currentColor" viewBox="0 0 24 24">
<path fill-rule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clip-rule="evenodd" />
</svg>
GitHub
</a>
</div>
</div>
</div>
<% } %>
</div>
</div>
<% } %>
</div>
</div>
<!-- Want to be listed section -->
<div class="bg-gray-50 py-16 sm:py-24">
<div class="mx-auto max-w-7xl px-6 lg:px-8">
<div class="mx-auto max-w-2xl text-center">
<h2 class="text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl">
Want to be listed here?
</h2>
<p class="mt-6 text-lg leading-8 text-gray-600">
Are you building an amazing open-source project? We'd love to feature you on this page.
Submit a pull request to our GitHub repository and join our community of open-source friends.
</p>
<div class="mt-10 flex items-center justify-center gap-x-6">
<a href="https://github.com/oneuptime/oneuptime" target="_blank"
class="rounded-md bg-indigo-600 px-3.5 py-2.5 text-sm font-semibold text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600">
Submit a PR
</a>
<a href="/contact" class="text-sm font-semibold leading-6 text-gray-900">
Contact us <span aria-hidden="true">-></span>
</a>
</div>
</div>
</div>
</div>
<!-- CTA Section -->
<div class="bg-indigo-600">
<div class="px-6 py-24 sm:px-6 sm:py-32 lg:px-8">
<div class="mx-auto max-w-2xl text-center">
<h2 class="text-3xl font-bold tracking-tight text-white sm:text-4xl">
Join the Open Source Movement
</h2>
<p class="mx-auto mt-6 max-w-xl text-lg leading-8 text-indigo-100">
OneUptime is fully open-source. Monitor your applications, manage incidents,
and keep your customers informed - all with the power of open source.
</p>
<div class="mt-10 flex items-center justify-center gap-x-6">
<a href="https://github.com/oneuptime/oneuptime" target="_blank"
class="rounded-md bg-white px-3.5 py-2.5 text-sm font-semibold text-indigo-600 shadow-sm hover:bg-indigo-50 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white">
View on GitHub
</a>
<a href="/pricing" class="text-sm font-semibold leading-6 text-white">
Get started <span aria-hidden="true">-></span>
</a>
</div>
</div>
</div>
</div>
</main>
<%- include('footer') -%>
</body>

View File

@@ -37,14 +37,14 @@
</svg>
<p class="ml-5"><strong class="font-semibold text-slate-900">Status Pages</strong> Unlimited public or private status pages with unlimited subscribers.</p>
<p class="ml-5"><strong class="font-semibold text-slate-900">Status Pages</strong> - Unlimited public or private status pages with unlimited subscribers.</p>
</li>
<li class="flex">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-12 h-12">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" />
</svg>
<p class="ml-5"><strong class="font-semibold text-slate-900">Incident Management</strong> respond to incidents faster, post them on status page, add postmortem notes.</p>
<p class="ml-5"><strong class="font-semibold text-slate-900">Incident Management</strong> - respond to incidents faster, post them on status page, add postmortem notes.</p>
</li>
<li class="flex">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-14 h-14">
@@ -52,14 +52,14 @@
</svg>
<p class="ml-5"><strong class="font-semibold text-slate-900">Monitoring</strong> Monitor status of any resource real-time. Create incidents automatically. Alert right team at the right time. (Coming soon)</p>
<p class="ml-5"><strong class="font-semibold text-slate-900">Monitoring</strong> - Monitor status of any resource real-time. Create incidents automatically. Alert right team at the right time. (Coming soon)</p>
</li>
<li class="flex">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-10 h-10">
<path stroke-linecap="round" stroke-linejoin="round" d="M2.25 6.75c0 8.284 6.716 15 15 15h2.25a2.25 2.25 0 002.25-2.25v-1.372c0-.516-.351-.966-.852-1.091l-4.423-1.106c-.44-.11-.902.055-1.173.417l-.97 1.293c-.282.376-.769.542-1.21.38a12.035 12.035 0 01-7.143-7.143c-.162-.441.004-.928.38-1.21l1.293-.97c.363-.271.527-.734.417-1.173L6.963 3.102a1.125 1.125 0 00-1.091-.852H4.5A2.25 2.25 0 002.25 4.5v2.25z" />
</svg>
<p class="ml-5"><strong class="font-semibold text-slate-900">On-Call & Alerts</strong> create on-call schedule, escalation policy, alert right team for right resources. (Coming soon)</p>
<p class="ml-5"><strong class="font-semibold text-slate-900">On-Call & Alerts</strong> - create on-call schedule, escalation policy, alert right team for right resources. (Coming soon)</p>
</li>
</ul>
<div class="relative mt-10 flex rounded-xl border border-slate-600/10 bg-slate-50 p-6">
@@ -70,7 +70,7 @@
<path d="m18.031 29.016-2.187.109s-1.475-.118-1.827-.29c-1.049-.51-.579-2.915 0-3.95 1.157-2.064 3.752-5.135 7.125-5.135h.024c2.5 0 4.404 1.687 5.692 3.401-1.963 2.975-5.161 5.276-8.827 5.865Z" fill="#94A3B8" fill-opacity=".2" stroke-linejoin="round"></path>
<path d="m14.001 24.913.016-.027c.26-.465.593-.98.991-1.5-1.042-.918-2.374-1.636-3.988-1.636H11c-2.094 0-3.847 1.208-5.055 2.492a12.987 12.987 0 0 0 7.987 4.595l.057-.016c-1.004-.534-.555-2.868.012-3.908Z" fill="#94A3B8" fill-opacity=".2" stroke-linejoin="round"></path>
</svg>
<p class="ml-5 text-sm leading-6 text-slate-700"><strong class="font-semibold text-slate-900">No vendor lock-in. We are open-source</strong> We are Apache licensed. Find us on <a href="https://github.com/oneuptime/oneuptime">GitHub</a>. You are more than welcome to self-host, create issues, modify the code and send us pull-requests!</p>
<p class="ml-5 text-sm leading-6 text-slate-700"><strong class="font-semibold text-slate-900">No vendor lock-in. We are open-source</strong> - We are Apache licensed. Find us on <a href="https://github.com/oneuptime/oneuptime">GitHub</a>. You are more than welcome to self-host, create issues, modify the code and send us pull-requests!</p>
</div>
</div>
</div>

View File

@@ -104,10 +104,10 @@ By using OneUptime Cloud, you also support the continued development of the open
### Self-Hosted Installation
- **[Kubernetes with Helm](https://artifacthub.io/packages/helm/oneuptime/oneuptime)** Recommended for production
- **[Docker Compose](/Docs/Content/installation/docker-compose.md)** Single-node install (not recommended for production)
- **[Local Development](/Docs/Content/installation/local-development.md)** For contributors
- **[Upgrade Guide](/Docs/Content/installation/upgrading.md)** Upgrade existing installations
- **[Kubernetes with Helm](https://artifacthub.io/packages/helm/oneuptime/oneuptime)** - Recommended for production
- **[Docker Compose](/Docs/Content/installation/docker-compose.md)** - Single-node install (not recommended for production)
- **[Local Development](/Docs/Content/installation/local-development.md)** - For contributors
- **[Upgrade Guide](/Docs/Content/installation/upgrading.md)** - Upgrade existing installations
---
@@ -165,9 +165,9 @@ We love contributions big and small! Here's how you can help:
If you find OneUptime useful, consider supporting its development:
-**Star this repo** It helps others discover OneUptime
- 💵 **[Sponsor us](https://github.com/sponsors/OneUptime)** Every dollar goes to shipping new features
- 🛍️ **[Shop merch](https://shop.oneuptime.com)** All revenue supports open-source development
-**Star this repo** - It helps others discover OneUptime
- 💵 **[Sponsor us](https://github.com/sponsors/OneUptime)** - Every dollar goes to shipping new features
- 🛍️ **[Shop merch](https://shop.oneuptime.com)** - All revenue supports open-source development
---