From 5801642b25d89c84fd923ac4f8d2b1acb39bd84f Mon Sep 17 00:00:00 2001 From: Ben Holmes Date: Tue, 24 Feb 2026 20:51:51 +0000 Subject: [PATCH] SEO: add site config, robots.txt, improve titles/descriptions, add structured data - Add site URL to astro.config.mjs enabling canonical URLs, OG URLs, and sitemap generation - Add Organization JSON-LD structured data via Starlight head config - Add robots.txt with sitemap reference - Improve page titles: remove emoji prefixes, add descriptive keywords - Improve meta descriptions: specific, compelling, ~150 chars with feature mentions - Remove redundant head title override on index page - Improve internal link anchor text from generic 'Documentation' to descriptive text - Add video fallback text in stream.md for crawlers Co-Authored-By: Oz --- www/astro.config.mjs | 16 ++++++++++++++++ www/public/robots.txt | 6 ++++++ www/src/content/docs/form/client.md | 4 ++-- www/src/content/docs/form/index.mdx | 4 ++-- www/src/content/docs/form/parse.md | 4 ++-- www/src/content/docs/index.mdx | 13 +++++-------- www/src/content/docs/query.mdx | 4 ++-- www/src/content/docs/scope.mdx | 4 ++-- www/src/content/docs/store.mdx | 6 +++--- www/src/content/docs/stream.md | 8 +++++--- 10 files changed, 45 insertions(+), 24 deletions(-) create mode 100644 www/public/robots.txt diff --git a/www/astro.config.mjs b/www/astro.config.mjs index 0d7e4c1..b2d1946 100644 --- a/www/astro.config.mjs +++ b/www/astro.config.mjs @@ -2,9 +2,25 @@ import starlight from "@astrojs/starlight"; import { defineConfig } from "astro/config"; export default defineConfig({ + site: "https://simple-stack.dev", integrations: [ starlight({ title: "Simple Stack 🌱", + head: [ + { + tag: "script", + attrs: { type: "application/ld+json" }, + content: JSON.stringify({ + "@context": "https://schema.org", + "@type": "Organization", + name: "Simple Stack", + url: "https://simple-stack.dev", + sameAs: [ + "https://github.com/bholmesdev/simple-stack", + ], + }), + }, + ], social: [ { icon: "github", diff --git a/www/public/robots.txt b/www/public/robots.txt new file mode 100644 index 0000000..9496de7 --- /dev/null +++ b/www/public/robots.txt @@ -0,0 +1,6 @@ +User-agent: * +Allow: / + +Disallow: /api/ + +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..e46c010 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: Client-Side Form Validation with Simple Form +description: "Add client-side validation to your Astro forms using the reward-early, punish-late pattern. Generate validated form components with the simple-form CLI." sidebar: order: 3 --- diff --git a/www/src/content/docs/form/index.mdx b/www/src/content/docs/form/index.mdx index 3e1654e..b3f7568 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 - Fullstack Form Validation (Deprecated) +description: "Validate forms server-side and client-side with Zod schemas in Astro. Auto-generates input props and handles parsing. No longer maintained." 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..4e46bee 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: Server-Side Form Parsing with Simple Form +description: "Parse and validate form requests server-side using Zod schemas. Use validateForm() for any framework or Astro.locals.form for Astro frontmatter." sidebar: order: 2 --- diff --git a/www/src/content/docs/index.mdx b/www/src/content/docs/index.mdx index 1e6d15c..eac6dcd 100644 --- a/www/src/content/docs/index.mdx +++ b/www/src/content/docs/index.mdx @@ -1,10 +1,7 @@ --- -title: Simple stack 🌱 -description: A suite of tools built for Astro to simplify your workflow. +title: Simple Stack - Lightweight Tools for Astro & Vite +description: "Simple Stack is a collection of lightweight libraries for Astro and Vite: reactive stores with selectors, scoped IDs, and DOM querying for components." tableOfContents: false -head: - - tag: title - content: Simple stack 🌱 --- A collection of tools I've built to **make web development simpler.** @@ -17,19 +14,19 @@ import { CardGrid, Card, LinkCard } from '@astrojs/starlight/components'; A reactive store that combines the simplicity of signals with the power of "selectors" you'd find in Zustand. - + A vite plugin that generates scoped IDs for any file you're in. Perfect for form label IDs and query selectors. - + A simple way to add JS scripts to Astro components. - + diff --git a/www/src/content/docs/query.mdx b/www/src/content/docs/query.mdx index 5549582..cfb83d8 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 - DOM Querying for Astro Components +description: "Query the DOM from Astro components with scoped selectors, signal-based state, and automatic cleanup for view transitions." --- 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..28dc0b4 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 - Build-Time Scoped IDs for Vite +description: "A Vite plugin that generates unique scoped IDs per file at build time with zero client JS. Works with Astro, Nuxt, SvelteKit, and any Vite framework." --- import { LinkCard } from '@astrojs/starlight/components'; diff --git a/www/src/content/docs/store.mdx b/www/src/content/docs/store.mdx index cda86d1..832aa7e 100644 --- a/www/src/content/docs/store.mdx +++ b/www/src/content/docs/store.mdx @@ -1,8 +1,8 @@ --- -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 - Reactive State with Selectors +description: "A lightweight reactive store for React and Astro. Combine signal-like simplicity with Zustand-style selectors, sub-stores, and middleware support." sidebar: - label: Get started + label: "💾 Get started" order: 1 --- diff --git a/www/src/content/docs/stream.md b/www/src/content/docs/stream.md index 5c734fb..6577e15 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 - Suspense for Astro (Deprecated) +description: "Suspend Astro components with fallback content and out-of-order streaming. Like React Server Components, but Just HTML. No longer maintained." --- :::caution @@ -9,7 +9,9 @@ description: Suspend Astro components with fallback content. Like React Server C Suspend Astro components with fallback content. Like React Server Components, but Just HTML ™️ - + ```astro ---