From 24a5377489cd624ff056a5ec9af724f4ccf3b71b Mon Sep 17 00:00:00 2001 From: Ben Holmes Date: Thu, 5 Mar 2026 09:03:49 +0000 Subject: [PATCH] =?UTF-8?q?feat(www):=20SEO=20&=20AEO=20audit=20=E2=80=94?= =?UTF-8?q?=20add=20sitemap,=20robots.txt,=20structured=20data,=20improved?= =?UTF-8?q?=20meta?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add site URL (https://simple-stack.dev) to astro.config.mjs - Install and configure @astrojs/sitemap integration - Add robots.txt with sitemap reference - Add OG and Twitter Card meta tags via Starlight head config - Add JSON-LD SoftwareApplication structured data to homepage - Improve homepage title to be keyword-rich and descriptive - Improve meta descriptions on all pages (120-160 chars) - Replace generic 'Documentation' link text with package-specific anchor text - Add aria-label to stream demo video for accessibility Co-Authored-By: Oz --- www/astro.config.mjs | 13 +++++++++ www/package.json | 1 + www/public/robots.txt | 4 +++ www/src/content/docs/form/client.md | 4 +-- www/src/content/docs/form/index.mdx | 2 +- www/src/content/docs/form/parse.md | 4 +-- www/src/content/docs/index.mdx | 41 ++++++++++++++++++++++------- www/src/content/docs/query.mdx | 2 +- www/src/content/docs/scope.mdx | 2 +- www/src/content/docs/stream.md | 2 +- 10 files changed, 58 insertions(+), 17 deletions(-) create mode 100644 www/public/robots.txt diff --git a/www/astro.config.mjs b/www/astro.config.mjs index 0d7e4c1..4220ab1 100644 --- a/www/astro.config.mjs +++ b/www/astro.config.mjs @@ -1,10 +1,23 @@ +import sitemap from "@astrojs/sitemap"; import starlight from "@astrojs/starlight"; import { defineConfig } from "astro/config"; export default defineConfig({ + site: "https://simple-stack.dev", integrations: [ + sitemap(), starlight({ title: "Simple Stack 🌱", + head: [ + { + tag: "meta", + attrs: { property: "og:type", content: "website" }, + }, + { + tag: "meta", + attrs: { name: "twitter:card", content: "summary" }, + }, + ], social: [ { icon: "github", diff --git a/www/package.json b/www/package.json index 8afa5ca..ab969fe 100644 --- a/www/package.json +++ b/www/package.json @@ -17,6 +17,7 @@ }, "dependencies": { "@astrojs/check": "^0.9.6", + "@astrojs/sitemap": "^3.7.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..bae9878 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 accessible client-side form validation using the Simple Form CLI. Generates framework components with the "reward early, punish late" UX pattern for inline error messaging. sidebar: order: 3 --- diff --git a/www/src/content/docs/form/index.mdx b/www/src/content/docs/form/index.mdx index 3e1654e..4ccde7c 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. +description: Simple Form is a fullstack form validation library for Astro and other frameworks. Define schemas with Zod, auto-generate HTML input props, and parse submissions with type safety. 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..313b35a 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. Use the validateForm() helper or Astro.locals.form API with Zod schemas for type-safe form handling. sidebar: order: 2 --- diff --git a/www/src/content/docs/index.mdx b/www/src/content/docs/index.mdx index 1e6d15c..216fae0 100644 --- a/www/src/content/docs/index.mdx +++ b/www/src/content/docs/index.mdx @@ -1,15 +1,38 @@ --- -title: Simple stack 🌱 -description: A suite of tools built for Astro to simplify your workflow. +title: Simple Stack – Lightweight Tools for Modern Web Development +description: Simple Stack is a collection of lightweight, focused tools for modern web development. Includes a reactive store with selectors, scoped IDs via a Vite plugin, and a DOM query library for Astro components. tableOfContents: false head: - tag: title - content: Simple stack 🌱 + content: Simple Stack – Lightweight Tools for Modern Web Development + - tag: script + attrs: + type: application/ld+json + content: | + { + "@context": "https://schema.org", + "@type": "SoftwareApplication", + "name": "Simple Stack", + "url": "https://simple-stack.dev", + "applicationCategory": "DeveloperApplication", + "description": "A collection of lightweight, focused tools for modern web development including a reactive store, scoped IDs, and DOM query utilities.", + "author": { + "@type": "Person", + "name": "Ben Holmes", + "url": "https://bholmes.dev" + }, + "offers": { + "@type": "Offer", + "price": "0", + "priceCurrency": "USD" + }, + "sameAs": [ + "https://github.com/bholmesdev/simple-stack" + ] + } --- -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, focused JavaScript tools that each solve a single use case without unnecessary complexity. Built by [Ben Holmes](https://bholmes.dev). import { CardGrid, Card, LinkCard } from '@astrojs/starlight/components'; @@ -17,19 +40,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..1c0d00a 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. +description: Simple Query is a lightweight DOM querying library for Astro components. Scope element selectors with data-target attributes and manage client-side state with signals. --- 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..fdc3d4b 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. +description: Simple Scope is a Vite plugin that generates deterministic scoped IDs at build time with zero client JavaScript. Ideal for form labels, query selectors, and preventing hydration mismatches. --- import { LinkCard } from '@astrojs/starlight/components'; diff --git a/www/src/content/docs/stream.md b/www/src/content/docs/stream.md index 5c734fb..5b17f6e 100644 --- a/www/src/content/docs/stream.md +++ b/www/src/content/docs/stream.md @@ -9,7 +9,7 @@ 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 ---