diff --git a/www/astro.config.mjs b/www/astro.config.mjs index 0d7e4c1..d62b33a 100644 --- a/www/astro.config.mjs +++ b/www/astro.config.mjs @@ -1,10 +1,68 @@ +import sitemap from "@astrojs/sitemap"; import starlight from "@astrojs/starlight"; import { defineConfig } from "astro/config"; +// JSON-LD structured data for AEO / AI citations. +// Identifies the project as a SoftwareApplication with linked source repos and +// Organization metadata so AI engines (ChatGPT, Perplexity, Gemini AI Overviews) +// can attribute answers correctly. +const structuredData = { + "@context": "https://schema.org", + "@graph": [ + { + "@type": "Organization", + "@id": "https://simple-stack.dev/#organization", + name: "Simple Stack", + url: "https://simple-stack.dev", + logo: "https://simple-stack.dev/favicon.svg", + sameAs: [ + "https://github.com/bholmesdev/simple-stack", + "https://wtw.dev/chat", + ], + }, + { + "@type": "WebSite", + "@id": "https://simple-stack.dev/#website", + url: "https://simple-stack.dev", + name: "Simple Stack", + description: + "Simple Stack is a suite of small, focused tools for Astro developers covering reactive state, scoped IDs, DOM queries, and streaming.", + publisher: { "@id": "https://simple-stack.dev/#organization" }, + inLanguage: "en", + }, + ], +}; + export default defineConfig({ + site: "https://simple-stack.dev", integrations: [ starlight({ title: "Simple Stack 🌱", + description: + "Simple Stack is a suite of small, focused tools for Astro developers: reactive stores, scoped IDs, DOM queries, and streaming.", + favicon: "/favicon.svg", + head: [ + { + tag: "script", + attrs: { type: "application/ld+json" }, + content: JSON.stringify(structuredData), + }, + { + tag: "meta", + attrs: { + name: "robots", + content: "index, follow, max-image-preview:large", + }, + }, + { + tag: "meta", + attrs: { property: "og:site_name", content: "Simple Stack" }, + }, + { + tag: "meta", + attrs: { name: "twitter:card", content: "summary_large_image" }, + }, + ], social: [ { icon: "github", @@ -44,5 +102,6 @@ export default defineConfig({ "./src/styles/custom.css", ], }), + sitemap(), ], }); diff --git a/www/package.json b/www/package.json index 8afa5ca..e80a24b 100644 --- a/www/package.json +++ b/www/package.json @@ -17,6 +17,7 @@ }, "dependencies": { "@astrojs/check": "^0.9.6", + "@astrojs/sitemap": "^3.6.0", "@astrojs/starlight": "^0.37.1", "@fontsource/atkinson-hyperlegible": "^5.0.18", "astro": "^5.16.6", diff --git a/www/public/robots.txt b/www/public/robots.txt new file mode 100644 index 0000000..3214756 --- /dev/null +++ b/www/public/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://simple-stack.dev/sitemap-index.xml diff --git a/www/src/content/docs/form/client.md b/www/src/content/docs/form/client.md index 884c722..00eb281 100644 --- a/www/src/content/docs/form/client.md +++ b/www/src/content/docs/form/client.md @@ -1,6 +1,6 @@ --- -title: Add client validation -description: Add client validation to your forms +title: Add client validation +description: "Deprecated: Add accessible client-side form validation to Simple Form using the reward-early, punish-late pattern with framework-agnostic generated components." sidebar: order: 3 --- diff --git a/www/src/content/docs/form/index.mdx b/www/src/content/docs/form/index.mdx index 3e1654e..22c978e 100644 --- a/www/src/content/docs/form/index.mdx +++ b/www/src/content/docs/form/index.mdx @@ -1,6 +1,6 @@ --- -title: Simple form -description: The simple way to validate forms in your fullstack app. +title: Simple Form +description: "Deprecated: Simple Form is a fullstack form library for Astro that validates inputs server-side and client-side using Zod schemas." sidebar: label: Get started order: 1 diff --git a/www/src/content/docs/form/parse.md b/www/src/content/docs/form/parse.md index 35116f9..7da5478 100644 --- a/www/src/content/docs/form/parse.md +++ b/www/src/content/docs/form/parse.md @@ -1,6 +1,6 @@ --- -title: Parse form requests -description: Validate forms server-side +title: Parse form requests +description: "Deprecated: Validate POST form requests in Astro using Simple Form's validateForm() helper or the Astro.locals.form API with a Zod schema." sidebar: order: 2 --- diff --git a/www/src/content/docs/index.mdx b/www/src/content/docs/index.mdx index 1e6d15c..14d1e58 100644 --- a/www/src/content/docs/index.mdx +++ b/www/src/content/docs/index.mdx @@ -1,10 +1,10 @@ --- -title: Simple stack 🌱 -description: A suite of tools built for Astro to simplify your workflow. +title: Simple Stack +description: Simple Stack is a suite of small, focused tools for Astro developers, including a reactive store, scoped IDs, and a DOM query helper. tableOfContents: false head: - tag: title - content: Simple stack 🌱 + content: "Simple Stack: Astro tools for state, scope, and DOM queries" --- A collection of tools I've built to **make web development simpler.** diff --git a/www/src/content/docs/query.mdx b/www/src/content/docs/query.mdx index 5549582..c6693bc 100644 --- a/www/src/content/docs/query.mdx +++ b/www/src/content/docs/query.mdx @@ -1,6 +1,6 @@ --- -title: 💰 Simple Query -description: A simple library to query the DOM from your Astro components. +title: Simple Query +description: Simple Query is an Astro integration for querying the DOM with scoped data-target attributes, signals, and view-transition-safe cleanup. --- import { Tabs, TabItem, LinkCard } from '@astrojs/starlight/components'; diff --git a/www/src/content/docs/scope.mdx b/www/src/content/docs/scope.mdx index 93740de..72d8b71 100644 --- a/www/src/content/docs/scope.mdx +++ b/www/src/content/docs/scope.mdx @@ -1,6 +1,6 @@ --- -title: 🔎 Simple scope -description: Get a scoped ID for whatever file you're in. Resolved at build-time with zero client JS. +title: Simple Scope +description: Simple Scope is a Vite plugin that generates a stable, file-scoped ID at build time. Use it for form labels, query selectors, and scoped DOM ids. --- import { LinkCard } from '@astrojs/starlight/components'; diff --git a/www/src/content/docs/store.mdx b/www/src/content/docs/store.mdx index cda86d1..16f63bf 100644 --- a/www/src/content/docs/store.mdx +++ b/www/src/content/docs/store.mdx @@ -1,6 +1,6 @@ --- -title: 💾 Simple store -description: A reactive store that combines the simplicity of signals with the power of "selectors" you'd find in Zustand or Redux. +title: Simple Store +description: Simple Store is a reactive state library for React and Astro that combines signal-style get/set with Zustand-style selectors and middleware. sidebar: label: Get started order: 1 diff --git a/www/src/content/docs/stream.md b/www/src/content/docs/stream.md index 5c734fb..b1c9752 100644 --- a/www/src/content/docs/stream.md +++ b/www/src/content/docs/stream.md @@ -1,6 +1,6 @@ --- -title: Simple stream 🌊 -description: Suspend Astro components with fallback content. Like React Server Components, but Just HTML ™️ +title: Simple Stream +description: "Deprecated: Simple Stream lets Astro components suspend with fallback content, similar to React Server Components but with plain HTML streaming." --- :::caution