move docs content to its own repo
Some checks failed
Deploy / deploy (ubuntu-latest, 2.44.0) (push) Failing after 56s
Some checks failed
Deploy / deploy (ubuntu-latest, 2.44.0) (push) Failing after 56s
Took 30 minutes
This commit is contained in:
parent
447da11d71
commit
519b688f13
@ -1,9 +0,0 @@
|
||||
---
|
||||
title: '🐋 Docker'
|
||||
updated: '2024-10-07'
|
||||
summary: 'petentium usu tota noluisse errem elaboraret auctor.'
|
||||
order: 4
|
||||
---
|
||||
|
||||
# 🐋 Deploying on Docker
|
||||
...
|
@ -1,9 +0,0 @@
|
||||
---
|
||||
title: '🧩 Components'
|
||||
updated: '2024-10-07'
|
||||
summary: 'petentium usu tota noluisse errem elaboraret auctor.'
|
||||
order: 2
|
||||
---
|
||||
|
||||
# 🧩 Components
|
||||
...
|
@ -1,9 +0,0 @@
|
||||
---
|
||||
title: '✔️ Supported Services'
|
||||
updated: '2024-10-07'
|
||||
summary: 'petentium usu tota noluisse errem elaboraret auctor.'
|
||||
order: 3
|
||||
---
|
||||
|
||||
# ✔️ Supported Services
|
||||
Below is a list of all the services that are currently supported by Pulse App. Are we missing a service? Please [open an issue](https://git.rainnny.club/PulseApp/API/issues)!
|
@ -1,22 +0,0 @@
|
||||
---
|
||||
title: '🚀 Introduction'
|
||||
updated: '2024-10-06'
|
||||
summary: 'petentium usu tota noluisse errem elaboraret auctor.'
|
||||
order: 1
|
||||
---
|
||||
|
||||
> [!IMPORTANT]
|
||||
> These docs are currently a work in progress and are subject to change.
|
||||
|
||||
# <span className="flex gap-2.5 items-center"><Activity className="w-6 h-6 text-primary" /> Pulse App</span>
|
||||
A lightweight service monitoring solution for tracking the availability of whatever service your heart desires!
|
||||
|
||||
## Getting Started
|
||||
Let's get you up and running—this will only take a few minutes! Start by [creating your account](#creating-your-account) and
|
||||
making your first status page. You can do this on our cloud or on your [own instance](/self-hosting). Once done, you can add
|
||||
your services and start monitoring them. See [Next Steps](#next-steps) for more.
|
||||
|
||||
### Creating your Account
|
||||
- First, head to our [Dashboard](https://pulseapp.cc/dashboard) and fill out the form. ![Registering](https://cdn.rainnny.club/auhNOjrcYz6u.png)
|
||||
- Next, complete the onboarding process and set up your first organization, and status page. ![Onboarding](https://cdn.rainnny.club/AfDgjHG5QTpZ.png)
|
||||
- Finally, you can [start monitoring your services](#next-steps)!
|
@ -26,12 +26,16 @@ const RootLayout = async ({
|
||||
const pages: DocsContentMetadata[] = await getDocsContent();
|
||||
return (
|
||||
<html lang="en">
|
||||
<ThemeProvider attribute="class" defaultTheme="dark" enableSystem>
|
||||
<body
|
||||
className="scroll-smooth antialiased"
|
||||
style={{
|
||||
background: "var(--background-gradient)",
|
||||
}}
|
||||
<body
|
||||
className="scroll-smooth antialiased"
|
||||
style={{
|
||||
background: "var(--background-gradient)",
|
||||
}}
|
||||
>
|
||||
<ThemeProvider
|
||||
attribute="class"
|
||||
defaultTheme="dark"
|
||||
enableSystem
|
||||
>
|
||||
<TooltipProvider delayDuration={100}>
|
||||
<div className="px-3 md:px-7 max-w-screen-2xl min-h-screen mx-auto flex flex-col transition-all">
|
||||
@ -45,8 +49,8 @@ const RootLayout = async ({
|
||||
</div>
|
||||
<Footer />
|
||||
</TooltipProvider>
|
||||
</body>
|
||||
</ThemeProvider>
|
||||
</ThemeProvider>
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
};
|
||||
|
@ -2,21 +2,7 @@
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
:root {
|
||||
--background: 0 0% 100%;
|
||||
--foreground: 240 10% 3.9%;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--background: 240 10% 3.9%;
|
||||
--foreground: 0 0% 98%;
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
color: var(--foreground);
|
||||
background: var(--background);
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@ -28,6 +14,8 @@ body {
|
||||
|
||||
@layer base {
|
||||
:root {
|
||||
--background: 0 0% 100%;
|
||||
--foreground: 240 10% 3.9%;
|
||||
--card: 0 0% 100%;
|
||||
--card-foreground: 240 10% 3.9%;
|
||||
--popover: 0 0% 100%;
|
||||
@ -56,6 +44,8 @@ body {
|
||||
}
|
||||
|
||||
.dark {
|
||||
--background: 240 10% 3.9%;
|
||||
--foreground: 0 0% 98%;
|
||||
--card: 240 10% 3.9%;
|
||||
--card-foreground: 0 0% 98%;
|
||||
--popover: 240 10% 3.9%;
|
||||
|
@ -1,10 +1,10 @@
|
||||
import { ReactElement } from "react";
|
||||
import { Separator } from "@/components/ui/separator";
|
||||
import SidebarLinks from "@/components/sidebar/sidebar-links";
|
||||
import ThemeSwitcher from "@/components/theme-switcher";
|
||||
import { Sheet, SheetContent, SheetTrigger } from "@/components/ui/sheet";
|
||||
import QuickSearchDialog from "@/components/navbar/search-dialog";
|
||||
import { AlignRightIcon } from "lucide-react";
|
||||
import { Separator } from "@/components/ui/separator";
|
||||
import ThemeSwitcher from "@/components/theme-switcher";
|
||||
|
||||
const Sidebar = ({ pages }: { pages: DocsContentMetadata[] }): ReactElement => (
|
||||
<>
|
||||
|
@ -75,18 +75,27 @@ const getMetadata = <T extends MDXMetadata>(
|
||||
const extension: string = path.extname(file); // The file extension
|
||||
return extension === ".md" || extension === ".mdx";
|
||||
}); // Read the MDX files
|
||||
return files.map((file: string): T => {
|
||||
const metadata: T[] = [];
|
||||
for (let i = files.length - 1; i >= 0; i--) {
|
||||
const file: string = files[i];
|
||||
const filePath: string = path.join(directory, file); // The path of the file
|
||||
return {
|
||||
const fileMetadata: T | undefined = parseMetadata<T>(
|
||||
fs.readFileSync(filePath, "utf-8")
|
||||
);
|
||||
if (!fileMetadata) {
|
||||
continue;
|
||||
}
|
||||
metadata.push({
|
||||
slug: filePath
|
||||
.replace(parent, "")
|
||||
.replace(/\\/g, "/") // Normalize the path
|
||||
.replace(/\.mdx?$/, "")
|
||||
.substring(1),
|
||||
extension: path.extname(file),
|
||||
...parseMetadata<T>(fs.readFileSync(filePath, "utf-8")),
|
||||
}; // Map each file to its metadata
|
||||
});
|
||||
...fileMetadata,
|
||||
});
|
||||
}
|
||||
return metadata;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -97,8 +106,15 @@ const getMetadata = <T extends MDXMetadata>(
|
||||
* @returns the metadata and content
|
||||
* @template T the type of metadata
|
||||
*/
|
||||
const parseMetadata = <T extends MDXMetadata>(content: string): T => {
|
||||
const metadataBlock: string = METADATA_REGEX.exec(content)![1]; // Get the block of metadata
|
||||
const parseMetadata = <T extends MDXMetadata>(
|
||||
content: string
|
||||
): T | undefined => {
|
||||
const extracted = METADATA_REGEX.exec(content);
|
||||
const metadataBlock: string | undefined =
|
||||
extracted && extracted.length > 1 ? extracted[1] : undefined; // Get the block of metadata
|
||||
if (!metadataBlock) {
|
||||
return undefined;
|
||||
}
|
||||
content = content.replace(METADATA_REGEX, "").trim(); // Remove the metadata block from the content
|
||||
const metadata: Partial<{
|
||||
[key: string]: string;
|
||||
|
@ -4,7 +4,9 @@ export function middleware(request: NextRequest): NextResponse {
|
||||
const before: number = Date.now();
|
||||
const response: NextResponse = NextResponse.next();
|
||||
if (process.env.NODE_ENV === "production") {
|
||||
const ip: string | null = request.headers.get("CF-Connecting-IP");
|
||||
const ip: string | null =
|
||||
request.headers.get("CF-Connecting-IP") ||
|
||||
request.headers.get("X-Forwarded-For");
|
||||
console.log(
|
||||
`${ip} | ${request.method} ${request.nextUrl.pathname} ${response.status} in ${(Date.now() - before).toFixed(0)}ms`
|
||||
);
|
||||
|
Loading…
x
Reference in New Issue
Block a user