feat(seo): site meta composable + Open Graph image generation

Adds `useSiteMeta()` composable that wraps useSeoMeta with site defaults
(title template, canonical URL, og/twitter image, og:site_name) and
absolute-URL handling via runtimeConfig.public.appUrl.

Adds /og/events/[slug].png route that renders per-event OG images via
satori + @resvg/resvg-js, cached on disk by slug + updatedAt. Bundles
Brygada 1918 + Commit Mono fonts as server assets, ships a fallback
default.png, and patches @shuding/opentype.js via patch-package.

Converts ~25 pages from useHead to useSiteMeta and adds noindex on
private/auth/admin pages.
This commit is contained in:
Jennie Robinson Faber 2026-05-21 17:50:34 +01:00
parent 877ef1a220
commit 31144617d7
36 changed files with 1182 additions and 53 deletions

View file

@ -7,7 +7,7 @@
"dev": " nuxt dev",
"generate": "nuxt generate",
"preview": "nuxt preview",
"postinstall": "nuxt prepare",
"postinstall": "patch-package && nuxt prepare",
"test": "vitest",
"test:run": "vitest run",
"test:e2e": "npx playwright test",
@ -28,6 +28,7 @@
"@nuxt/eslint": "^1.9.0",
"@nuxt/ui": "^4.0.0",
"@nuxtjs/plausible": "^3.0.1",
"@resvg/resvg-js": "^2.6.2",
"@slack/web-api": "^7.10.0",
"chrono-node": "^2.8.4",
"cloudinary": "^2.7.0",
@ -41,6 +42,7 @@
"oidc-provider": "^9.6.1",
"rate-limiter-flexible": "^9.1.1",
"resend": "^6.0.1",
"satori": "^0.26.0",
"typescript": "^5.9.2",
"vue": "^3.5.20",
"vue-cal": "^5.0.1-rc.28",
@ -58,6 +60,7 @@
"@types/oidc-provider": "^9.5.0",
"husky": "^9.1.7",
"jsdom": "^28.1.0",
"patch-package": "^8.0.1",
"vitest": "^4.0.18"
}
}