86 lines
2.8 KiB
Markdown
86 lines
2.8 KiB
Markdown
# Leihverträge – Gutenberg-Museum
|
||
|
||
SvelteKit-Webapp zur Verwaltung von Leihverträgen aus Paperless-ngx,
|
||
mit Vorbereitung für EasyDB-Integration.
|
||
|
||
## Schnellstart
|
||
|
||
```bash
|
||
# 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
|
||
|
||
```bash
|
||
chmod +x deploy.sh
|
||
bash deploy.sh
|
||
```
|
||
|
||
Der Service läuft dann unter `http://server:3000`.
|
||
|
||
**Nginx-Reverse-Proxy empfohlen:**
|
||
```nginx
|
||
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
|
||
```
|