| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung |
| konzepte:systemarchitektur_minasa [19.05.2026 09:24] – alex | konzepte:systemarchitektur_minasa [19.05.2026 11:12] (aktuell) – alex |
|---|
| Ein Minasa-System ist als klassische 3-Tier-Web-Architektur aufgebaut: | Ein Minasa-System ist als klassische 3-Tier-Web-Architektur aufgebaut: |
| |
| {{:konzepte:system_architektur.png?nolink|}} | {{:konzepte:system_architektur.png}} |
| |
| Im Folgenden werden die einzelnen Teilsysteme erklärt. | Im Folgenden werden die einzelnen Teilsysteme erklärt. |
| |
| |
| ===== Persistierung, Datenhaltung ===== | ===== Persistierung, Datenhaltung ===== |
| Der Applikationsserver ist eine PHP-Applikation, bestehend aus folgenden Teilsystemen / Schichten: | Der Applikationsserver ist eine PHP-Applikation, bestehend aus folgenden Teilsystemen / Schichten: |
| |
| * Als Web-Framework kommt das Gaia-Framework von [[Kaden + Partner]] zum Einsatz: Dies ist ein MVC-Web-Framework für die Abhandlung von Web-Requests. | * Als Web-Framework kommt das Gaia-Framework von [[https://kadenpartner.ch|Kaden + Partner]] zum Einsatz: Dies ist ein MVC-Web-Framework für die Abhandlung von Web-Requests. |
| Auf dieser Basis sind folgende Teil-Komponenten vorhanden: | * Auf dieser Basis sind folgende Teil-Komponenten vorhanden: |
| JSON-API für Backend-Dienste: | * **JSON-API für Backend-Dienste: ** \\ Diese Komponente stellt die Endpunkte für die Services zur Verfügung, welche von der Cockpit-Applikation (Single-Page JS) benötigt werden. Diese Endpunkte sind auf die Cockpit-Applikation zugeschnitten und liefern zum grossen Teil Json-Antworten. Entrypoint is /services/. |
| Diese Komponente stellt die Endpunkte für die Services zur Verfügung, welche von der Cockpit-Applikation (Single-Page JS) benötigt werden. Diese Endpunkte sind auf die Cockpit-Applikation zugeschnitten und liefern zum grossen Teil Json-Antworten. Entrypoint is /services/. | * **JSON-API für Frontend-Dienste:** \\ Speziell für externe Frontends / Headless CMS / Minasa Widget ist eine Abfrage-API verfügbar. Entrypoint ist /frontend/api. Genauere Infos dazu siehe Frontend-Doc. |
| JSON-API für Frontend-Dienste: | * **Frontend-Route-Controller und -Rendering:** \\ Die öffentlich erreichbare Webseite wird von Frontend-Controllern ausgeliefert: Sie rendern dynamisch HTML-Webseiten und sorgen für das Page-Caching. |
| Speziell für externe Frontends / Headless CMS / Minasa Widget ist eine Abfrage-API verfügbar. Entrypoint ist /frontend/api. Genauere Infos dazu siehe Frontend-Doc. | * **Export-Schnittstellen-Endpoints:** \\ das System bietet verschiedene Export-Schnittstellen, welche über definierte Schnittstellen-Router und -Controller ausgeliefert werden. Einstiegspunkt: /services/export/ |
| Frontend-Route-Controller und -Rendering: | * **gemeinsame Backend-Services:** \\ von allen Teilen gemeinsam genutzte Code-Basis mit Applikationslogik |
| Die öffentlich erreichbare Webseite wird von Frontend-Controllern ausgeliefert: Sie rendern dynamisch HTML-Webseiten und sorgen für das Page-Caching. | ===== Cockpit-Applikation ===== |
| Export-Schnittstellen-Endpoints: | |
| das System bietet verschiedene Export-Schnittstellen, welche über definierte Schnittstellen-Router und -Controller ausgeliefert werden. | Die Cockpit-Applikation stellt das Management-Tool für Minasa zur Verfügung. Sie ist als Single-Page JavaScript mit [[https://vuetify.com|VueJS/Vuetify]] umgesetzt. |
| Einstiegspunkt: /services/export/ | |
| gemeinsame Backend-Services: | |
| von allen Teilen gemeinsam genutzte Code-Basis mit Applikationslogik | |
| Cockpit-Applikation | |
| Die Cockpit-Applikation stellt das Management-Tool für Minasa zur Verfügung. Sie ist als Single-Page JavaScript mit [VueJS/Vuetify] (https://vuetifyjs.com/) umgesetzt. | |
| |
| Die Cockpit-Applikation kommuniziert mit den JSON-REST-Schnittstellen des Applikationsservers. | Die Cockpit-Applikation kommuniziert mit den JSON-REST-Schnittstellen des Applikationsservers. |
| Einstiegspunkt: /admin-cockpit/ | Einstiegspunkt: /admin-cockpit/ |
| |
| Web-Clients | ===== Web-Clients ===== |
| sowohl die öffentlich zugängliche Webseite (Frontend) wie auch die Cockpit-Applikation sind via Internet erreichbar. | |
| | Sowohl die öffentlich zugängliche Webseite (Frontend) wie auch die Cockpit-Applikation sind via Internet erreichbar. |
| | |
| | ===== Software-Module / Architektur ===== |
| | |
| | Minasa besteht aus den folgenden Software-Modulen resp. Teilsystemen. Die farbige Markierung dient der Einteilung von Basis-Code (Minasa, rot), kunden-spezifischem Code (grün, kann auch von Kunden selber entwickelt werden) und Basis-Frameworks von Kaden und Partner (Blau). |
| | |
| | {{:konzepte:minasa-module.png?799x602}} |
| | |
| | Das System ist grob in folgende Teile gegliedert: |
| | |
| | * **Applikations-Server-Teil:** \\ Hier läuft die eigentliche Web-Applikatoin auf Basis PHP, bestehend aus folgenden Teilmodulen: |
| | * **Framework, API, Schnittstellen:** \\ Dieses Modul stellt das eigentliche “Backbone” der Applikation dar: Es bildet die gesamte Web- und Business-Logik ab und stellt alle für den Betrieb der Plattform notwendigen Funktionalitäten zur Verfügung. \\ Diese Module gehören zum Minasa-Grund-System und werden von Kaden und Partner (weiter) entwickelt. |
| | * **Frontend-Modul, Kunden-spezifisch:** \\ Dieses Modul stellt den sichtbaren Webseiten-Frontend-Teil dar: Hier werden URL-Routen definiert, anhand HTML-Templates Webseiten generiert, Requests entgegengenommen und verarbeitet. Dieser Teil ist kunden-spezifisch: Jeder Kunde hat eine eigene Frontend-Implementation, da sich die Webseiten auch je Kunde unterscheiden. \\ **Dieser Code kann (in der Theorie) auch vom Kunden selber entwickelt werden, und kann/muss nicht Teil des K+P-Software-Repositories sein.** |
| | * **Minasa-Basis-Framework:** \\ Dieses Modul stellt Basis-Komponenten zur Verfügung, welche von allen Programmteilen genutzt werden (können). |
| | * **Gaia Web-Framework:** \\ Dies ist das zugrundeliegende Basis-Web-Framework, das haus-interne Framework von Kaden und Partner. Es wird in zahlreichen Web-Applikationen eingesetzt und stellt die Basis für die Minasa-Web-Applikation dar. |
| | * **Cockpit:** \\ Das Cockpit ist die Verwaltungs-Applikation auf Basis einer Single Page JavaScript-Applikatoin(VueJS), und ist Teil des Minasa-Codes. Das Cockpit kann (in der Theorie) unabhängig vom Applikationsserver betrieben werden, wird in der Praxis aber jeweils auf demselben Host betrieben / ausgeliefert. \\ Diese Applikation stellt das “Back-Office” dar, und erlaubt die Verwaltung des Systems sowie der Nutzdaten (Events, Artikel, …). |
| | * **Persistenz-Schicht:** \\ Die Datenpersistierung findet in einer relationalen Datenbank (MySQL 8) sowie in Dateien (Bilder, Dokumente) statt. Die Datenbank kann auch separat betrieben werden, die Dateien müssen als lokaler Mount dem Applikationsserver zur Verfügung stehen. |
| | ===== Schnittstellen-Angebot ===== |
| | |
| | Minasa stellt heute folgende lesende Schnittstellen für externe Clients zur Verfügung: |
| | |
| | * ''/services/export/azizi/1.0'': XML-Export im [[https://minasa-demo.ch/system_documentation/services/azizi/index.html|Azizi-Format]] |
| | * ''/frontend/api'': JSON-Schnittstelle für externe Systeme [[https://minasa-demo.ch/system_documentation/services/frontend-api/index.html|siehe]] |
| | * ''/services/export/eventfrog/'': JSON-Export im von [[https://eventfrog.ch/|Eventfrog]] verlangten Format |
| | * ein HTML-Widget zur Einbettung in eine bestehende Webseite (javaScript WebComponent) |
| | |
| | ===== Datenimport von Fremdsystemen ===== |
| | |
| | Folgende Import-Clients sind heute implementiert: |
| | |
| | * Azizi-Import: importiert Azizi-Daten von einem Azizi-Datenhub. |
| | * Guidle-Import: importiert Guidle-Daten von einem Guidle-System. |
| | |