Skip to content

HenkBigB/BMS

Repository files navigation

BMS Besichtigungs-/Inventar-App (MVP)

Überblick

Dieses Repository liefert ein umsetzbares V1-Grundgerüst für die Besichtigungs-/Inventar-App. Es enthält eine Next.js-App (PWA), Prisma-Schema, Seeds, Docker Compose, sowie eine Offline-Strategie mit IndexedDB + Outbox-Queue.

Setup / Run

Lokal (Node)

  1. .env.example nach .env kopieren und anpassen.
  2. Abhängigkeiten installieren:
    npm install
  3. Datenbank starten (z.B. via Docker):
    docker compose up -d postgres minio
  4. Migration + Seed:
    npx prisma migrate dev --name init
    npm run prisma:seed
  5. App starten:
    npm run dev

Docker Compose (Stack)

docker compose up --build

Die App läuft unter http://<server-ip>:3000.

Offline-Konzept

  • App Shell Cache: Service Worker cached die wichtigsten Routen (PWA).
  • IndexedDB (Dexie): Offline-Entitäten (Projekte, Räume, Inventar, Fotos, Outbox).
  • Outbox-Queue: Änderungen + Foto-Uploads werden lokal als pending gespeichert.
  • Sync: Bei Online-Status werden Outbox-Einträge sequenziell an den Server übertragen.
  • Konflikte: Default V1 = Last-Write-Wins pro Feld.
  • UI: Sync-Statusbar zeigt Online/Offline, Pending-Count und letzten Sync-Zeitpunkt.

Seeds (Default-Listen)

Folgende Seeds werden initial angelegt:

  • Attributgruppen + Werte
  • Foto-Typen
  • Raumtypen
  • Einzelobjekt-Kategorien inkl. kritisch-Flag
  • Möbelkatalog (inkl. Decimal-Mengen für Akten/Regal lfm)
  • Beispielprojekt mit Quelle/Ziel-Struktur, Varianten, Einzelobjekt

Admin-Login (Seed)

  • Benutzer: admin@example.local
  • Passwort: admin123

Backup-Hinweise

  • Postgres: Regelmäßige Dumps (pg_dump) in ein gesichertes Backup-Verzeichnis.
  • MinIO: mc mirror auf ein externes Backup-Target.
  • Empfehlung: tägliche inkrementelle Backups + wöchentliche Vollbackups.

Assumptions

  • Offline ist online-first mit IndexedDB + Outbox (bei Sync automatische Übertragung).
  • Konflikte werden per Last-Write-Wins auf Feldebene gelöst.
  • Export-Generierung erfolgt serverseitig nach erfolgreichem Sync.
  • Zugriff ist intern via VPN, daher HTTP ohne TLS akzeptiert.
  • Mindestvalidierung für kritische Einzelobjekte: Gewicht oder Maße erforderlich (wird serverseitig geprüft).

Architektur-Notizen

  • Prisma dient als ORM/Migration.
  • Fotos werden in MinIO abgelegt.
  • Auth erfolgt über Benutzer/Passwort + Rollenprüfung.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors