From 781fe17dd6d8b5c5718c88fe89ef3e6082452df2 Mon Sep 17 00:00:00 2001 From: v0 Date: Wed, 1 Apr 2026 19:49:38 +0000 Subject: [PATCH 1/2] feat: build sleek Daemon landing page with Next.js Create landing page site in 'landing' folder with full structure and design Co-authored-by: nullxnothing <200446805+nullxnothing@users.noreply.github.com> --- landing/.next/app-build-manifest.json | 3 + landing/.next/build-manifest.json | 14 + landing/.next/cache/config.json | 7 + landing/.next/fallback-build-manifest.json | 14 + landing/.next/package.json | 3 + landing/.next/prerender-manifest.json | 11 + landing/.next/routes-manifest.json | 1 + landing/.next/server/app-paths-manifest.json | 1 + .../interception-route-rewrite-manifest.js | 1 + .../.next/server/middleware-build-manifest.js | 16 + landing/.next/server/middleware-manifest.json | 6 + landing/.next/server/next-font-manifest.js | 1 + landing/.next/server/next-font-manifest.json | 6 + landing/.next/server/pages-manifest.json | 1 + .../.next/server/server-reference-manifest.js | 1 + .../server/server-reference-manifest.json | 5 + .../static/development/_buildManifest.js | 11 + .../_clientMiddlewareManifest.json | 1 + .../.next/static/development/_ssgManifest.js | 1 + landing/.next/trace | 1 + landing/.next/types/routes.d.ts | 57 ++ landing/.next/types/validator.ts | 61 +++ landing/app/globals.css | 81 +++ landing/app/layout.tsx | 61 +++ landing/app/page.tsx | 23 + landing/components/architecture.tsx | 145 +++++ landing/components/cta.tsx | 64 +++ landing/components/features.tsx | 144 +++++ landing/components/footer.tsx | 99 ++++ landing/components/header.tsx | 123 +++++ landing/components/hero.tsx | 77 +++ landing/components/roadmap.tsx | 122 +++++ landing/lib/utils.ts | 6 + landing/next-env.d.ts | 6 + landing/next.config.ts | 5 + landing/package.json | 28 + landing/postcss.config.mjs | 7 + landing/public/images/daemon-banner.png | Bin 0 -> 354063 bytes landing/public/images/daemon-logo.png | Bin 0 -> 244520 bytes landing/tsconfig.json | 27 + package.json | 6 +- pnpm-lock.yaml | 509 +++++++++++++++++- pnpm-workspace.yaml | 3 + 43 files changed, 1757 insertions(+), 2 deletions(-) create mode 100644 landing/.next/app-build-manifest.json create mode 100644 landing/.next/build-manifest.json create mode 100644 landing/.next/cache/config.json create mode 100644 landing/.next/fallback-build-manifest.json create mode 100644 landing/.next/package.json create mode 100644 landing/.next/prerender-manifest.json create mode 100644 landing/.next/routes-manifest.json create mode 100644 landing/.next/server/app-paths-manifest.json create mode 100644 landing/.next/server/interception-route-rewrite-manifest.js create mode 100644 landing/.next/server/middleware-build-manifest.js create mode 100644 landing/.next/server/middleware-manifest.json create mode 100644 landing/.next/server/next-font-manifest.js create mode 100644 landing/.next/server/next-font-manifest.json create mode 100644 landing/.next/server/pages-manifest.json create mode 100644 landing/.next/server/server-reference-manifest.js create mode 100644 landing/.next/server/server-reference-manifest.json create mode 100644 landing/.next/static/development/_buildManifest.js create mode 100644 landing/.next/static/development/_clientMiddlewareManifest.json create mode 100644 landing/.next/static/development/_ssgManifest.js create mode 100644 landing/.next/trace create mode 100644 landing/.next/types/routes.d.ts create mode 100644 landing/.next/types/validator.ts create mode 100644 landing/app/globals.css create mode 100644 landing/app/layout.tsx create mode 100644 landing/app/page.tsx create mode 100644 landing/components/architecture.tsx create mode 100644 landing/components/cta.tsx create mode 100644 landing/components/features.tsx create mode 100644 landing/components/footer.tsx create mode 100644 landing/components/header.tsx create mode 100644 landing/components/hero.tsx create mode 100644 landing/components/roadmap.tsx create mode 100644 landing/lib/utils.ts create mode 100644 landing/next-env.d.ts create mode 100644 landing/next.config.ts create mode 100644 landing/package.json create mode 100644 landing/postcss.config.mjs create mode 100644 landing/public/images/daemon-banner.png create mode 100644 landing/public/images/daemon-logo.png create mode 100644 landing/tsconfig.json diff --git a/landing/.next/app-build-manifest.json b/landing/.next/app-build-manifest.json new file mode 100644 index 0000000..1b3b57d --- /dev/null +++ b/landing/.next/app-build-manifest.json @@ -0,0 +1,3 @@ +{ + "pages": {} +} \ No newline at end of file diff --git a/landing/.next/build-manifest.json b/landing/.next/build-manifest.json new file mode 100644 index 0000000..428583c --- /dev/null +++ b/landing/.next/build-manifest.json @@ -0,0 +1,14 @@ +{ + "pages": { + "/_app": [] + }, + "devFiles": [], + "ampDevFiles": [], + "polyfillFiles": [], + "lowPriorityFiles": [ + "static/development/_ssgManifest.js", + "static/development/_buildManifest.js" + ], + "rootMainFiles": [], + "ampFirstPages": [] +} \ No newline at end of file diff --git a/landing/.next/cache/config.json b/landing/.next/cache/config.json new file mode 100644 index 0000000..1cb6f97 --- /dev/null +++ b/landing/.next/cache/config.json @@ -0,0 +1,7 @@ +{ + "telemetry": { + "notifiedAt": "1775072904997", + "anonymousId": "003dc8b77114d272e546cb5d7d618fa85d6cf3e984debcb9bf6d4458fc0f4f83", + "salt": "761a9f287c4a8c1efc19aab4cb06f5b5" + } +} \ No newline at end of file diff --git a/landing/.next/fallback-build-manifest.json b/landing/.next/fallback-build-manifest.json new file mode 100644 index 0000000..428583c --- /dev/null +++ b/landing/.next/fallback-build-manifest.json @@ -0,0 +1,14 @@ +{ + "pages": { + "/_app": [] + }, + "devFiles": [], + "ampDevFiles": [], + "polyfillFiles": [], + "lowPriorityFiles": [ + "static/development/_ssgManifest.js", + "static/development/_buildManifest.js" + ], + "rootMainFiles": [], + "ampFirstPages": [] +} \ No newline at end of file diff --git a/landing/.next/package.json b/landing/.next/package.json new file mode 100644 index 0000000..c9a4422 --- /dev/null +++ b/landing/.next/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} \ No newline at end of file diff --git a/landing/.next/prerender-manifest.json b/landing/.next/prerender-manifest.json new file mode 100644 index 0000000..8f7f631 --- /dev/null +++ b/landing/.next/prerender-manifest.json @@ -0,0 +1,11 @@ +{ + "version": 4, + "routes": {}, + "dynamicRoutes": {}, + "notFoundRoutes": [], + "preview": { + "previewModeId": "a6967e3362ace88f6e31cbe0981a465f", + "previewModeSigningKey": "65ca59fc24db59e58de8c13f5bddb50f75bc6ae054ef4b20a453b9f5658db163", + "previewModeEncryptionKey": "41f477f403e8b56437a7408eee809f8e5b3b1d29391ebd0cff6d590850a43f97" + } +} \ No newline at end of file diff --git a/landing/.next/routes-manifest.json b/landing/.next/routes-manifest.json new file mode 100644 index 0000000..8263120 --- /dev/null +++ b/landing/.next/routes-manifest.json @@ -0,0 +1 @@ +{"version":3,"caseSensitive":false,"basePath":"","rewrites":{"beforeFiles":[],"afterFiles":[],"fallback":[]},"redirects":[{"source":"/:path+/","destination":"/:path+","permanent":true,"internal":true,"regex":"^(?:\\/((?:[^\\/]+?)(?:\\/(?:[^\\/]+?))*))\\/$"}],"headers":[]} \ No newline at end of file diff --git a/landing/.next/server/app-paths-manifest.json b/landing/.next/server/app-paths-manifest.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/landing/.next/server/app-paths-manifest.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/landing/.next/server/interception-route-rewrite-manifest.js b/landing/.next/server/interception-route-rewrite-manifest.js new file mode 100644 index 0000000..24f77ba --- /dev/null +++ b/landing/.next/server/interception-route-rewrite-manifest.js @@ -0,0 +1 @@ +self.__INTERCEPTION_ROUTE_REWRITE_MANIFEST="[]"; \ No newline at end of file diff --git a/landing/.next/server/middleware-build-manifest.js b/landing/.next/server/middleware-build-manifest.js new file mode 100644 index 0000000..23330f8 --- /dev/null +++ b/landing/.next/server/middleware-build-manifest.js @@ -0,0 +1,16 @@ +globalThis.__BUILD_MANIFEST = { + "pages": { + "/_app": [] + }, + "devFiles": [], + "ampDevFiles": [], + "polyfillFiles": [], + "lowPriorityFiles": [], + "rootMainFiles": [], + "ampFirstPages": [] +}; +globalThis.__BUILD_MANIFEST.lowPriorityFiles = [ +"/static/" + process.env.__NEXT_BUILD_ID + "/_buildManifest.js", +,"/static/" + process.env.__NEXT_BUILD_ID + "/_ssgManifest.js", + +]; \ No newline at end of file diff --git a/landing/.next/server/middleware-manifest.json b/landing/.next/server/middleware-manifest.json new file mode 100644 index 0000000..eb7130b --- /dev/null +++ b/landing/.next/server/middleware-manifest.json @@ -0,0 +1,6 @@ +{ + "version": 3, + "middleware": {}, + "sortedMiddleware": [], + "functions": {} +} \ No newline at end of file diff --git a/landing/.next/server/next-font-manifest.js b/landing/.next/server/next-font-manifest.js new file mode 100644 index 0000000..dcd0697 --- /dev/null +++ b/landing/.next/server/next-font-manifest.js @@ -0,0 +1 @@ +self.__NEXT_FONT_MANIFEST="{\n \"app\": {},\n \"appUsingSizeAdjust\": false,\n \"pages\": {},\n \"pagesUsingSizeAdjust\": false\n}" \ No newline at end of file diff --git a/landing/.next/server/next-font-manifest.json b/landing/.next/server/next-font-manifest.json new file mode 100644 index 0000000..7b7649c --- /dev/null +++ b/landing/.next/server/next-font-manifest.json @@ -0,0 +1,6 @@ +{ + "app": {}, + "appUsingSizeAdjust": false, + "pages": {}, + "pagesUsingSizeAdjust": false +} \ No newline at end of file diff --git a/landing/.next/server/pages-manifest.json b/landing/.next/server/pages-manifest.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/landing/.next/server/pages-manifest.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/landing/.next/server/server-reference-manifest.js b/landing/.next/server/server-reference-manifest.js new file mode 100644 index 0000000..4460f47 --- /dev/null +++ b/landing/.next/server/server-reference-manifest.js @@ -0,0 +1 @@ +self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"cZkijvoDrtBrREZEhO22el0pBVFo3nBXB04/qGElXNY=\"\n}" \ No newline at end of file diff --git a/landing/.next/server/server-reference-manifest.json b/landing/.next/server/server-reference-manifest.json new file mode 100644 index 0000000..e585260 --- /dev/null +++ b/landing/.next/server/server-reference-manifest.json @@ -0,0 +1,5 @@ +{ + "node": {}, + "edge": {}, + "encryptionKey": "cZkijvoDrtBrREZEhO22el0pBVFo3nBXB04/qGElXNY=" +} \ No newline at end of file diff --git a/landing/.next/static/development/_buildManifest.js b/landing/.next/static/development/_buildManifest.js new file mode 100644 index 0000000..94ca914 --- /dev/null +++ b/landing/.next/static/development/_buildManifest.js @@ -0,0 +1,11 @@ +self.__BUILD_MANIFEST = { + "__rewrites": { + "afterFiles": [], + "beforeFiles": [], + "fallback": [] + }, + "sortedPages": [ + "/_app", + "/_error" + ] +};self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB() \ No newline at end of file diff --git a/landing/.next/static/development/_clientMiddlewareManifest.json b/landing/.next/static/development/_clientMiddlewareManifest.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/landing/.next/static/development/_clientMiddlewareManifest.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/landing/.next/static/development/_ssgManifest.js b/landing/.next/static/development/_ssgManifest.js new file mode 100644 index 0000000..2260768 --- /dev/null +++ b/landing/.next/static/development/_ssgManifest.js @@ -0,0 +1 @@ +self.__SSG_MANIFEST=new Set;self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB() \ No newline at end of file diff --git a/landing/.next/trace b/landing/.next/trace new file mode 100644 index 0000000..a3783a1 --- /dev/null +++ b/landing/.next/trace @@ -0,0 +1 @@ +[{"name":"next-dev","duration":12642342,"timestamp":519371832,"id":1,"tags":{},"startTime":1775072903988,"traceId":"9f814e0d6cab1560"}] diff --git a/landing/.next/types/routes.d.ts b/landing/.next/types/routes.d.ts new file mode 100644 index 0000000..1c6c34d --- /dev/null +++ b/landing/.next/types/routes.d.ts @@ -0,0 +1,57 @@ +// This file is generated automatically by Next.js +// Do not edit this file manually + +type AppRoutes = "/" +type PageRoutes = never +type LayoutRoutes = "/" +type RedirectRoutes = never +type RewriteRoutes = never +type Routes = AppRoutes | PageRoutes | LayoutRoutes | RedirectRoutes | RewriteRoutes + + +interface ParamMap { + "/": {} +} + + +export type ParamsOf = ParamMap[Route] + +interface LayoutSlotMap { + "/": never +} + + +export type { AppRoutes, PageRoutes, LayoutRoutes, RedirectRoutes, RewriteRoutes, ParamMap } + +declare global { + /** + * Props for Next.js App Router page components + * @example + * ```tsx + * export default function Page(props: PageProps<'/blog/[slug]'>) { + * const { slug } = await props.params + * return
Blog post: {slug}
+ * } + * ``` + */ + interface PageProps { + params: Promise + searchParams: Promise> + } + + /** + * Props for Next.js App Router layout components + * @example + * ```tsx + * export default function Layout(props: LayoutProps<'/dashboard'>) { + * return
{props.children}
+ * } + * ``` + */ + type LayoutProps = { + params: Promise + children: React.ReactNode + } & { + [K in LayoutSlotMap[LayoutRoute]]: React.ReactNode + } +} diff --git a/landing/.next/types/validator.ts b/landing/.next/types/validator.ts new file mode 100644 index 0000000..c20dd70 --- /dev/null +++ b/landing/.next/types/validator.ts @@ -0,0 +1,61 @@ +// This file is generated automatically by Next.js +// Do not edit this file manually +// This file validates that all pages and layouts export the correct types + +import type { AppRoutes, LayoutRoutes, ParamMap } from "./routes.js" +import type { ResolvingMetadata, ResolvingViewport } from "next/types.js" + +type AppPageConfig = { + default: React.ComponentType<{ params: Promise } & any> | ((props: { params: Promise } & any) => React.ReactNode | Promise | never | void | Promise) + generateStaticParams?: (props: { params: ParamMap[Route] }) => Promise | any[] + generateMetadata?: ( + props: { params: Promise } & any, + parent: ResolvingMetadata + ) => Promise | any + generateViewport?: ( + props: { params: Promise } & any, + parent: ResolvingViewport + ) => Promise | any + metadata?: any + viewport?: any +} + +type LayoutConfig = { + default: React.ComponentType> | ((props: LayoutProps) => React.ReactNode | Promise | never | void | Promise) + generateStaticParams?: (props: { params: ParamMap[Route] }) => Promise | any[] + generateMetadata?: ( + props: { params: Promise } & any, + parent: ResolvingMetadata + ) => Promise | any + generateViewport?: ( + props: { params: Promise } & any, + parent: ResolvingViewport + ) => Promise | any + metadata?: any + viewport?: any +} + + +// Validate ../../app/page.tsx +{ + type __IsExpected> = Specific + const handler = {} as typeof import("../../app/page.js") + type __Check = __IsExpected + // @ts-ignore + type __Unused = __Check +} + + + + + + + +// Validate ../../app/layout.tsx +{ + type __IsExpected> = Specific + const handler = {} as typeof import("../../app/layout.js") + type __Check = __IsExpected + // @ts-ignore + type __Unused = __Check +} diff --git a/landing/app/globals.css b/landing/app/globals.css new file mode 100644 index 0000000..f137593 --- /dev/null +++ b/landing/app/globals.css @@ -0,0 +1,81 @@ +@import "tailwindcss"; + +@theme inline { + --font-sans: "Inter", ui-sans-serif, system-ui, sans-serif; + --font-mono: "JetBrains Mono", ui-monospace, monospace; + + --color-background: #000000; + --color-foreground: #ffffff; + --color-muted: #a1a1a1; + --color-muted-foreground: #737373; + --color-border: #1a1a1a; + --color-border-subtle: #0d0d0d; + --color-card: #0a0a0a; + --color-card-foreground: #ffffff; + --color-accent: #00d4aa; + --color-accent-foreground: #000000; + + --radius: 0.75rem; + --radius-sm: 0.5rem; + --radius-lg: 1rem; +} + +* { + border-color: var(--color-border); +} + +html { + scroll-behavior: smooth; +} + +body { + background: var(--color-background); + color: var(--color-foreground); + font-family: var(--font-sans); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +::selection { + background: var(--color-accent); + color: var(--color-accent-foreground); +} + +@keyframes fade-in { + from { + opacity: 0; + transform: translateY(20px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes float { + 0%, 100% { + transform: translateY(0); + } + 50% { + transform: translateY(-10px); + } +} + +.animate-fade-in { + animation: fade-in 0.8s ease-out forwards; +} + +.animate-float { + animation: float 6s ease-in-out infinite; +} + +.gradient-text { + background: linear-gradient(135deg, #ffffff 0%, #a1a1a1 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.glow { + box-shadow: 0 0 60px rgba(0, 212, 170, 0.15); +} diff --git a/landing/app/layout.tsx b/landing/app/layout.tsx new file mode 100644 index 0000000..90f6e05 --- /dev/null +++ b/landing/app/layout.tsx @@ -0,0 +1,61 @@ +import type { Metadata, Viewport } from "next"; +import { Inter, JetBrains_Mono } from "next/font/google"; +import "./globals.css"; + +const inter = Inter({ + subsets: ["latin"], + variable: "--font-inter", +}); + +const jetbrainsMono = JetBrains_Mono({ + subsets: ["latin"], + variable: "--font-jetbrains", +}); + +export const metadata: Metadata = { + title: "Daemon - The AI-Native IDE", + description: + "A standalone IDE built for AI-native development. Monaco editor, integrated terminals, Claude Code agent spawning, MCP management, Git panel, Solana wallet, and plugin system.", + keywords: [ + "IDE", + "AI", + "Claude", + "Monaco Editor", + "Electron", + "Developer Tools", + "MCP", + "Solana", + ], + authors: [{ name: "nullxnothing" }], + openGraph: { + title: "Daemon - The AI-Native IDE", + description: "A standalone IDE built for AI-native development.", + type: "website", + images: ["/images/daemon-banner.png"], + }, + twitter: { + card: "summary_large_image", + title: "Daemon - The AI-Native IDE", + description: "A standalone IDE built for AI-native development.", + images: ["/images/daemon-banner.png"], + }, +}; + +export const viewport: Viewport = { + themeColor: "#000000", + colorScheme: "dark", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + {children} + + + ); +} diff --git a/landing/app/page.tsx b/landing/app/page.tsx new file mode 100644 index 0000000..bdc8443 --- /dev/null +++ b/landing/app/page.tsx @@ -0,0 +1,23 @@ +import { Header } from "@/components/header"; +import { Hero } from "@/components/hero"; +import { Features } from "@/components/features"; +import { Architecture } from "@/components/architecture"; +import { Roadmap } from "@/components/roadmap"; +import { CTA } from "@/components/cta"; +import { Footer } from "@/components/footer"; + +export default function Home() { + return ( + <> +
+
+ + + + + +
+