thats-me/backend
Kevin Adametz ab23c9f4ef Client-Logging, getrennte Rate-Limits und Ladezustand für Bilder
Auf dem Testserver lief die App beim Scrollen langer Timelines in ein 429:
nach jeder Scroll-Pause ging sofort ein PUT /settings raus, und jedes
sichtbare Vorschaubild zählte auf dasselbe Limit von 300/min. Danach
blieben Bilder leer und "Einstellungen konnten nicht gespeichert werden"
erschien.

Backend: Medien-Reads bekommen einen eigenen Limiter (media, 1200/min),
POST /client-logs nimmt Warnungen und Fehler der App an (client-logs,
30/min) und schreibt sie in den täglichen Kanal `client`; Exceptions
tragen user_id, path und method im Kontext.

Frontend: Einstellungen gehen frühestens 1,5 s nach der letzten Änderung
und nur bei geändertem Inhalt zum Server, 429/Netzfehler werden still mit
Backoff wiederholt, nur eine Ablehnung wird gemeldet. Bilder laufen durch
ein Gate (6 parallel, Retry-After, 3 Versuche) und fallen auf einen
Platzhalter statt auf einen kaputten Pfad zurück. Neuer clientLog-Service
mit IndexedDB-Puffer, Dedupe und Batch-Versand, globaler Fehlerfang im
Boot, Protokoll im Entwickler-Tab. Drei pulsierende Punkte statt weißer
Fläche in Timeline-Punkt, Key Image und Medienkacheln.

Dokumentation in documentation/logging.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-25 09:31:35 +00:00
..
.github/workflows first commit 2025-04-01 10:49:26 +02:00
app Client-Logging, getrennte Rate-Limits und Ladezustand für Bilder 2026-09-25 09:31:35 +00:00
bootstrap Client-Logging, getrennte Rate-Limits und Ladezustand für Bilder 2026-09-25 09:31:35 +00:00
config Client-Logging, getrennte Rate-Limits und Ladezustand für Bilder 2026-09-25 09:31:35 +00:00
database Backend: Medien-Typen, Sprachnotizen, Event-Felder und Sync-Härtung 2026-09-25 07:00:35 +00:00
public first commit 2025-04-01 10:49:26 +02:00
resources Backend: Medien-Typen, Sprachnotizen, Event-Felder und Sync-Härtung 2026-09-25 07:00:35 +00:00
routes Client-Logging, getrennte Rate-Limits und Ladezustand für Bilder 2026-09-25 09:31:35 +00:00
storage first commit 2025-04-01 10:49:26 +02:00
tests Client-Logging, getrennte Rate-Limits und Ladezustand für Bilder 2026-09-25 09:31:35 +00:00
.editorconfig first commit 2025-04-01 10:49:26 +02:00
.env.example first commit 2025-04-01 10:49:26 +02:00
.gitattributes first commit 2025-04-01 10:49:26 +02:00
.gitignore first commit 2025-04-01 10:49:26 +02:00
.mcp.json 20-02-2026 2026-03-06 13:56:20 +01:00
AGENTS.md 20-02-2026 2026-03-06 13:56:20 +01:00
artisan first commit 2025-04-01 10:49:26 +02:00
boost.json 20-02-2026 2026-03-06 13:56:20 +01:00
CLAUDE.md 20-02-2026 2026-03-06 13:56:20 +01:00
composer.json 25-02-2025 2026-03-06 14:01:49 +01:00
composer.lock 25-02-2025 2026-03-06 14:01:49 +01:00
package-lock.json docker setup 2026-03-06 13:46:43 +01:00
package.json first commit 2025-04-01 10:49:26 +02:00
phpunit.xml 20-02-2026 2026-03-06 13:56:20 +01:00
README.md first commit 2025-04-01 10:49:26 +02:00
vite.config.js docker setup 2026-03-06 13:46:43 +01:00
vite.default.config.js remove tailwind and ssl cert 2025-09-22 13:12:10 +02:00

Thats me Backend

Dies ist das Backend für die "Thats me"-Anwendung, basierend auf dem Laravel Framework.

Technologie-Stack

Installation

  1. Repository klonen (falls noch nicht im Hauptprojekt geschehen):

    git clone <repository-url>
    cd <projekt-ordner>/backend # Oder der entsprechende Pfad zum Backend
    
  2. PHP Abhängigkeiten installieren:

    composer install
    
  3. Konfigurationsdatei erstellen: Kopiere die Beispiel-Umgebungsvariablendatei:

    cp .env.example .env
    

    _Hinweis: Bearbeite die .env-Datei und konfiguriere insbesondere die Datenbankverbindung (DB\__) und die APP_URL.*

  4. Anwendungsschlüssel generieren:

    php artisan key:generate
    
  5. Datenbankmigrationen ausführen: Stelle sicher, dass deine Datenbank konfiguriert ist (siehe Schritt 3).

    php artisan migrate
    

    Optional: Wenn du Seed-Daten hast:

    php artisan db:seed # Optional
    
  6. Frontend Assets installieren und bauen:

    npm install # oder yarn install
    npm run build # Baut die Assets für die Produktion
    

Entwicklung

Entwicklungsserver starten:

Um den lokalen Laravel-Entwicklungsserver zu starten (normalerweise auf http://127.0.0.1:8000):

php artisan serve
#oder laravel herd (https://herd.laravel.com) #oder alternative PHP / MYSQL Serverumgebung (MAMP etc.)

Frontend Assets mit Vite:

Um den Vite-Server für Hot Module Replacement (HMR) während der Frontend-Entwicklung (innerhalb von Laravel/Blade/Livewire) zu starten:

npm run dev # oder yarn dev

Die Konfiguration für Vite (wie z.B. die Eingabedateien für CSS/JS und die Verwendung des Laravel-Plugins) wird in der Datei vite.config.js im Stammverzeichnis des Backends festgelegt. Diese Datei ist entscheidend dafür, wie Vite die Assets für die Laravel-Anwendung verarbeitet und bündelt.

Hinweis: Der Vite-Server läuft normalerweise auf einem anderen Port (z.B. 5173) und arbeitet mit php artisan serve zusammen.

Testing

Um die PHPUnit-Tests auszuführen:

php artisan test

Livewire & Volt

Dieses Projekt nutzt Livewire und Volt für interaktive Frontend-Komponenten direkt im Backend-Code. Komponenten findest du typischerweise in:

  • Livewire: app/Livewire/ oder app/Http/Livewire/ (je nach Konfiguration)
  • Volt: Oft als Single-File-Komponenten direkt in den resources/views/livewire/ oder resources/views/components/ Verzeichnissen (als .blade.php Dateien mit <script> und <style> Sektionen).

Weitere Informationen findest du in der Livewire Dokumentation und der Volt Dokumentation.

Mitwirken

[Hier Richtlinien für Beiträge hinzufügen, falls gewünscht. Ähnlich wie im Haupt-README.]

Lizenz