Skip to content

Latest commit

 

History

46 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OnTrack

Inventar- und Einsatz-Tracking für Veranstaltungstechnik mit QR-Codes. Konzept und Feature-Liste: KONZEPT.md

Installieren

Als Desktop-App (macOS, Windows, Linux) — nichts weiter nötig, Installer doppelklicken: Releases. Anleitung und Grenzen der Desktop-Version: DESKTOP.md.

Ab Fassung 1.2.0 meldet sich die App selbst, wenn es eine neuere gibt. Unter Windows und Linux lädt und installiert sie das Update auf Nachfrage; auf dem Mac öffnet sie die Download-Seite, weil sich eine nicht notarisierte App dort nicht selbst ersetzen darf. Einzelheiten unter Updates.

Als Server (empfohlen, wenn Handys scannen sollen oder mehrere Personen gleichzeitig arbeiten): siehe Deployment weiter unten.

Wann was passt:

Desktop-App Server
Einrichtung Installer doppelklicken Docker + Reverse-Proxy
Kamera-Scan am Handy
Standort beim Scan (GPS)
Mehrere Personen / Geräte ❌ Daten bleiben lokal
Update meldet sich selbst docker compose up -d --build

Lokal entwickeln & testen

npm install
npx prisma migrate dev   # legt die SQLite-Datenbank an (prisma/data/ontrack.db)
npm run dev              # → http://localhost:3000

Der erste registrierte Benutzer wird automatisch Admin und ist sofort freigeschaltet. Alle weiteren Registrierungen müssen vom Admin unter Benutzer freigeschaltet werden.

Handy-Test im WLAN: npm run dev läuft auch unter http://<Mac-IP>:3000. Achtung: Kamera (QR-Scan) und GPS funktionieren im Browser nur über HTTPS oder localhost — im WLAN ohne HTTPS die manuelle Inventarnummern-Eingabe auf der Scan-Seite nutzen. Auf dem VPS mit HTTPS funktioniert beides.

Deployment auf dem VPS (Docker)

docker compose up -d --build

Die App läuft dann auf Port 3000; Datenbank und Foto-Uploads liegen in Docker-Volumes (ontrack-db, ontrack-uploads) und überleben Updates.

HTTPS ist Pflicht (Kamera + GPS): davor einen Reverse-Proxy setzen, z. B. Caddy — kümmert sich automatisch um Zertifikate:

ontrack.beispiel.de {
    reverse_proxy localhost:3000
}

Nach dem Deployment: In der App unter Einstellungen → App-Adresse für QR-Codes die echte Adresse (z. B. https://ontrack.beispiel.de) eintragen, bevor Etiketten gedruckt werden — sonst zeigen die QR-Codes auf localhost.

Backup

Im Docker-Betrieb läuft die Sicherung von allein mit. docker compose up -d startet neben der App einen zweiten Dienst, der täglich einen Stand ablegt und die letzten 14 aufhebt. Kein Zeitplan, an den jemand denken muss.

Was gesichert wird: die Datenbank (per VACUUM INTO, also ein in sich stimmiger Stand auch bei laufendem Betrieb — eine gewöhnliche Dateikopie kann mitten in einer Schreibaktion entstehen) und die hochgeladenen Fotos.

Einstellen lässt sich das über zwei Umgebungsvariablen:

Variable Standard Bedeutung
ONTRACK_BACKUP_KEEP 14 Wie viele Stände aufgehoben werden
ONTRACK_BACKUP_INTERVAL 86400 Sekunden zwischen zwei Läufen

Sofort einen Stand ziehen:

docker compose exec backup node scripts/backup.mjs

Die Stände liegen im Volume ontrack_ontrack-backups. Herausholen:

docker run --rm -v ontrack_ontrack-backups:/b -v "$PWD":/ziel alpine sh -c "cp -r /b/. /ziel/ontrack-sicherung/"

Ohne den Sicherungsdienst starten: docker compose up -d ontrack.

Wiederherstellen

Eine Sicherung, die noch nie zurückgespielt wurde, ist eine Vermutung. Der Weg (App vorher anhalten, sonst schreibt sie in die Datei, die gerade ersetzt wird):

docker compose stop ontrack
docker run --rm -v ontrack_ontrack-backups:/b -v ontrack_ontrack-db:/db alpine sh -c "cp /b/ontrack-<ZEITSTEMPEL>.db /db/ontrack.db"
docker compose start ontrack

Fotos analog aus /b/uploads/ nach ontrack_ontrack-uploads. Migrationen laufen beim Start automatisch, ein älterer Stand wird also mitgezogen.

Ohne Docker (lokal oder auf einem eigenen Server):

npm run backup

Zielordner und Anzahl über --ziel und --behalten bzw. die gleichnamigen Umgebungsvariablen.

Technik

Next.js 16 (App Router) · Prisma 6 + SQLite · Tailwind CSS v4 · PWA QR-Scan: @zxing/browser · Etiketten-PDF: pdf-lib + qrcode Desktop-Build: Electron 43 + electron-builder

Lizenz

Der Quellcode ist öffentlich einsehbar, aber nicht Open Source. Die veröffentlichten Installer dürfen kostenfrei genutzt werden, auch im eigenen Unternehmen. Weitergabe, Veränderung und der Betrieb als Dienst für Dritte bedürfen der Zustimmung — siehe LICENSE.

About

Inventar- und Einsatz-Tracking für Veranstaltungstechnik mit QR-Codes — als Desktop-App für macOS, Windows und Linux oder als Server

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages