-
Fumadocs on Tanstack Start.
-
- Open Docs
-
+
+
+
+
{title}
+
{description}
+
+ );
+}
+
+function SmallFeature({
+ icon: Icon,
+ title,
+ description,
+}: {
+ icon: React.ComponentType<{ className?: string }>;
+ title: string;
+ description: string;
+}) {
+ return (
+
+
+
+
+
+
{title}
+
{description}
+
+
+ );
+}
+
+function Home() {
+ return (
+
,
+ },
+ {
+ text: "Installation",
+ url: "/docs/setup/installation",
+ icon:
,
+ },
+ {
+ text: "Environment Variables",
+ url: "/docs/configuration/env-variables",
+ icon:
,
+ },
+ ],
+ },
+ {
+ type: "custom",
+ on: "nav",
+ children: (
+
+ Docs
+
+
+
+ Introduction
+ Welcome to OrcaCD
+
+
+
+ Installation
+
+ Get OrcaCD running quickly with Docker installation.
+
+
+
+
+ Environment Variables
+
+ Complete reference for all OrcaCD configuration options.
+
+
+
+
+ ),
+ },
+ ]}
+ >
+
+
+
+
+
+ GitOps for Docker
+
+
+ OrcaCD
+
+
+ OrcaCD is a simple GitOps controller for Docker Compose. Deploy and manage your services
+ with ease, directly from your Git repository.
+
+
+
+
+ Get Started
+
+
+
+
+
+
+
+
+
+
+
TODO: Add OrcaCD dashboard screenshot image
+
+
+
+
+
+
+
+
+
Key Features
+
+ Everything you need for GitOps-powered Docker deployments
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
How It Works
+
+ Three simple steps to automated Docker deployments
+
+
+
+ {[
+ {
+ step: "1",
+ title: "Connect Your Repo",
+ description:
+ "Point OrcaCD to your Git repository containing your Docker Compose files.",
+ },
+ {
+ step: "2",
+ title: "Push Changes",
+ description: "Commit and push updates to your Compose files or application code.",
+ },
+ {
+ step: "3",
+ title: "Auto Deploy",
+ description:
+ "OrcaCD detects the changes and automatically updates your running services.",
+ },
+ ].map((item) => (
+
+
+ {item.step}
+
+
{item.title}
+
{item.description}
+
+ ))}
+
+
+
+
+
+
+
+
Join the Community
+
+ OrcaCD is open source and community-driven
+
+
+
+
+
+
+
+
+
+
+ {/* CTA Section */}
+
+
+
Ready to get started?
+
+ Deploy OrcaCD today and start using GitOps for your Docker services.
+
+
+
+
);
}
diff --git a/src/routes/llms-full[.]txt.ts b/src/routes/llms-full[.]txt.ts
new file mode 100644
index 0000000..740057f
--- /dev/null
+++ b/src/routes/llms-full[.]txt.ts
@@ -0,0 +1,14 @@
+import { createFileRoute } from "@tanstack/react-router";
+import { source, getLLMText } from "@/lib/source";
+
+export const Route = createFileRoute("/llms-full.txt")({
+ server: {
+ handlers: {
+ GET: async () => {
+ const scan = source.getPages().map(getLLMText);
+ const scanned = await Promise.all(scan);
+ return new Response(scanned.join("\n\n"));
+ },
+ },
+ },
+});
diff --git a/src/routes/llms[.]mdx.docs.$.ts b/src/routes/llms[.]mdx.docs.$.ts
new file mode 100644
index 0000000..4b10109
--- /dev/null
+++ b/src/routes/llms[.]mdx.docs.$.ts
@@ -0,0 +1,23 @@
+import { createFileRoute, notFound } from "@tanstack/react-router";
+import { getLLMText, source } from "@/lib/source";
+
+export const Route = createFileRoute("/llms.mdx/docs/$")({
+ server: {
+ handlers: {
+ GET: async ({ params }) => {
+ const slugs = params._splat?.split("/") ?? [];
+ slugs.pop();
+ const page = source.getPage(slugs);
+ if (!page) {
+ throw notFound();
+ }
+
+ return new Response(await getLLMText(page), {
+ headers: {
+ "Content-Type": "text/markdown",
+ },
+ });
+ },
+ },
+ },
+});
diff --git a/src/routes/llms[.]txt.ts b/src/routes/llms[.]txt.ts
new file mode 100644
index 0000000..7707e93
--- /dev/null
+++ b/src/routes/llms[.]txt.ts
@@ -0,0 +1,13 @@
+import { source } from "@/lib/source";
+import { createFileRoute } from "@tanstack/react-router";
+import { llms } from "fumadocs-core/source";
+
+export const Route = createFileRoute("/llms.txt")({
+ server: {
+ handlers: {
+ GET() {
+ return new Response(llms(source).index());
+ },
+ },
+ },
+});
diff --git a/src/styles/app.css b/src/styles/app.css
index dbcc721..2e73bda 100644
--- a/src/styles/app.css
+++ b/src/styles/app.css
@@ -1,3 +1,11 @@
@import "tailwindcss";
@import "fumadocs-ui/css/neutral.css";
@import "fumadocs-ui/css/preset.css";
+
+@theme {
+ --color-fd-primary: oklch(0.59 0.14 242);
+}
+
+.dark {
+ --color-fd-primary: oklch(0.68 0.15 237);
+}