joerglohrerde/app
Jörg Lohrer 10e455a078 spa: startseite + archiv + impressum + menü + assets für cutover
Startseite (+page.svelte) komplett überarbeitet:
  - Hero mit lokalem Profilbild (WebP aus static/, schneller als
    kind:0-roundtrip), Begrüßung "Hi Willkommen auf meinem Blog 🤗",
    About/Website aus kind:0
  - Social-Icons-Leiste (Nostr/Mastodon/Bluesky/LinkedIn/ORCID/Mail)
    als inline-SVG, monochrom via currentColor, hover färbt blau
  - Nostr-Icon von satscoffee/nostr_icons (outline, CC0), die anderen
    stilisiert als vereinfachte Brand-Icons
  - Neueste 5 Posts + Archiv-Link

Archiv-Route (/archiv/): alle Posts, nach Jahr gruppiert.

Impressum (/impressum/): static-page, rendert content/impressum.md
(via vite ?raw-import), bleibt aus nostr-feeds draußen. Frontmatter-
parser toleriert trailing-spaces auf --- zeilen.

Menü im Layout: sticky header mit brand + 3 links (Home, Archiv,
Impressum), aktiv-state via akzent-farbe. Footer mit © + Impressum
+ "Nostr-basiert"-hinweis.

Assets: profilbild und favicons aus dem hugo-static (repo-root) nach
app/static/ übernommen, favicon-links in app.html ergänzt.

NIP-05: .well-known/nostr.json in app/static angelegt mit CORS-header
via .htaccess, damit "joerglohrer@joerg-lohrer.de" nach cutover
verifizierbar bleibt.

E2E-Tests angepasst an neue hero/navigation-struktur, 29/29 unit + 4/4
e2e grün.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-18 15:35:05 +02:00
..
.vscode spa(task 1): sveltekit-skeleton mit adapter-static initialisiert 2026-04-15 15:03:15 +02:00
src spa: startseite + archiv + impressum + menü + assets für cutover 2026-04-18 15:35:05 +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 spa(task 2): runtime- und dev-dependencies installiert 2026-04-15 15:09:10 +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 spa(task 1): sveltekit-skeleton mit adapter-static initialisiert 2026-04-15 15:03:15 +02:00
tsconfig.json spa(task 1): sveltekit-skeleton mit adapter-static initialisiert 2026-04-15 15:03:15 +02:00
vite.config.ts spa(task 2): runtime- und dev-dependencies installiert 2026-04-15 15:09:10 +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.