apoGM/README.md
2026-05-20 13:49:04 +02:00

2.8 KiB
Raw Permalink Blame History

Leihverträge Gutenberg-Museum

SvelteKit-Webapp zur Verwaltung von Leihverträgen aus Paperless-ngx, mit Vorbereitung für EasyDB-Integration.

Schnellstart

# 1. Abhängigkeiten installieren
npm install

# 2. Umgebungsvariablen setzen
cp .env.example .env
# .env anpassen: PAPERLESS_BASE_URL, PAPERLESS_API_TOKEN, PAPERLESS_DOCTYPE_NAME

# 3. Entwicklungsserver starten
npm run dev

Umgebungsvariablen

Variable Bedeutung Beispiel
PAPERLESS_BASE_URL URL der Paperless-Instanz http://192.168.1.10:8000
PAPERLESS_API_TOKEN API-Token aus Paperless → Einstellungen → API abc123...
PAPERLESS_DOCTYPE_NAME Exakter Name des Dokumenttyps in Paperless Leihvertrag
EASYDB_BASE_URL (Platzhalter) URL der EasyDB-Instanz https://easydb.museum.de
EASYDB_API_TOKEN (Platzhalter) EasyDB-Token
PORT HTTP-Port des Node-Servers 3000
ORIGIN Öffentliche URL (für CSRF-Schutz) http://server.museum.de

Deployment auf Ubuntu

chmod +x deploy.sh
bash deploy.sh

Der Service läuft dann unter http://server:3000.

Nginx-Reverse-Proxy empfohlen:

server {
    listen 80;
    server_name leihvertraege.museum.intern;
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Architektur

src/
├── lib/
│   ├── paperless.js     Paperless-ngx API Client (paginiert, gecacht)
│   └── easydb.js        EasyDB Client (Platzhalter)
└── routes/
    ├── +page.server.js       Server-side Load (SSR)
    ├── +page.svelte          Haupt-UI
    └── api/paperless/
        └── documents/
            └── +server.js   REST-Endpunkt für Client-Refresh

EasyDB-Integration (geplant)

Die App ist vorbereitet für:

  1. Verknüpfung: Paperless Custom Field easydb_id → Link zu EasyDB-Objekt
  2. Neuer Leihvorgang: src/lib/easydb.js → createLeihvorgang() implementieren
  3. Objektsuche: easydb.js → searchObjects() für Autocomplete im Formular

Datenfluss geplant:

Paperless (Leihvertrag-PDF) ──easydb_id──→ EasyDB (Objekt/Leihvorgang)

Paperless API-Token generieren

Paperless → Einstellungen → API-Token → Token anzeigen/generieren