Mehr zu: anyPIM

anyPIM Architektur

anyPIM ist als moderne Webanwendung mit klar getrenntem Backend und Frontend konzipiert. Das Backend stellt eine vollständige REST-API bereit, das Frontend kons

Architekturübersicht

anyPIM ist als moderne Webanwendung mit klar getrenntem Backend und Frontend konzipiert. Das Backend stellt eine vollständige REST-API bereit, das Frontend konsumiert diese als Single-Page-Application. Diese Architektur ermöglicht sowohl die Nutzung über die Weboberfläche als auch die direkte API-Integration durch Drittsysteme.

Systemarchitektur

Schicht Technologie Version Zweck
Frontend Vue 3 3.x Reaktives SPA-Framework mit Composition API
Build Vite 5.x Schnelles HMR und optimierte Builds
Styling Tailwind CSS + DaisyUI 3.x / 4.x Utility-first CSS mit Komponentenbibliothek
State Pinia 2.x Zentrales State-Management
Backend Laravel 11.x PHP-Framework für die REST-API
Authentifizierung Laravel Sanctum Token-basierte API-Authentifizierung
Autorisierung Spatie Permission Rollen- und Berechtigungsverwaltung
Datenbank MySQL 8.0+ Relationale Datenhaltung mit JSON- und FULLTEXT-Support
Cache Redis 7.x Anwendungscache und Session-Speicher
Queue Redis + Horizon Asynchrone Jobverarbeitung und Monitoring

Backend-Architektur

Schichtenmodell

Das Backend folgt einem strikten Schichtenmodell, das die Verantwortlichkeiten klar trennt:

1. Routing und Middleware Alle API-Routen sind unter /api/v1/ registriert und durchlaufen die Sanctum-Authentifizierungs-Middleware. Zusätzliche Middleware prüft Berechtigungen auf Rollen- und Hierarchieebene.

2. Controller-Schicht Controller validieren eingehende Requests über Form Requests, delegieren die Geschäftslogik an Services und transformieren die Ergebnisse über API Resources in JSON-Antworten. Controller enthalten keine Geschäftslogik.

3. Service-Schicht Services kapseln die gesamte Geschäftslogik. Sie orchestrieren Datenbankoperationen, lösen Events aus und koordinieren agentenübergreifende Operationen.

4. Model-Schicht Eloquent-Models bilden die 35 Datenbanktabellen ab. Sie definieren Relationen, Scopes, Accessors und Mutators. Alle Models verwenden UUID-Primärschlüssel.

Agentenbasiertes Moduldesign

Die Backend-Codebasis ist in funktionale Agenten unterteilt, die jeweils einen fachlichen Bereich abdecken:

Jeder Agent besitzt eigene Controller, Services, Models und Form Requests. Agentenübergreifende Kommunikation erfolgt über Service-Injection und Events.

Frontend-Architektur

Das Frontend ist eine Vue 3 Single-Page-Application mit folgender Struktur:

Kern-Technologien

Build-Pipeline

Vite übernimmt sowohl die Entwicklungsumgebung (HMR mit unter 100 ms Aktualisierung) als auch den Produktions-Build mit Tree-Shaking, Code-Splitting und Asset-Hashing. Die gebaute SPA wird als statische Dateien über Apache oder Nginxausgeliefert.

Caching-Strategie

Redis als Anwendungscache

anyPIM nutzt Redis für zwei Zwecke: als Anwendungscache und als Queue-Broker.

Tagged Cache Invalidation: Caches werden mit Tags versehen, die eine gezielte Invalidierung ermöglichen. Ändert sich ein Produkt, werden alle Caches mit dem Tag product:{id} invalidiert — unabhängig davon, ob sie Listendarstellungen, Detailansichten oder Suchindex-Einträge betreffen.

Cache-Ebenen:

Ebene TTL Beschreibung
Attribut-Definitionen 24 Stunden Ändern sich selten, werden bei Schema-Änderungen invalidiert
Hierarchie-Bäume 1 Stunde Werden bei Strukturänderungen sofort invalidiert
Produktdaten 30 Minuten Werden bei jeder Änderung gezielt invalidiert
Suchindex Permanent Wird über Datenbank-Triggers und Events aktualisiert

Queue-System und Horizon

Langlebige Operationen werden nicht synchron in der HTTP-Request-Verarbeitung ausgeführt, sondern in Background Jobs ausgelagert:

Laravel Horizon überwacht die Queue-Verarbeitung, bietet Echtzeitmetriken und erlaubt die Konfiguration von Parallelität und Wiederholungsstrategien.