Files
NSCT-FrontEnd/README.md
faligam 3e33359285 FE-3 + FE-4: Full-Featured Research-Ansicht + Docker Deployment
FE-3:
- Error-System: ErrorBannerStore + ErrorBanner (stapelbar, auto-hide, 5 categories)
- ContradictionBanner: Visuelle Widerspruchserkennung
- StatusTab: Zeitleiste, Fortschrittsbalken, Details
- ShareButton: Inline-Share mit Geteilt-Badge
- ShareModal: Ablaufzeit (24h-30Tage/Nie), Max-Views, Copy/Revoke
- research/{id}/+page.svelte: 6 Tabs mit Polling (5s), onDestroy cleanup
- share/[token]/+page.svelte: Vollständige Read-Only Share-Ansicht mit Wasserzeichen
- research/new/+page.svelte: Char-Counter, Language/Depth-Auswahl

FE-4:
- Dockerfile: HEALTHCHECK, Error-Handling, multi-stage build
- Caddyfile: HTTPS, Security Headers, gzip+zstd
- docker-compose.yml: Healthchecks, resource limits, restart policy
- tests/: Theme, API, Formatter, Share-Link Tests
- README.md: Architektur-Diagramm, Installation, Nutzung
- CHANGELOG.md: FE-0 bis FE-4
2026-09-06 08:10:08 +00:00

6.2 KiB

NSCT Research Frontend

Web-Oberfläche für den Neutral Search Crawler Tool (NSCT) — eine Such- und Analyseplattform für faktbasierte Recherche.

Architektur-Diagramm

┌─────────────────────────────────────────────────────────────┐
│                        Client                              │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐   │
│  │  Research │  │  Sources │  │  Claims  │  │ Report  │   │
│  │  Detail  │  │   Tab    │  │   Tab    │  │  Tab    │   │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘   │
│         ┌─────────────────────────────────────────┐        │
│         │         SvelteKit App (SPA)             │        │
│         │   - 6 Tabs: Status, Quellen, Claims     │        │
│         │   - Evidence, Bericht, Methodik          │        │
│         │   - Error-System, Share-Links            │        │
│         └─────────────────────────────────────────┘        │
└─────────────────────────────────────────────────────────────┘
                        │
                        ▼ fetch
┌─────────────────────────────────────────────────────────────┐
│                        Proxy                                │
│  ┌─────────────────────────────────────────────────────┐    │
│  │                   Caddy 2                             │    │
│  │  - HTTPS (Let's Encrypt)                              │    │
│  │  - Security Headers                                   │    │
│  │  - gzip + zstd Compression                            │    │
│  └─────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────┘
                        │
                        ▼
┌─────────────────────────────────────────────────────────────┐
│                     Backend API                              │
│  ┌─────────────────────────────────────────────────────┐    │
│  │         NSCT Backend (Port 8080)                     │    │
│  │         - /v1/research                              │    │
│  │         - /v1/research/{id}/status                  │    │
│  │         - /v1/research/{id}                         │    │
│  │         - /v1/research/share/{token}                │    │
│  └─────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────┘

Features

  • Research-Tab mit 6 Ansichten: Status, Quellen, Claims, Evidence, Bericht, Methodik
  • Contradiction Detection: Automatische Erkennung widersprüchlicher Claims
  • Share-Links: Token-basierte Freigabe mit Ablaufzeit und Max-Views
  • Error-System: Stapelbare Toast-Notifications mit Auto-hide
  • Error-Handling: Polling bei COMPLETED/FAILED, onDestroy Cleanup
  • Responsive Design: Mobile-First mit TailwindCSS
  • Docker Deployment: Caddy Reverse-Proxy mit HTTPS, Healthchecks, Resource-Limits

Installation

Lokal

npm install
npm run dev

Docker Compose

docker compose up -d

Mit API-Key

Setze die NSCT_API_BASE_URL Environment Variable für die Backend-Adresse:

docker compose up -d

Environment Variables

Variable Beschreibung Default
NSCT_API_BASE_URL Backend API URL http://localhost:8080
CADDY_DOMAIN Domain für HTTPS (Let's Encrypt) keine (HTTP nur)
NSCT_RATE_LIMIT Rate-Limit Config für Caddy keine

Nutzung

  1. API-Key eintragen im Login
  2. Neue Recherche starten mit Suchanfrage, Sprache und Tiefe
  3. Fortschritt verfolgen im Status-Tab (Polling alle 5s)
  4. Quellen & Claims analysieren in den jeweiligen Tabs
  5. Bericht herunterladen als JSON, Markdown oder Text
  6. Thread teilen über Share-Links mit Ablaufzeit
  • Token-basiert, zeitlich begrenzt
  • Ablaufzeiten: 24h, 48h, 7Tage, 14Tage, 30Tage, Nie
  • Max. Aufrufe: 1, 10, 50, Unbegrenzt
  • Read-Only-Zugriff für Empfänger
  • Token kann deaktiviert werden

Testen

Die Tests befinden sich im tests/-Verzeichnis:

  • tests/test_theme.svelte — Theme-Persistenz (localStorage)
  • tests/test_api.svelte — API-Client-Tests
  • tests/test_formatter.svelte — Formatter-Tests
  • tests/test_share_link.svelte — Share-Link-Ablauf-Tests

Architektur

  • SvelteKit + TailwindCSS + TypeScript
  • SvelteKit Static Adapter (adapter-static)
  • Build Output: build/
  • Polling: Alle 5 Sekunden, stoppt bei COMPLETED/FAILED
  • Error-System: ErrorBannerStore.ts + ErrorBanner.svelte (stapelbar, auto-hide)