Page 20 - LogiLoom_Plattform_Dokumentation
P. 20
tracking_events Tracking-Ereignisse shipmentId, status, location, description, timestamp
avis_history AVIS-Protokoll shipmentId, avisType, sentAt, recipientEmail, status
organisations Organisationen name, carrierCode, status, contactEmail
organisation_users Org-Mitgliedschaften organisationId, userId, orgRole, 6× Berechtigungs-Flags
invitations Einladungen email, token, orgRole, expiresAt, acceptedAt
notification_preferences Benachrichtigungseinstellungen userId, notifyOnStatus*, notifySender, notifyRecipient
notification_log Benachrichtigungsprotokoll shipmentId, eventType, recipientEmail, status, sentAt
system_config Systemkonfiguration key, value, description
saved_searches Gespeicherte Suchen userId, name, filters (JSON), isShared, organisationId
13.3 API-Architektur (tRPC)
LogiLoom verwendet tRPC als API-Schicht. tRPC ermöglicht typsichere Remote Procedure Calls ohne
manuelle API-Definitionen oder Code-Generierung. Alle Prozeduren sind in server/routers.ts definiert und
werden vom Frontend über trpc.*.useQuery() und trpc.*.useMutation() aufgerufen.
Die API ist in folgende Router-Namespaces unterteilt: auth (Authentifizierung), shipments
(Sendungsverwaltung), tracking (Sendungsverfolgung), dashboard (Statistiken), notifications
(Benachrichtigungen), organisations (Organisationsverwaltung), admin (Administration), export
(Datenexport) und savedSearches (gespeicherte Suchen).
Für Entwickler: Alle API-Endpunkte sind unter /api/trpc erreichbar. Neue Prozeduren werden in
server/routers.ts hinzugefügt. Geschützte Prozeduren verwenden protectedProcedure, öffentliche
publicProcedure. Admin-Prozeduren prüfen ctx.user.role === 'admin'.
13.4 Authentifizierung und Sicherheit
Die Authentifizierung erfolgt über Manus OAuth oder lokale Anmeldung. Nach erfolgreicher Anmeldung
wird ein JWT-Token als HttpOnly-Cookie gesetzt. Jede API-Anfrage liest dieses Cookie, verifiziert das Token
und stellt den Benutzer als ctx.user bereit. Abgelaufene oder ungültige Tokens führen zu einer
automatischen Weiterleitung zur Login-Seite.
Passwörter werden mit bcrypt (Kostenfaktor 10) gehasht. Der JWT_SECRET wird als Umgebungsvariable
injiziert und ist nicht im Quellcode enthalten. Alle sensiblen Konfigurationswerte werden über das Secrets-
Management der Plattform verwaltet.
13.5 Datei-Speicher (S3)
Datei-Uploads (z.B. Profilbilder) werden über AWS S3 gespeichert. Der Server verwendet vorkonfigurierte
S3-Hilfsfunktionen (storagePut, storageGet) aus server/storage.ts. Dateien werden unter einem zufälligen
Schlüssel gespeichert, um Enumeration zu verhindern. Die zurückgegebene CDN-URL wird in der Datenbank
gespeichert und direkt in der UI verwendet.

