Skip to content

Commit ca7693b

Browse files
bholmesdevoz-agent
andcommitted
feat(www): SEO/AEO audit — add sitemap, robots.txt, structured data, and improved meta
- Add site property to astro.config.mjs to enable sitemap generation and canonical URLs - Add robots.txt with sitemap reference - Add global WebSite JSON-LD schema and og:site_name meta tag - Add SoftwareSourceCode JSON-LD to store, scope, and query pages - Improve homepage title and description for search/AI discoverability - Rewrite homepage intro with answer-first format for AEO - Improve meta descriptions on all pages (keyword-rich, 150-160 chars) - Mark deprecated packages (stream, form) clearly in descriptions Co-Authored-By: Oz <oz-agent@warp.dev>
1 parent 70cb101 commit ca7693b

File tree

8 files changed

+101
-12
lines changed

8 files changed

+101
-12
lines changed

www/astro.config.mjs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,40 @@ 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 🌱",
9+
head: [
10+
{
11+
tag: "meta",
12+
attrs: {
13+
property: "og:site_name",
14+
content: "Simple Stack",
15+
},
16+
},
17+
{
18+
tag: "script",
19+
attrs: { type: "application/ld+json" },
20+
content: JSON.stringify({
21+
"@context": "https://schema.org",
22+
"@type": "WebSite",
23+
name: "Simple Stack",
24+
url: "https://simple-stack.dev",
25+
description:
26+
"A collection of lightweight developer tools for building simpler web apps with Astro, React, and Vite.",
27+
author: {
28+
"@type": "Person",
29+
name: "Ben Holmes",
30+
url: "https://bholmes.dev",
31+
sameAs: [
32+
"https://github.com/bholmesdev",
33+
"https://twitter.com/babormedev",
34+
],
35+
},
36+
}),
37+
},
38+
],
839
social: [
940
{
1041
icon: "github",

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/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Simple form
3-
description: The simple way to validate forms in your fullstack app.
3+
description: "[Deprecated] simple-stack-form provided Zod-based form validation for Astro apps. Use Astro Form Actions for server validation and client validation instead."
44
sidebar:
55
label: Get started
66
order: 1

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 Developer Tools for the Modern Web
3+
description: "Simple Stack is a collection of lightweight, open-source developer tools by Ben Holmes. Includes a reactive store, scoped IDs plugin, and DOM query library for Astro, React, and Vite."
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, open-source JavaScript tools designed to **make web development simpler.** Built by [Ben Holmes](https://bholmes.dev), each package solves a focused use case — reactive state management, scoped element IDs, and DOM querying — without unnecessary complexity.
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+
These packages share 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: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,25 @@
11
---
22
title: 💰 Simple Query
3-
description: A simple library to query the DOM from your Astro components.
3+
description: "@simplestack/query is an Astro integration for scoped DOM queries in components. Use data-target selectors, signal-based state, and server data passing with zero boilerplate."
4+
head:
5+
- tag: script
6+
attrs:
7+
type: application/ld+json
8+
content: |
9+
{
10+
"@context": "https://schema.org",
11+
"@type": "SoftwareSourceCode",
12+
"name": "@simplestack/query",
13+
"description": "An Astro integration for scoped DOM queries with data-target selectors and signal-based state.",
14+
"codeRepository": "https://github.com/bholmesdev/simplestack-query",
15+
"programmingLanguage": "TypeScript",
16+
"runtimePlatform": "Node.js",
17+
"author": {
18+
"@type": "Person",
19+
"name": "Ben Holmes",
20+
"url": "https://bholmes.dev"
21+
}
22+
}
423
---
524

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

www/src/content/docs/scope.mdx

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,25 @@
11
---
22
title: 🔎 Simple scope
3-
description: Get a scoped ID for whatever file you're in. Resolved at build-time with zero client JS.
3+
description: "vite-plugin-simple-scope generates unique, scoped IDs per file at build time with zero client JavaScript. Works with Astro, Nuxt, SvelteKit, and any Vite framework."
4+
head:
5+
- tag: script
6+
attrs:
7+
type: application/ld+json
8+
content: |
9+
{
10+
"@context": "https://schema.org",
11+
"@type": "SoftwareSourceCode",
12+
"name": "vite-plugin-simple-scope",
13+
"description": "A Vite plugin that generates scoped IDs per file at build time with zero client JS.",
14+
"codeRepository": "https://github.com/bholmesdev/simplestack-scope",
15+
"programmingLanguage": "TypeScript",
16+
"runtimePlatform": "Node.js",
17+
"author": {
18+
"@type": "Person",
19+
"name": "Ben Holmes",
20+
"url": "https://bholmes.dev"
21+
}
22+
}
423
---
524

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

www/src/content/docs/store.mdx

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,28 @@
11
---
22
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.
3+
description: "@simplestack/store is a lightweight reactive state management library for React and Next.js. Combines the simplicity of signals with Zustand-style selectors for fine-grained updates."
44
sidebar:
55
label: Get started
66
order: 1
7+
head:
8+
- tag: script
9+
attrs:
10+
type: application/ld+json
11+
content: |
12+
{
13+
"@context": "https://schema.org",
14+
"@type": "SoftwareSourceCode",
15+
"name": "@simplestack/store",
16+
"description": "A lightweight reactive store combining signal simplicity with Zustand-style selectors for React and Next.js.",
17+
"codeRepository": "https://github.com/bholmesdev/simplestack-store",
18+
"programmingLanguage": "TypeScript",
19+
"runtimePlatform": "Node.js",
20+
"author": {
21+
"@type": "Person",
22+
"name": "Ben Holmes",
23+
"url": "https://bholmes.dev"
24+
}
25+
}
726
---
827

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

www/src/content/docs/stream.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Simple stream 🌊
3-
description: Suspend Astro components with fallback content. Like React Server Components, but Just HTML ™️
3+
description: "[Deprecated] simple-stack-stream suspended Astro components with fallback content, similar to React Server Components. Use Astro Server Islands instead."
44
---
55

66
:::caution

0 commit comments

Comments
 (0)