diff --git a/website/astro.config.mjs b/website/astro.config.mjs index 890f4f5..44f4e22 100644 --- a/website/astro.config.mjs +++ b/website/astro.config.mjs @@ -40,6 +40,25 @@ export default defineConfig({ // TODO(Phase B): a header social link to the repo is deliberately omitted // — the source/issues link lives understated in the footer instead. customCss: ['./src/styles/global.css'], + // Open Graph / Twitter social card. Starlight emits og:title/url/type + // from `site`, but not an image, so add a single site-wide card. + // Source: src/assets/og-card.svg → public/og-card.png (rasterise with + // sharp; see the SVG header for the one-liner). Absolute URL required + // by scrapers — derived from the `site` origin. + head: [ + { tag: 'meta', attrs: { property: 'og:image', content: 'https://relplay.org/og-card.png' } }, + { tag: 'meta', attrs: { property: 'og:image:width', content: '1200' } }, + { tag: 'meta', attrs: { property: 'og:image:height', content: '630' } }, + { + tag: 'meta', + attrs: { + property: 'og:image:alt', + content: 'RDBMS Playground — learn relational databases by doing.', + }, + }, + { tag: 'meta', attrs: { name: 'twitter:card', content: 'summary_large_image' } }, + { tag: 'meta', attrs: { name: 'twitter:image', content: 'https://relplay.org/og-card.png' } }, + ], // Register the simple-mode command grammar with Expressive Code (Shiki). expressiveCode: { shiki: { langs: [rdbmsLang, rdbmsSyntax] } }, // Pragmatic structure (ADR-website-001 §7 / website/STYLE.md): Getting diff --git a/website/public/og-card.png b/website/public/og-card.png new file mode 100644 index 0000000..7c86a38 Binary files /dev/null and b/website/public/og-card.png differ diff --git a/website/src/assets/og-card.svg b/website/src/assets/og-card.svg new file mode 100644 index 0000000..8a5da1a --- /dev/null +++ b/website/src/assets/og-card.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + RELational PLAYground + + + RDBMS Playground + + + + Learn relational databases by doing. + + relplay.org +