59 lines
2.0 KiB
Markdown
59 lines
2.0 KiB
Markdown
# SPA Mini-Preview
|
|
|
|
**Tech-Spike, kein Produkt.**
|
|
|
|
Eine einzige `index.html`, die im Browser einen einzelnen Nostr-Post (`kind:30023`)
|
|
live von Public-Relays lädt und rendert. Beweist, dass die SPA-Architektur
|
|
aus [`docs/superpowers/specs/2026-04-15-nostr-page-design.md`](../../docs/superpowers/specs/2026-04-15-nostr-page-design.md)
|
|
in der Praxis funktioniert — ohne SvelteKit-Build, ohne Routing, ohne Backend.
|
|
|
|
## Was sie macht
|
|
|
|
- Lädt `nostr-tools`, `marked` und `DOMPurify` zur Laufzeit von esm.sh.
|
|
- Verbindet sich zu fünf Public-Relays.
|
|
- Holt das `kind:30023`-Event mit `d`-Tag `dezentrale-oep-oer` für den hartcodierten Pubkey.
|
|
- Rendert Markdown via `marked`, sanitized via `DOMPurify`.
|
|
- Cover-Bild wird vom Blossom-Server geladen (URL aus dem Event-Tag `image`).
|
|
|
|
## Was sie nicht macht
|
|
|
|
- Kein Routing, keine Post-Liste, keine Tags-Navigation, keine Reactions, keine Kommentare.
|
|
- Kein NIP-65-Outbox-Resolution (Relays sind hartcodiert).
|
|
- Kein NIP-07-Login.
|
|
- Kein Code-Splitting, keine Service-Worker, keine Optimierung.
|
|
|
|
Für all das wartet die echte SvelteKit-SPA — das hier ist nur das „Hello World".
|
|
|
|
## Lokal ausprobieren
|
|
|
|
Die Datei kann nicht per `file://` geöffnet werden (CORS für CDN-Imports).
|
|
Stattdessen ein lokaler HTTP-Server:
|
|
|
|
```sh
|
|
cd preview/spa-mini
|
|
python3 -m http.server 8000
|
|
# Browser: http://localhost:8000/
|
|
```
|
|
|
|
Oder mit Deno:
|
|
|
|
```sh
|
|
deno run --allow-net --allow-read jsr:@std/http/file-server preview/spa-mini
|
|
```
|
|
|
|
## Auf die Subdomain `spa.joerg-lohrer.de` deployen
|
|
|
|
Voraussetzung: Subdomain im All-Inkl-KAS angelegt, eigener DocumentRoot eingerichtet,
|
|
SSL-Zertifikat aktiviert.
|
|
|
|
Inhalt von `preview/spa-mini/` (also `index.html` und `.htaccess`) per FTP
|
|
in den DocumentRoot der Subdomain hochladen.
|
|
|
|
Erwartetes Ergebnis: `https://spa.joerg-lohrer.de/` zeigt den Post.
|
|
|
|
## Spätere Ablösung
|
|
|
|
Sobald die SvelteKit-SPA fertig ist, wird ihr `build/`-Output denselben Webroot
|
|
ablösen. Diese Mini-Seite kann dann gelöscht oder als historisches Artefakt
|
|
im Repo bleiben.
|