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 inroutes/web.phpdefiniert werden.
Der Aufbau des Verzeichnisses
/.platform- Gesonderte Konfig-Dateien, die mittels AWS CodePipeline an Elastic Beanstalk übergeben werden, z.B. einenginx.confoder einephp.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 Entwicklungsumgebungcomposer.json- PHP-Dependenciespackage.json- Node-Dependenciesphpunit.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.