diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5657af7..c3bf108 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -205,6 +205,9 @@ importers:
'@astrojs/check':
specifier: ^0.9.6
version: 0.9.6(typescript@5.5.4)
+ '@astrojs/sitemap':
+ specifier: ^3.7.0
+ version: 3.7.0
'@astrojs/starlight':
specifier: ^0.37.1
version: 0.37.1(astro@5.16.6)
@@ -442,8 +445,8 @@ packages:
- vite
dev: false
- /@astrojs/sitemap@3.6.0:
- resolution: {integrity: sha512-4aHkvcOZBWJigRmMIAJwRQXBS+ayoP5z40OklTXYXhUDhwusz+DyDl+nSshY6y9DvkVEavwNcFO8FD81iGhXjg==}
+ /@astrojs/sitemap@3.7.0:
+ resolution: {integrity: sha512-+qxjUrz6Jcgh+D5VE1gKUJTA3pSthuPHe6Ao5JCxok794Lewx8hBFaWHtOnN0ntb2lfOf7gvOi9TefUswQ/ZVA==}
dependencies:
sitemap: 8.0.2
stream-replace-string: 2.0.0
@@ -471,7 +474,7 @@ packages:
dependencies:
'@astrojs/markdown-remark': 6.3.10
'@astrojs/mdx': 4.3.13(astro@5.16.6)
- '@astrojs/sitemap': 3.6.0
+ '@astrojs/sitemap': 3.7.0
'@pagefind/default-ui': 1.4.0
'@types/hast': 3.0.4
'@types/js-yaml': 4.0.9
diff --git a/www/astro.config.mjs b/www/astro.config.mjs
index 0d7e4c1..f65b14f 100644
--- a/www/astro.config.mjs
+++ b/www/astro.config.mjs
@@ -1,7 +1,10 @@
+import sitemap from "@astrojs/sitemap";
import starlight from "@astrojs/starlight";
import { defineConfig } from "astro/config";
+// TODO: Replace with your production URL
export default defineConfig({
+ site: "https://simple-stack.dev",
integrations: [
starlight({
title: "Simple Stack 🌱",
@@ -44,5 +47,6 @@ export default defineConfig({
"./src/styles/custom.css",
],
}),
+ sitemap(),
],
});
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..0e5ee8c 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: "Generate accessible client-validated form components using Simple Form's CLI with the reward-early-punish-late validation pattern for React and Astro."
sidebar:
order: 3
---
diff --git a/www/src/content/docs/form/index.mdx b/www/src/content/docs/form/index.mdx
index 3e1654e..8fbdc83 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 a deprecated Astro integration for Zod-based form validation with automatic input prop generation, server-side parsing, and optional 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..d8f71e6 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: "Server-side form validation in Astro using Simple Form's validateForm() helper and Astro.locals.form API for parsing and validating POST requests with Zod schemas."
sidebar:
order: 2
---
diff --git a/www/src/content/docs/index.mdx b/www/src/content/docs/index.mdx
index 1e6d15c..bb757d5 100644
--- a/www/src/content/docs/index.mdx
+++ b/www/src/content/docs/index.mdx
@@ -1,13 +1,31 @@
---
-title: Simple stack 🌱
-description: A suite of tools built for Astro to simplify your workflow.
+title: Simple Stack
+description: A collection of lightweight Astro tools — reactive stores, scoped IDs, and DOM querying — built to simplify common web development patterns without unnecessary complexity.
tableOfContents: false
head:
- - tag: title
- content: Simple stack 🌱
+ - tag: script
+ attrs:
+ type: application/ld+json
+ content: |
+ {
+ "@context": "https://schema.org",
+ "@type": "SoftwareSourceCode",
+ "name": "Simple Stack",
+ "description": "A collection of lightweight Astro tools — reactive stores, scoped IDs, and DOM querying — built to simplify common web development patterns.",
+ "url": "https://simple-stack.dev",
+ "codeRepository": "https://github.com/bholmesdev/simple-stack",
+ "programmingLanguage": "TypeScript",
+ "runtimePlatform": "Astro",
+ "author": {
+ "@type": "Person",
+ "name": "Ben Holmes",
+ "url": "https://github.com/bholmesdev"
+ },
+ "license": "https://opensource.org/licenses/MIT"
+ }
---
-A collection of tools I've built to **make web development simpler.**
+Simple Stack is a collection of lightweight tools for Astro that each solve a focused use case without unnecessary features. Packages include a reactive store with selectors, a build-time scoped ID generator, and a DOM querying utility for Astro components.
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.
diff --git a/www/src/content/docs/query.mdx b/www/src/content/docs/query.mdx
index 5549582..03942b0 100644
--- a/www/src/content/docs/query.mdx
+++ b/www/src/content/docs/query.mdx
@@ -1,6 +1,27 @@
---
title: 💰 Simple Query
-description: A simple library to query the DOM from your Astro components.
+description: "Simple Query is an Astro integration for scoped DOM querying with automatic element targeting, signal-based reactivity, and built-in cleanup for view transitions."
+head:
+ - tag: script
+ attrs:
+ type: application/ld+json
+ content: |
+ {
+ "@context": "https://schema.org",
+ "@type": "SoftwareSourceCode",
+ "name": "Simple Query",
+ "description": "An Astro integration for scoped DOM querying with automatic element targeting, signal-based reactivity via signal-polyfill, and built-in cleanup for view transitions.",
+ "url": "https://simple-stack.dev/query",
+ "codeRepository": "https://github.com/bholmesdev/simplestack-query",
+ "programmingLanguage": "TypeScript",
+ "runtimePlatform": "Astro",
+ "author": {
+ "@type": "Person",
+ "name": "Ben Holmes",
+ "url": "https://github.com/bholmesdev"
+ },
+ "license": "https://opensource.org/licenses/MIT"
+ }
---
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..9f222e2 100644
--- a/www/src/content/docs/scope.mdx
+++ b/www/src/content/docs/scope.mdx
@@ -1,6 +1,27 @@
---
-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
+description: "Simple Scope is a Vite plugin that generates deterministic scoped IDs at build-time with zero client JavaScript. Works with Astro, Nuxt, SvelteKit, and any Vite-based framework."
+head:
+ - tag: script
+ attrs:
+ type: application/ld+json
+ content: |
+ {
+ "@context": "https://schema.org",
+ "@type": "SoftwareSourceCode",
+ "name": "Simple Scope",
+ "description": "A Vite plugin that generates deterministic scoped IDs at build-time with zero client JavaScript. Compatible with Astro, Nuxt, SvelteKit, and any Vite-based framework.",
+ "url": "https://simple-stack.dev/scope",
+ "codeRepository": "https://github.com/bholmesdev/simplestack-scope",
+ "programmingLanguage": "TypeScript",
+ "runtimePlatform": "Vite",
+ "author": {
+ "@type": "Person",
+ "name": "Ben Holmes",
+ "url": "https://github.com/bholmesdev"
+ },
+ "license": "https://opensource.org/licenses/MIT"
+ }
---
import { LinkCard } from '@astrojs/starlight/components';
diff --git a/www/src/content/docs/store.mdx b/www/src/content/docs/store.mdx
index cda86d1..722b5b1 100644
--- a/www/src/content/docs/store.mdx
+++ b/www/src/content/docs/store.mdx
@@ -1,9 +1,30 @@
---
-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
+description: "Simple Store is a lightweight reactive state library for React and Astro. It combines signal-like simplicity with Zustand-style selectors for fine-grained nested state updates."
sidebar:
label: Get started
order: 1
+head:
+ - tag: script
+ attrs:
+ type: application/ld+json
+ content: |
+ {
+ "@context": "https://schema.org",
+ "@type": "SoftwareSourceCode",
+ "name": "Simple Store",
+ "description": "A lightweight reactive store for React and Astro that combines signal-like simplicity with Zustand-style selectors for fine-grained nested state updates.",
+ "url": "https://simple-stack.dev/store",
+ "codeRepository": "https://github.com/bholmesdev/simplestack-store",
+ "programmingLanguage": "TypeScript",
+ "runtimePlatform": "Node.js",
+ "author": {
+ "@type": "Person",
+ "name": "Ben Holmes",
+ "url": "https://github.com/bholmesdev"
+ },
+ "license": "https://opensource.org/licenses/MIT"
+ }
---
import { LinkCard, Tabs, TabItem } from '@astrojs/starlight/components';
diff --git a/www/src/content/docs/stream.md b/www/src/content/docs/stream.md
index 5c734fb..5e34744 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: "Simple Stream is a deprecated Astro integration that suspended components with fallback content, enabling out-of-order HTML streaming similar to React Server Components."
---
:::caution
@@ -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
---