joerglohrerde/app
Jörg Lohrer 3e31caacef fix(spa): prerender-build laeuft + meta/json-ld korrekt
Drei build-blocker beim ersten prerender-versuch identifiziert und gefixt:

1. svelte.config.js: handleHttpError + handleMissingId fuer den
   prerender-crawler. Der crawler folgt zur build-zeit allen hrefs/srcs
   im HTML — sieht dabei
   - __SITE_URL__-platzhalter in canonical/hreflang (werden im deploy
     per sed ersetzt, sind keine echten routes)
   - relative bild-paths in alten posts (z.B. h01-json-import.png)
   - anchor-links auf headings ohne id-attribute (#ACF-JSON-Export)
   Alle drei sind keine echten 404s — handlers ignorieren sie.

2. +page.svelte: <script type="application/ld+json">{jsonLd}</script>
   in <svelte:head> rendert {jsonLd} als literalen string, weil svelte
   den script-tag-inhalt nicht als expression evaluiert. Zurueck zu
   {@html ...} mit </script>-escape-hardening, damit titel oder
   beschreibungen mit </script> den output nicht aufbrechen koennen.

3. app.html behaelt seine homepage-defaults fuer og:title/og:url/
   og:description/canonical — der prerender-crawler rendert nur
   detail-routen (/<slug>/), die homepage bleibt SPA-only und braucht
   die defaults im app.html-template, weil dort kein svelte:head greift.
   Detail-routen ueberschreiben per <svelte:head>; last-wins greift bei
   LinkedIn/Mastodon/Browser. Facebook/Twitter (first-wins) haetten
   einen homepage-prerender-schritt noetig — folge-aufgabe.

Plus snapshot/deno.lock committed — deno empfiehlt lockfile-commit fuer
reproduzierbare CI-builds, analog package-lock.json.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 08:50:27 +02:00
..
.vscode spa(task 1): sveltekit-skeleton mit adapter-static initialisiert 2026-04-15 15:03:15 +02:00
src fix(spa): prerender-build laeuft + meta/json-ld korrekt 2026-04-28 08:50:27 +02:00
static spa: startseite + archiv + impressum + menü + assets für cutover 2026-04-18 15:35:05 +02:00
tests spa: startseite + archiv + impressum + menü + assets für cutover 2026-04-18 15:35:05 +02:00
.env.example spa/deploy: dynamische site-url via __SITE_URL__-platzhalter, staging + prod als deploy-targets 2026-04-18 10:01:08 +02:00
.gitignore spa(chore): test-results/ aus git und in .gitignore 2026-04-15 17:53:33 +02:00
.npmrc spa(task 1): sveltekit-skeleton mit adapter-static initialisiert 2026-04-15 15:03:15 +02:00
README.md spa(task 1): sveltekit-skeleton mit adapter-static initialisiert 2026-04-15 15:03:15 +02:00
package.json feat(spa): detail-route auf prerender + ssr=true 2026-04-28 08:40:17 +02:00
playwright.config.ts spa(phase 5, tasks 26-32): reactions, replies, nip-07 kommentare, e2e 2026-04-15 17:51:57 +02:00
svelte.config.js fix(spa): prerender-build laeuft + meta/json-ld korrekt 2026-04-28 08:50:27 +02:00
tsconfig.json spa(task 1): sveltekit-skeleton mit adapter-static initialisiert 2026-04-15 15:03:15 +02:00
vite.config.ts feat(app): parseTranslationRefs extrahiert a-tags mit marker translation 2026-04-21 12:37:08 +02:00

README.md

sv

Everything you need to build a Svelte project, powered by sv.

Creating a project

If you're seeing this, you've probably already done this step. Congrats!

# create a new project
npx sv create my-app

To recreate this project with the same configuration:

# recreate this project
npx sv@0.15.1 create --template minimal --types ts --install npm .

Developing

Once you've created a project and installed dependencies with npm install (or pnpm install or yarn), start a development server:

npm run dev

# or start the server and open the app in a new browser tab
npm run dev -- --open

Building

To create a production version of your app:

npm run build

You can preview the production build with npm run preview.

To deploy your app, you may need to install an adapter for your target environment.