From 6b357797bda92642fc4ecb25aad8aa08c9bc9aea Mon Sep 17 00:00:00 2001 From: Pratyush Sharma <56130065+pratyush618@users.noreply.github.com> Date: Sun, 21 Jun 2026 11:19:15 +0530 Subject: [PATCH 01/48] docs: scaffold React Router v7 static app (replace Next/Fumadocs) --- docs/.gitignore | 5 +- docs/app/app.css | 35 + docs/app/lib/doc-paths.ts | 40 + docs/app/root.tsx | 62 + docs/app/routes.ts | 5 + docs/app/routes/home.tsx | 21 + docs/biome.json | 11 +- docs/next.config.mjs | 23 - docs/package.json | 43 +- docs/pnpm-lock.yaml | 3286 +++++++---------- docs/postcss.config.mjs | 7 - docs/react-router.config.ts | 15 + docs/source.config.ts | 23 - docs/src/app/(docs)/[...slug]/page.tsx | 67 - docs/src/app/(docs)/layout.tsx | 11 - .../src/app/(home)/_sections/_window-dots.tsx | 14 - .../(home)/_sections/comparison-section.tsx | 94 - docs/src/app/(home)/_sections/cta.tsx | 45 - docs/src/app/(home)/_sections/features.tsx | 36 - docs/src/app/(home)/_sections/hero.tsx | 105 - docs/src/app/(home)/_sections/index.ts | 7 - .../src/app/(home)/_sections/integrations.tsx | 39 - docs/src/app/(home)/_sections/use-cases.tsx | 52 - docs/src/app/(home)/layout.tsx | 6 - docs/src/app/(home)/page.tsx | 25 - docs/src/app/api/search/route.ts | 9 - docs/src/app/global.css | 27 - docs/src/app/layout.tsx | 44 - docs/src/app/llms-full.txt/route.ts | 10 - docs/src/app/llms.mdx/[[...slug]]/route.ts | 26 - docs/src/app/llms.txt/route.ts | 8 - docs/src/app/og/[...slug]/route.tsx | 35 - docs/src/components/animated/_primitives.tsx | 457 --- .../animated/architecture-stack.tsx | 148 - .../animated/crash-recovery-timeline.tsx | 287 -- .../components/animated/dispatch-sequence.tsx | 200 - .../src/components/animated/entity-schema.tsx | 246 -- docs/src/components/animated/how-it-works.tsx | 317 -- docs/src/components/animated/index.ts | 10 - .../components/animated/job-state-machine.tsx | 204 - .../components/animated/resource-pipeline.tsx | 251 -- .../animated/scheduler-poll-loop.tsx | 291 -- .../components/animated/worker-dispatch.tsx | 336 -- docs/src/components/animated/worker-pool.tsx | 312 -- docs/src/components/diagram-carousel.tsx | 149 - docs/src/components/mdx.tsx | 44 - docs/src/components/mermaid.tsx | 174 - docs/src/components/provider.tsx | 8 - docs/src/components/search.tsx | 54 - docs/src/components/ui/button.tsx | 56 - docs/src/components/ui/code-panel.tsx | 83 - docs/src/components/ui/index.ts | 10 - docs/src/components/ui/section-header.tsx | 32 - docs/src/lib/cn.ts | 6 - docs/src/lib/highlight.tsx | 33 - docs/src/lib/landing-content.tsx | 325 -- docs/src/lib/layout.shared.tsx | 41 - docs/src/lib/release.ts | 4 - docs/src/lib/shared.ts | 15 - docs/src/lib/source.ts | 41 - docs/tsconfig.json | 49 +- docs/vite.config.ts | 58 + 62 files changed, 1652 insertions(+), 6825 deletions(-) create mode 100644 docs/app/app.css create mode 100644 docs/app/lib/doc-paths.ts create mode 100644 docs/app/root.tsx create mode 100644 docs/app/routes.ts create mode 100644 docs/app/routes/home.tsx delete mode 100644 docs/next.config.mjs delete mode 100644 docs/postcss.config.mjs create mode 100644 docs/react-router.config.ts delete mode 100644 docs/source.config.ts delete mode 100644 docs/src/app/(docs)/[...slug]/page.tsx delete mode 100644 docs/src/app/(docs)/layout.tsx delete mode 100644 docs/src/app/(home)/_sections/_window-dots.tsx delete mode 100644 docs/src/app/(home)/_sections/comparison-section.tsx delete mode 100644 docs/src/app/(home)/_sections/cta.tsx delete mode 100644 docs/src/app/(home)/_sections/features.tsx delete mode 100644 docs/src/app/(home)/_sections/hero.tsx delete mode 100644 docs/src/app/(home)/_sections/index.ts delete mode 100644 docs/src/app/(home)/_sections/integrations.tsx delete mode 100644 docs/src/app/(home)/_sections/use-cases.tsx delete mode 100644 docs/src/app/(home)/layout.tsx delete mode 100644 docs/src/app/(home)/page.tsx delete mode 100644 docs/src/app/api/search/route.ts delete mode 100644 docs/src/app/global.css delete mode 100644 docs/src/app/layout.tsx delete mode 100644 docs/src/app/llms-full.txt/route.ts delete mode 100644 docs/src/app/llms.mdx/[[...slug]]/route.ts delete mode 100644 docs/src/app/llms.txt/route.ts delete mode 100644 docs/src/app/og/[...slug]/route.tsx delete mode 100644 docs/src/components/animated/_primitives.tsx delete mode 100644 docs/src/components/animated/architecture-stack.tsx delete mode 100644 docs/src/components/animated/crash-recovery-timeline.tsx delete mode 100644 docs/src/components/animated/dispatch-sequence.tsx delete mode 100644 docs/src/components/animated/entity-schema.tsx delete mode 100644 docs/src/components/animated/how-it-works.tsx delete mode 100644 docs/src/components/animated/index.ts delete mode 100644 docs/src/components/animated/job-state-machine.tsx delete mode 100644 docs/src/components/animated/resource-pipeline.tsx delete mode 100644 docs/src/components/animated/scheduler-poll-loop.tsx delete mode 100644 docs/src/components/animated/worker-dispatch.tsx delete mode 100644 docs/src/components/animated/worker-pool.tsx delete mode 100644 docs/src/components/diagram-carousel.tsx delete mode 100644 docs/src/components/mdx.tsx delete mode 100644 docs/src/components/mermaid.tsx delete mode 100644 docs/src/components/provider.tsx delete mode 100644 docs/src/components/search.tsx delete mode 100644 docs/src/components/ui/button.tsx delete mode 100644 docs/src/components/ui/code-panel.tsx delete mode 100644 docs/src/components/ui/index.ts delete mode 100644 docs/src/components/ui/section-header.tsx delete mode 100644 docs/src/lib/cn.ts delete mode 100644 docs/src/lib/highlight.tsx delete mode 100644 docs/src/lib/landing-content.tsx delete mode 100644 docs/src/lib/layout.shared.tsx delete mode 100644 docs/src/lib/release.ts delete mode 100644 docs/src/lib/shared.ts delete mode 100644 docs/src/lib/source.ts create mode 100644 docs/vite.config.ts diff --git a/docs/.gitignore b/docs/.gitignore index 9e429e49..8c074087 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -23,4 +23,7 @@ yarn-error.log* # others .env*.local .vercel -next-env.d.ts \ No newline at end of file +next-env.d.ts +# React Router +.react-router/ +build/ diff --git a/docs/app/app.css b/docs/app/app.css new file mode 100644 index 00000000..fff94dcb --- /dev/null +++ b/docs/app/app.css @@ -0,0 +1,35 @@ +@import "tailwindcss"; + +/* Minimal theme tokens for Phase 1; the full design system (theme.css + docs.css + port) lands in Phase 2. */ +:root { + --bg: #08080c; + --txt: #ececf4; + --accent: #3bbf72; +} +html[data-theme="light"] { + --bg: #f6f4ee; + --txt: #1b1a15; + --accent: #13a44e; +} + +body { + background: var(--bg); + color: var(--txt); + font-family: "IBM Plex Sans", system-ui, sans-serif; + margin: 0; +} + +.landing-stub { + max-width: 880px; + margin: 0 auto; + padding: 120px 32px; +} +.landing-stub h1 { + font-size: 48px; + letter-spacing: -0.03em; +} +.landing-stub p { + color: var(--accent); + font-family: "IBM Plex Mono", monospace; +} diff --git a/docs/app/lib/doc-paths.ts b/docs/app/lib/doc-paths.ts new file mode 100644 index 00000000..233dee1f --- /dev/null +++ b/docs/app/lib/doc-paths.ts @@ -0,0 +1,40 @@ +import { readdirSync } from "node:fs"; +import { join, relative, sep } from "node:path"; +import { fileURLToPath } from "node:url"; + +// Filesystem walk of the MDX content tree, used by react-router.config's +// `prerender()` to enumerate every static doc URL at build time. The runtime +// router (app/lib/content.ts) maps the same files via import.meta.glob — both +// derive slugs identically so the prerendered set matches the served routes. + +const CONTENT_DIR = fileURLToPath( + new URL("../../content/docs", import.meta.url), +); + +/** `content/docs/a/b.mdx` → `/a/b`; `…/a/index.mdx` → `/a`. */ +export function fileToDocPath(absFile: string): string { + const rel = relative(CONTENT_DIR, absFile).replace(/\.mdx$/, ""); + const parts = rel.split(sep); + if (parts[parts.length - 1] === "index") { + parts.pop(); + } + return `/${parts.join("/")}`.replace(/\/$/, "") || "/"; +} + +function walk(dir: string, out: string[]): void { + for (const entry of readdirSync(dir, { withFileTypes: true })) { + const full = join(dir, entry.name); + if (entry.isDirectory()) { + walk(full, out); + } else if (entry.name.endsWith(".mdx")) { + out.push(full); + } + } +} + +/** Every doc URL (e.g. `/getting-started/installation`, `/node/workflows/saga`). */ +export function allDocPaths(): string[] { + const files: string[] = []; + walk(CONTENT_DIR, files); + return files.map(fileToDocPath).filter((p) => p !== "/"); +} diff --git a/docs/app/root.tsx b/docs/app/root.tsx new file mode 100644 index 00000000..c2b0ba90 --- /dev/null +++ b/docs/app/root.tsx @@ -0,0 +1,62 @@ +import { + isRouteErrorResponse, + Links, + Meta, + Outlet, + Scripts, + ScrollRestoration, +} from "react-router"; +import type { Route } from "./+types/root"; +import "./app.css"; + +export const links: Route.LinksFunction = () => [ + { rel: "preconnect", href: "https://fonts.googleapis.com" }, + { + rel: "preconnect", + href: "https://fonts.gstatic.com", + crossOrigin: "anonymous", + }, + { + rel: "stylesheet", + href: "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=IBM+Plex+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&family=Shantell+Sans:wght@500;600;700&display=swap", + }, +]; + +// Apply the persisted theme before paint to avoid a light/dark flash. +const THEME_INIT = `(function(){try{var t=localStorage.getItem('taskito-theme')||'dark';document.documentElement.setAttribute('data-theme',t);}catch(e){}})();`; + +export function Layout({ children }: { children: React.ReactNode }) { + return ( + + + + + {/* biome-ignore lint/security/noDangerouslySetInnerHtml: tiny no-flash theme bootstrap */} +