Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions www/astro.config.mjs
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
1 change: 1 addition & 0 deletions www/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
4 changes: 4 additions & 0 deletions www/public/robots.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
User-agent: *
Allow: /

Sitemap: https://simple-stack.dev/sitemap-index.xml
4 changes: 2 additions & 2 deletions www/src/content/docs/form/client.md
Original file line number Diff line number Diff line change
@@ -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
---
Expand Down
2 changes: 1 addition & 1 deletion www/src/content/docs/form/index.mdx
Original file line number Diff line number Diff line change
@@ -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
Expand Down
4 changes: 2 additions & 2 deletions www/src/content/docs/form/parse.md
Original file line number Diff line number Diff line change
@@ -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
---
Expand Down
41 changes: 32 additions & 9 deletions www/src/content/docs/index.mdx
Original file line number Diff line number Diff line change
@@ -1,35 +1,58 @@
---
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';

<CardGrid>
<Card href="/store" title="Simple Store" icon="document">
A reactive store that combines the simplicity of signals with the power of "selectors" you'd find in Zustand.

<LinkCard href="/store" title="Documentation" />
<LinkCard href="/store" title="Get started with Simple Store" />
</Card>

<Card href="/scope" title="Simple Scope" icon="magnifier">
A vite plugin that generates scoped IDs for any file you're in. Perfect for form label IDs and query selectors.

<LinkCard href="/scope" title="Documentation" />
<LinkCard href="/scope" title="Get started with Simple Scope" />
</Card>

<Card href="/query" title="Simple Query" icon="puzzle">
A simple way to add JS scripts to Astro components.

<LinkCard href="/query" title="Documentation" />
<LinkCard href="/query" title="Get started with Simple Query" />
</Card>

</CardGrid>
2 changes: 1 addition & 1 deletion www/src/content/docs/query.mdx
Original file line number Diff line number Diff line change
@@ -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';
Expand Down
2 changes: 1 addition & 1 deletion www/src/content/docs/scope.mdx
Original file line number Diff line number Diff line change
@@ -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';
Expand Down
2 changes: 1 addition & 1 deletion www/src/content/docs/stream.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 ™️

<video controls width="100%" style="aspect-ratio:1.65/1" src="/assets/simple-stream-intro.mov"></video>
<video controls width="100%" style="aspect-ratio:1.65/1" src="/assets/simple-stream-intro.mov" aria-label="Demo of Simple Stream showing Suspense-style component loading with fallback content in Astro"></video>

```astro
---
Expand Down
Loading