# **Technische Architektur und Codeaufbau** In diesem Abschnitt erläutere ich die Architektur und Struktur des MYP-Projekts sowie die Funktionalitäten der zentralen Komponenten. --- ## **1. Technische Architektur** ### **1.1. Architekturübersicht** MYP basiert auf einer modernen Webanwendungsarchitektur: - **Frontend:** Entwickelt mit React und Next.js. Stellt die Benutzeroberfläche bereit. - **Backend:** Nutzt Node.js und Drizzle ORM für die Datenbankinteraktion und Geschäftslogik. - **Datenbank:** SQLite zur Speicherung von Nutzerdaten, Druckaufträgen und Druckerkonfigurationen. - **Containerisierung:** Docker wird verwendet, um die Anwendung in isolierten Containern bereitzustellen. - **Webserver:** Caddy dient als Reverse Proxy mit HTTPS-Unterstützung. ### **1.2. Modulübersicht** - **Datenfluss:** Die Anwendung ist stark datengetrieben. API-Routen werden genutzt, um Daten zwischen Frontend und Backend auszutauschen. - **Rollenbasierter Zugriff:** Über ein Berechtigungssystem können Administratoren und Benutzer unterschiedliche Funktionen nutzen. --- ## **2. Codeaufbau** ### **2.1. Ordnerstruktur** Die Datei `repomix-output.txt` zeigt eine strukturierte Übersicht des Projekts. Nachfolgend einige wichtige Verzeichnisse: | **Verzeichnis** | **Inhalt** | |--------------------------|---------------------------------------------------------------------------| | `src/app` | Next.js-Seiten und Komponenten für Benutzer und Admins. | | `src/components` | Wiederverwendbare UI-Komponenten wie Karten, Diagramme, Buttons etc. | | `src/server` | Backend-Logik, Authentifizierung und Datenbankinteraktionen. | | `src/utils` | Hilfsfunktionen für Analysen, Validierungen und Datenbankzugriffe. | | `drizzle` | Datenbank-Migrationsdateien und Metadaten. | | `docker` | Docker-Konfigurations- und Bereitstellungsskripte. | --- ### **2.2. Hauptdateien** #### **Frontend** - **`src/app/page.tsx`:** Startseite der Anwendung. - **`src/app/admin/`:** Admin-spezifische Seiten, z. B. Druckerverwaltung oder Fehlerstatistiken. - **`src/components/ui/`:** UI-Komponenten wie Dialoge, Formulare und Tabellen. #### **Backend** - **`src/server/auth/`:** Authentifizierung und Benutzerrollenmanagement. - **`src/server/actions/`:** Funktionen zur Interaktion mit Druckaufträgen und Druckern. - **`src/utils/`:** Analyse und Verarbeitung von Druckdaten (z. B. Fehlerquoten und Auslastung). #### **Datenbank** - **`drizzle/0000_overjoyed_strong_guy.sql`:** SQLite-Datenbankschema mit Tabellen für Drucker, Benutzer und Druckaufträge. - **`drizzle.meta/`:** Metadaten zur Datenbankmigration. --- ### **2.3. Datenbankschema** Das Schema enthält vier Haupttabellen: 1. **`user`:** Speichert Benutzerinformationen, einschließlich Rollen und E-Mail-Adressen. 2. **`printer`:** Beschreibt die Drucker, ihren Status und ihre Eigenschaften. 3. **`printJob`:** Zeichnet Druckaufträge auf, einschließlich Startzeit, Dauer und Abbruchgrund. 4. **`session`:** Verwaltert Benutzer-Sitzungen und Ablaufzeiten. --- ## **3. Wichtige Funktionen** ### **3.1. Authentifizierung** Das System nutzt OAuth zur Anmeldung. Benutzerrollen werden in der Tabelle `user` gespeichert und im Backend überprüft. ### **3.2. Statistiken** - **Fehlerrate:** Berechnet die Häufigkeit von Abbrüchen für jeden Drucker. - **Auslastung:** Prozentuale Nutzung der Drucker, basierend auf geplanten und abgeschlossenen Druckaufträgen. - **Prognosen:** Verwenden historische Daten, um zukünftige Drucknutzungen vorherzusagen. ### **3.3. API-Endpunkte** - **`src/app/api/printers/`:** Zugriff auf Druckerkonfigurationsdaten. - **`src/app/api/job/[jobId]/`:** Verwaltung einzelner Druckaufträge. Nächster Schritt: [=> Datenbank und Analytik-Funktionen](./Datenbank.md)