Skip to content

Commit 939e77d

Browse files
bholmesdevoz-agent
andcommitted
SEO/AEO audit: improve titles, descriptions, structured data, and crawlability
- Add site property to astro.config.mjs for canonical URLs, sitemap, and OG tags - Add Organization JSON-LD structured data via Starlight head config - Create robots.txt pointing to sitemap - Improve homepage title and description for search visibility - Remove emojis from page titles, keep in sidebar labels only - Add noindex meta to deprecated pages (Stream, Form) - Improve meta descriptions with specific, compelling copy - Add answer-first summaries to Store, Scope, and Query pages for AEO Co-Authored-By: Oz <oz-agent@warp.dev>
1 parent 70cb101 commit 939e77d

10 files changed

Lines changed: 69 additions & 25 deletions

File tree

www/astro.config.mjs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import starlight from "@astrojs/starlight";
22
import { defineConfig } from "astro/config";
33

44
export default defineConfig({
5+
site: "https://simple-stack.dev",
56
integrations: [
67
starlight({
78
title: "Simple Stack 🌱",
@@ -13,6 +14,22 @@ export default defineConfig({
1314
},
1415
{ icon: "discord", label: "Discord", href: "https://wtw.dev/chat" },
1516
],
17+
head: [
18+
{
19+
tag: "script",
20+
attrs: { type: "application/ld+json" },
21+
content: JSON.stringify({
22+
"@context": "https://schema.org",
23+
"@type": "Organization",
24+
name: "Simple Stack",
25+
url: "https://simple-stack.dev",
26+
logo: "https://simple-stack.dev/favicon.svg",
27+
sameAs: [
28+
"https://github.com/bholmesdev/simple-stack",
29+
],
30+
}),
31+
},
32+
],
1633
sidebar: [
1734
{
1835
label: "💾 Store",

www/public/robots.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
User-agent: *
2+
Allow: /
3+
4+
Sitemap: https://simple-stack.dev/sitemap-index.xml

www/src/content/docs/form/client.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
---
2-
title: Add client validation
3-
description: Add client validation to your forms
2+
title: Add Client Validation (Deprecated)
3+
description: "Guide for adding client-side validation to Simple Form. This package is no longer maintained."
44
sidebar:
55
order: 3
6+
head:
7+
- tag: meta
8+
attrs:
9+
name: robots
10+
content: noindex, follow
611
---
712

813
:::caution

www/src/content/docs/form/index.mdx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
---
2-
title: Simple form
3-
description: The simple way to validate forms in your fullstack app.
2+
title: Simple Form (Deprecated)
3+
description: "Simple Form provided server and client form validation for Astro apps. This package is no longer maintained — use Astro Form Actions instead."
44
sidebar:
55
label: Get started
66
order: 1
7+
head:
8+
- tag: meta
9+
attrs:
10+
name: robots
11+
content: noindex, follow
712
---
813

914
import { Tabs, TabItem } from '@astrojs/starlight/components';

www/src/content/docs/form/parse.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
---
2-
title: Parse form requests
3-
description: Validate forms server-side
2+
title: Parse Form Requests (Deprecated)
3+
description: "Guide for server-side form validation with Simple Form. This package is no longer maintained."
44
sidebar:
55
order: 2
6+
head:
7+
- tag: meta
8+
attrs:
9+
name: robots
10+
content: noindex, follow
611
---
712

813
:::caution

www/src/content/docs/index.mdx

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
---
2-
title: Simple stack 🌱
3-
description: A suite of tools built for Astro to simplify your workflow.
2+
title: Simple Stack — Lightweight Tools for Astro & React
3+
description: "Simple Stack is a collection of lightweight, zero-config developer tools for Astro and React. Includes a reactive store, scoped IDs, and DOM query utilities."
44
tableOfContents: false
5-
head:
6-
- tag: title
7-
content: Simple stack 🌱
85
---
96

10-
A collection of tools I've built to **make web development simpler.**
7+
Simple Stack is a collection of lightweight developer tools that **make web development simpler.** Each package solves a focused use case with minimal configuration and a small API surface — a reactive store, scoped IDs, and DOM query utilities for Astro components.
118

12-
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.
9+
They follow a common theme: solve a simple use case without too many features.
1310

1411
import { CardGrid, Card, LinkCard } from '@astrojs/starlight/components';
1512

www/src/content/docs/query.mdx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
---
2-
title: 💰 Simple Query
3-
description: A simple library to query the DOM from your Astro components.
2+
title: Simple Query — DOM Scripting for Astro Components
3+
description: "Simple Query is an Astro integration for scoped DOM queries and client-side interactivity. Target elements with data attributes, pass server data, and use Signals for state."
4+
sidebar:
5+
label: 💰 Simple Query
46
---
57

68
import { Tabs, TabItem, LinkCard } from '@astrojs/starlight/components';
79

810
<LinkCard href="https://github.com/bholmesdev/simplestack-query" title="Source code" />
911

10-
A simple library to query the DOM from your Astro components.
12+
Simple Query (`@simplestack/query`) is an Astro integration that provides scoped DOM queries for your Astro components. Target elements with `data-target` attributes, pass server data to client scripts, and optionally use the TC39 Signals polyfill for reactive state — all without a component framework.
1113

1214
```astro
1315
<RootElement>

www/src/content/docs/scope.mdx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
---
2-
title: 🔎 Simple scope
3-
description: Get a scoped ID for whatever file you're in. Resolved at build-time with zero client JS.
2+
title: Simple Scope — Build-Time Scoped IDs for Vite
3+
description: "Simple Scope is a Vite plugin that generates deterministic scoped IDs at build time with zero client JS. Works with Astro, Nuxt, SvelteKit, and any Vite framework."
4+
sidebar:
5+
label: 🔎 Simple Scope
46
---
57

68
import { LinkCard } from '@astrojs/starlight/components';
79

810
<LinkCard href="https://github.com/bholmesdev/simplestack-scope" title="Source code" />
911

10-
Get a scoped ID for whatever file you're in. Resolved at build-time with zero client JS.
12+
Simple Scope (`vite-plugin-simple-scope`) is a Vite plugin that generates deterministic, file-scoped IDs at build time with zero client JavaScript. Use it for form label `for`/`id` pairs, query selectors, or any case where you need unique-per-file identifiers. Compatible with Astro, Nuxt, SvelteKit, and any Vite-based framework.
1113

1214
```jsx
1315
import { scope } from 'simple:scope';

www/src/content/docs/store.mdx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
---
2-
title: 💾 Simple store
3-
description: A reactive store that combines the simplicity of signals with the power of "selectors" you'd find in Zustand or Redux.
2+
title: Simple Store — Reactive State Management for React
3+
description: "Simple Store is a lightweight reactive state management library for React. Combines signal-like simplicity with Zustand-style selectors for fine-grained updates."
44
sidebar:
5-
label: Get started
5+
label: 💾 Get started
66
order: 1
77
---
88

99
import { LinkCard, Tabs, TabItem } from '@astrojs/starlight/components';
1010

1111
<LinkCard href="https://github.com/bholmesdev/simplestack-store" title="Source code" />
1212

13-
A reactive store that combines the simplicity of signals with the power of "selectors" you'd find in Zustand or Redux.
13+
Simple Store (`@simplestack/store`) is a lightweight reactive state management library for React and vanilla JavaScript. It combines the simplicity of signals with the power of "selectors" you'd find in Zustand or Redux, allowing fine-grained subscriptions to nested state without boilerplate.
1414

1515
```tsx
1616
import { store } from "@simplestack/store";

www/src/content/docs/stream.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
---
2-
title: Simple stream 🌊
3-
description: Suspend Astro components with fallback content. Like React Server Components, but Just HTML ™️
2+
title: Simple Stream (Deprecated)
3+
description: "Simple Stream suspended Astro components with fallback content, similar to React Server Components. This package is no longer maintained."
4+
sidebar:
5+
label: 🌊 Stream
6+
head:
7+
- tag: meta
8+
attrs:
9+
name: robots
10+
content: noindex, follow
411
---
512

613
:::caution

0 commit comments

Comments
 (0)