Skip to content

Verzeichnisstruktur


Inpoints

  • routes/web.php - Hier werden alle Web-Routen (für Blade-Templates) definiert.
  • routes/api.php - Hier werden alle API-Routen definiert. => Dies muss irgendwann refaktoriert werden, da die API-Routen im Moment noch in routes/web.php definiert werden.

Der Aufbau des Verzeichnisses

  • /.platform - Gesonderte Konfig-Dateien, die mittels AWS CodePipeline an Elastic Beanstalk übergeben werden, z.B. eine nginx.conf oder eine php.ini.
  • /app - Zentrale Logik des Backends
    • /app/Models - Model-Klassen, die die Logik für die Datenbank-Interaktion enthalten.
    • /app/Console/Commands - Console-Commands, die über die Kommandozeile ausgeführt werden können (php artisan ...).
    • /app/Http/Controllers - Controller, die die Logik für die verschiedenen Routen enthalten.
    • /app/Http/Livewire - Livewire-Components, nach Funktionsbereichen gegliedert.
    • /app/Http/Middleware - Middleware, die zwischen den Routen und den Controllern sitzt.
    • /app/Http/Requests - Request-Objekte, die die Logik für die Validierung von Requests enthalten.
    • /app/Http/APIs - Schnittstellen zu externen APIs, z.B. Morpheus, CLTK, Perseids, LatinWordnet.
    • /app/Http/Exports - Export-Logik für Excel-Dateien.
    • /app/Http/Helpers - Hilfsfunktionen, die von mehreren Stellen aus aufgerufen werden können.
    • /app/Http/Morpher - Klassen, mit denen die Wörter morphologisiert werden.
    • /app/Http/Notifications - Notification-Klassen, die von mehreren Stellen aus aufgerufen werden können.
    • /app/Http/Observers - Observer-Klassen, die als Hooks bestimmte Model-Methoden registrieren und eine Aktion ausführen.
    • /app/Http/Policies - Policy-Klassen, die die Berechtigungen regeln.
    • /app/Http/Providers - Provider-Klassen, die von Laravel verwendet werden.
    • /app/Http/Services - Service-Klassen, nach Funktionsbereich gegliedert, die von mehreren Stellen aus aufgerufen werden können.
    • /app/Http/Repositories - Repository-Klassen (Repository-Pattern), nach Funktionsbereich gegliedert (z.B. für Vokabeln).
    • /app/Http/Traits - PHP-Traits, nach Funktionsbereich gegliedert.
  • /bootstrap - Bootstrap-Dateien von Laravel
  • /config - Sämtliche Konfigurationsdateien für Laravel oder Packages
  • /database - Datenbank-relevante Dateien.
    • /database/migrations - Datenbank-Migrationen
    • /database/seeds - Datenbank-Seed-Dateien
    • /database/factories - Factories von Models für die Erstellung von Testdaten
  • /public - Gebundelte Frontend-Assets, z.B. Bilder, CSS-Dateien, JavaScript-Dateien.
  • /resources - Quelldateien für das Frontend (Vue-Components, CSS, JavaScript, Grafik-Assets)
    • /resources/js - Im Hauptverzeichnis befinden sich die JavaScript-Dateien (hermeneus.app.js, hermeneus.editor.js, ..) für die verschiedenen Funktionsbereiche von Hermeneus => Codesplitting. In den Unterordnern befinden sich die Vue-Components.
    • /resources/css - CSS-Dateien
    • /resources/views - Blade-Templates von Laravel
    • /resources/lang - Sprachdateien (irrelevant für uns)
    • /resources/html - Statisches HTML
    • /resources/sass - SASS-Dateien
    • /resources/xslt - XSLT-Stylesheet für die Transformation von TEI-XML-Dateien in HERMENEUS-XML
  • /routes - Routing
  • /storage - Logs, Cache, Indices, aber auch für den Endnutzer relevante Dateien, z.B. die hochgeladenen Dateien.
  • /tests - Test-Dateien
  • /vendor - PHP-Dependencies
  • .env - Konfigurationsdatei für die Entwicklungsumgebung
  • composer.json - PHP-Dependencies
  • package.json - Node-Dependencies
  • phpunit.xml - Konfigurationsdatei für PHPUnit (Backend-Tests)
  • tailwind.config.js - Konfigurationsdatei für TailwindCSS, aus der alle CSS-Klassen generiert werden.
  • vite.config.js - Konfigurationsdatei für Vite, der Bundler für Vue-Components. Neue Assets müssen hier registriert werden.