From bd175c1a7395526937023fad8bea7799c9bf279a Mon Sep 17 00:00:00 2001 From: Ben Holmes Date: Fri, 20 Mar 2026 09:04:39 +0000 Subject: [PATCH] feat(www): SEO/AEO audit fixes - Add site URL config to enable sitemap generation and canonical URLs - Add robots.txt with sitemap reference - Add Organization and WebSite JSON-LD structured data - Add Open Graph and Twitter Card meta tags - Improve homepage title and description for search engines - Improve meta descriptions across all documentation pages - Clean up emoji-only page titles for better SERP display Co-Authored-By: Oz --- www/astro.config.mjs | 40 +++++++++++++++++++++++++++++ www/public/robots.txt | 4 +++ 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 | 10 +++----- www/src/content/docs/stream.md | 4 +-- 7 files changed, 56 insertions(+), 14 deletions(-) create mode 100644 www/public/robots.txt diff --git a/www/astro.config.mjs b/www/astro.config.mjs index 0d7e4c1..9c0458e 100644 --- a/www/astro.config.mjs +++ b/www/astro.config.mjs @@ -2,6 +2,7 @@ import starlight from "@astrojs/starlight"; import { defineConfig } from "astro/config"; export default defineConfig({ + site: "https://simple-stack.dev", integrations: [ starlight({ title: "Simple Stack 🌱", @@ -13,6 +14,45 @@ export default defineConfig({ }, { icon: "discord", label: "Discord", href: "https://wtw.dev/chat" }, ], + head: [ + { + tag: "meta", + attrs: { property: "og:type", content: "website" }, + }, + { + tag: "meta", + attrs: { property: "og:site_name", content: "Simple Stack" }, + }, + { + tag: "meta", + attrs: { name: "twitter:card", content: "summary" }, + }, + { + tag: "script", + attrs: { type: "application/ld+json" }, + content: JSON.stringify({ + "@context": "https://schema.org", + "@type": "WebSite", + name: "Simple Stack", + url: "https://simple-stack.dev", + description: + "A suite of lightweight tools built for Astro and React to simplify your web development workflow.", + }), + }, + { + 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", + ], + }), + }, + ], sidebar: [ { label: "💾 Store", 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..c7beba9 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: Add client-side form validation to your Astro or React app using Simple Form with the reward-early, punish-late UX pattern. sidebar: order: 3 --- diff --git a/www/src/content/docs/form/index.mdx b/www/src/content/docs/form/index.mdx index 3e1654e..f6520dc 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: Simple Form is the easiest way to validate forms in your Astro fullstack app using Zod schemas, with built-in server parsing and client-side validation. 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..65ef99b 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: Validate and parse form submissions server-side using Simple Form with Zod schemas and Astro.locals helpers. sidebar: order: 2 --- diff --git a/www/src/content/docs/index.mdx b/www/src/content/docs/index.mdx index 1e6d15c..e977567 100644 --- a/www/src/content/docs/index.mdx +++ b/www/src/content/docs/index.mdx @@ -1,15 +1,13 @@ --- -title: Simple stack 🌱 -description: A suite of tools built for Astro to simplify your workflow. +title: Simple Stack 🌱 +description: Simple Stack is a collection of lightweight tools for Astro and React that simplify state management, scoped IDs, and DOM querying with minimal overhead. tableOfContents: false head: - tag: title - content: Simple stack 🌱 + content: Simple Stack – Lightweight Tools for Astro & React --- -A collection of tools I've built to **make web development simpler.** - -To be honest, there isn't a "story" connecting these packages together (I'm no TanStack). But they follow a common theme: solve a simple use case without too many features. +Simple Stack is a collection of lightweight, open-source tools built for Astro and React to **make web development simpler.** Each package solves a focused use case with minimal API surface and zero unnecessary complexity. import { CardGrid, Card, LinkCard } from '@astrojs/starlight/components'; diff --git a/www/src/content/docs/stream.md b/www/src/content/docs/stream.md index 5c734fb..36583b1 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: Suspend Astro components with fallback content using Simple Stream. Like React Server Components, but Just HTML. Deprecated in favor of Astro Server Islands. --- :::caution