Files
Moped-Tracking/README.md
T
2026-07-26 20:27:24 +02:00

2.9 KiB

Familien-Motorrad-Tracker

Gemeinsame Verwaltung von Motorrädern, Wartungen, TÜV-/Inspektionsterminen und Fahrten für eine Familie. Die App nutzt Next.js, TypeScript und SQLite und ist für den Betrieb per Docker hinter einem Reverse Proxy vorbereitet.

Lokale Entwicklung

Voraussetzungen: Node.js 24 und npm.

Copy-Item .env.example .env.local
npm ci
npm run dev

Vor dem Start in .env.local mindestens ADMIN_PASSWORD, ADMIN_NAME und AUTH_SECRET setzen. Die App ist anschließend unter http://localhost:3000 erreichbar. Datenbank und Uploads liegen standardmäßig in data\.

Beim ersten Start wird genau dann ein Admin aus den ADMIN_*-Werten angelegt, wenn noch kein aktives Konto existiert. Danach meldet man sich mit ADMIN_NAME und ADMIN_PASSWORD an. Das initiale Passwort sollte direkt unter Konto geändert werden.

Standard-Admin-Zugang (aus .env.example)

  • Passwort: change-this-password
  • Name: Familien-Admin

Docker

Copy-Item .env.example .env
# Sichere Werte in .env eintragen
docker compose up -d --build

Die Anwendung ist standardmäßig über Port 3000 erreichbar. PORT in .env ändert nur den veröffentlichten Host-Port. Für eine Domain sollte nginx, Traefik oder ein anderer Reverse Proxy TLS terminieren und auf diesen Port weiterleiten.

Sichere Schlüssel lassen sich beispielsweise so erzeugen:

node -e "console.log(require('node:crypto').randomBytes(32).toString('hex'))"
node -e "console.log(require('node:crypto').randomBytes(32).toString('base64'))"

Den Hex-Wert für AUTH_SECRET und den Base64-Wert für NEXT_SERVER_ACTIONS_ENCRYPTION_KEY verwenden.

Benutzer und Rollen

Es gibt Administratoren und Mitglieder. Jedes Motorrad gehört genau einem Benutzer (Besitzer). Administratoren sehen alle Motorräder, Mitglieder sehen ihre eigenen plus explizit freigegebene Motorräder. Besitzer und Administratoren können Motorräder mit anderen aktiven Benutzern per Benutzername teilen. Konten werden durch Administratoren verwaltet. Motorräder dürfen vom Besitzer oder von Administratoren gelöscht werden. Gelöschte Benutzer können sich nicht mehr anmelden und sind nicht mehr als Fahrer auswählbar; vorhandene Wartungen und Fahrten bleiben mit dem ursprünglichen Namen zur Nachvollziehbarkeit erhalten. Der letzte aktive Administrator kann weder gelöscht noch herabgestuft werden.

Backups

Alle persistenten Daten liegen im Docker-Volume moped-data unter /app/data:

  • moped-tracker.sqlite sowie mögliche -wal-/-shm-Dateien
  • uploads\ mit Rechnungen und Fotos

Für ein konsistentes Backup den Container kurz stoppen und das komplette Volume sichern. Bei lokaler Entwicklung entsprechend den gesamten Ordner data\ sichern.

Qualität

npm run lint
npm run build

Sinnvolle nächste Ausbaustufen

E-Mail-Erinnerungen vor Fälligkeiten, Mehrsprachigkeit und PDF-Exporte der Wartungshistorie.