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:
- Verknüpfung: Paperless Custom Field
easydb_id→ Link zu EasyDB-Objekt - Neuer Leihvorgang:
src/lib/easydb.js → createLeihvorgang()implementieren - 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
Description
Languages
Svelte
75.5%
JavaScript
21.2%
Shell
2.6%
HTML
0.7%