diff --git a/dev/entwicklung.md b/dev/entwicklung.md index ab046f44..138c9102 100644 --- a/dev/entwicklung.md +++ b/dev/entwicklung.md @@ -1,960 +1,261 @@ -# B2IN - Projekt-Entwicklungsstand +# B2in – Projektdokumentation + +**Stand:** 09.10.2026 · **Version:** v2.0.6 · **Live:** b2in.eu (Website), portal.b2in.eu (Portal) ## Projektübersicht -Das B2IN-Projekt ist eine umfassende Multi-Domain-Laravel-Anwendung, die als zentrale Plattform für Partner-Management, Produkt-Verwaltung, Digital Signage und Immobilien-Investment dient. Die Anwendung basiert auf Laravel 12, Livewire 3 und Flux UI und bietet ein modernes, rollenbasiertes System für verschiedene Geschäftspartner. Seit Q1 2026 wurde die Plattform strategisch um den Bereich **Dubai Real Estate Investment** als primären Geschäftszweig erweitert – B2in positioniert sich nun als "International Real Estate + Design Ecosystem". ---- +B2in ist eine Laravel-Anwendung für mehrere Domains. Im Zentrum stehen zwei Teile: -## 🎯 Wichtige ToDos +- **Website b2in.eu** mit zwei Welten. Die Welt **B2in Interior** zeigt hochwertige Einrichtung von CABINET, Rotpunkt Küchen, Febrü und Otterpohl Möbelservice, dazu Showroom, Magazin und Kontakt. Die Welt **Immobilien** betrifft internationale Projekte in Dubai. +- **Portal portal.b2in.eu** mit Website-CMS, Store Displays mit Info-Tablet, Partnerverwaltung, Produkten, Regionen und Monitoring. -- **System Mails**: Kommen teilweise nicht an (google etc) Probleme mit united domains ... -In der Zukunft benötigen wir einen response bounce etc. -" host gmail-smtp-in.l.google.com[64.233.184.27] - said: 550-5.7.26 Your email has been blocked because the sender is - unauthenticated. " ---- +Im Oktober 2026 ging der Interior-Relaunch live (v2.0.0). Seitdem wird per Git-Tag ausgeliefert und der Betrieb überwacht. -## 🎯 Kern-Technologien - -- **Framework**: Laravel 12 mit PHP 8.4+ -- **Frontend**: Livewire 3 mit Volt (Single-File Components) -- **UI-Framework**: Flux UI (Pro-Version v2) mit Tailwind CSS v4 -- **Authentifizierung**: Laravel Fortify mit Sanctum -- **Berechtigungen**: Spatie Laravel-Permission -- **Mehrsprachigkeit**: Spatie Laravel-Translatable (für CMS-Inhalte) -- **Icons**: Heroicons (Blade-Integration) -- **Entwicklungsumgebung**: Dev Container (Docker) – Befehle direkt ohne Sail-Prefix -- **MCP-Integration**: Laravel Boost MCP-Server für Entwicklungsunterstützung +Die Domains b2a, Stileigentum und Style2own bleiben erreichbar, werden aber nicht weiterentwickelt. --- -## ✅ Entwickelte Module & Funktionen +## Domains und Welten -### 1. Multi-Domain-System +| Domain | Zweck | Oberfläche | +|---|---|---| +| `b2in.eu` | Website B2in Interior und Immobilien-Welt | Livewire, Tailwind CSS v4, eigenes Theme `b2in` | +| `portal.b2in.eu` | Portal: CMS, Displays, Partner, Admin | Livewire, Volt, Flux UI Pro | +| `cabinet.b2in.eu` | Display-Player und Short-Links im Showroom (`public/_cabinet`) | statisches HTML/JS, holt Daten über die Display-API | +| b2a, Stileigentum, Style2own | Landingpages (geparkt) | eigene Themes | -**Status**: ✅ Vollständig implementiert +Die Welt einer Seite ergibt sich aus `b2in_world()` in `app/helpers.php`, das Logo je Welt aus `ThemeHelper::getLogoPath()`. -Das System unterstützt mehrere Domains mit individuellen Themes und Konfigurationen: +| Welt | Farben | Schriften | +|---|---|---| +| Interior (Standard) | Tanne, Creme, Sand, Ocker (`#a8741f` als Akzent) | Inter, EB Garamond | +| Immobilien | Anthrazit, Dynamic Blue | Inter, IBM Plex Sans | -- **Admin-Portal** (`portal.b2in.test`) - Verwaltungsbereich für alle Partner-Typen -- **Haupt-Website** (`b2in.test`) - Unternehmenswebsite -- **Landing-Pages** - Individuelle Landing-Pages mit eigenem Branding -- **Domain-spezifische Assets** - Separate CSS/JS-Builds pro Domain -- **Theme-Switching** - Dynamisches Theme-System basierend auf Domain oder GET-Parameter -- **Entwicklungsmodus** - Domain-Simulation für lokale Entwicklung ohne Hosts-Änderung - -**Technische Details**: -- Domain-Erkennung über `ThemeServiceProvider` -- Separate Vite-Konfigurationen für Admin und Web -- Dynamische Favicon-Generierung -- Theme-basiertes Routing +Lokal laufen die Domains unter `*.test` (siehe `CLAUDE.md`). --- -### 2. Benutzer- & Rollen-Management +## Technik -**Status**: ✅ Vollständig implementiert - -Umfassendes Rollen- und Berechtigungssystem mit folgenden Rollen: - -#### Definierte Rollen: -- **Super Admin** - Vollzugriff auf alle Funktionen -- **Admin** - Verwaltung von Partnern und System -- **Retailer (Händler)** - Produktverwaltung, Kundenbetreuung, Liefergebiete -- **Manufacturer (Hersteller)** - Marken- und Produktverwaltung -- **Broker (Makler)** - Lead-Generierung, Provisionen, Kundenanbindung -- **Customer (Endkunde)** - Produktbestellung, Dashboard-Zugriff - -#### Berechtigungen: -- Hub-Management (Anzeigen, Erstellen, Bearbeiten, Löschen) -- Partner-Management (Anzeigen, Erstellen, Bearbeiten, Löschen, Provisionen) -- Produkt-Management (Anzeigen, Erstellen, Bearbeiten, Löschen, Miet-Optionen) -- Bestellungs-Management (Anzeigen, Verwalten) -- User-Management (Anzeigen, Verwalten, Rollen zuweisen) -- Dashboard-Zugriff -- Bestellungen aufgeben - -#### Spezielle Features: -- **Impersonation** - Admins können sich als andere Benutzer einloggen -- **Soft-Delete** - Benutzer werden anonymisiert statt gelöscht (bei Abhängigkeiten) -- **Rollenbasierte Navigation** - Dynamische Sidebar basierend auf Berechtigungen -- **Display-Namen** - Separate Anzeigenamen für Benutzer +| Bereich | Einsatz | +|---|---| +| Framework | Laravel 12, PHP 8.4 | +| Oberfläche | Livewire 4, Volt, Flux UI Pro 2, Alpine.js, Tailwind CSS v4 | +| Anmeldung | Laravel Fortify, Sanctum, Rollen über Spatie Laravel-Permission | +| Mehrsprachigkeit | Deutsch/Englisch: Lang-Dateien und Spatie Laravel-Translatable | +| CMS | eigenes Paket `packages/flux-cms` (Inhalte, Mediathek) und App-Module (Marken, Magazin, Referenzen) | +| Build | Vite, je Theme ein Build unter `public/build/`, Portal unter `public/build/portal` | +| Fehler und Betrieb | GlitchTip (Sentry-SDK), `/health`, Uptime Kuma, ntfy | +| Tests | Pest 3, SQLite im Arbeitsspeicher | +| Entwicklung | Dev Container: `php`, `composer`, `npm` direkt, ohne Sail | --- -### 3. Partner-Management-System +## Website B2in Interior -**Status**: ✅ Vollständig implementiert +### Seiten -Komplettes System zur Verwaltung von Geschäftspartnern: +| Pfad | Inhalt | +|---|---| +| `/` | Hero mit Bilder-Slideshow und Infokarte, Gründerleiste (Marcel Scheibe), Weiche Privat/Projekt, Kernmarken, „Aus der Region gefertigt“, „Gebaut auf Expertise und Vertrauen“, Vereine (Sponsoring), Live-Ansicht des Showroom-Displays, Immobilien-Teaser, Kontakt-CTA | +| `/marken` | Hero, Gründerleiste, die vier Kernmarken, Bildpause mit Zitat, Herkunft, Netzwerk, Wachstum, CTA | +| `/marken/{slug}` | Markenseite: Einleitung, Abschnitte mit aufklappbaren Vertiefungen, Leistungen, Galerie (Realisiertes Projekt / Aus der Werkstatt / Inspiration), Handwerk-Abschluss, weitere Marken | +| `/about` | Mission, Gründerleiste, Geschichte, Werte, Partner-CTA | +| `/magazin`, `/magazin/{slug}` | Magazin der Interior-Welt; alte Adressen `/magazin/1` … `/5` leiten per 301 weiter | +| `/faq` | allgemeine Fragen und Bereiche „Für Ihr Zuhause“ und „Für Projekte und Objekte“ | +| `/contact` | Kontaktformular | +| `/referenzen` | Referenzen-Modul; zurzeit ausgeblendet (Schalter im CMS) | +| `/impressum`, `/privacy`, `/terms`, `/cookie-policy` | Rechtstexte (Stand 06.10.2026: DDG, MStV, TDDDG) | +| `/embed/display/{display}` | schreibgeschützte Einbettung eines Displays (nur veröffentlichte Playlists) | -#### Partner-Typen: -- **Retailer** - Händler mit Liefer- und Montageradius -- **Manufacturer** - Hersteller mit Markenverwaltung -- **Broker** - Makler mit Provisionsmodell -- **Customer** - Endkunden +Stillgelegte Seiten leiten dauerhaft um: `/netzwerk`, `/interior`, `/partner` und `/service` auf `/marken`, `/ecosystem` auf `/partner`, `/portfolio` auf `/immobilien`. -#### Funktionen: -- **Partner-Einladungssystem**: - - E-Mail-Einladungen mit Token-basiertem Zugang - - Konfigurierbare Gültigkeit (1-4 Wochen) - - Status-Tracking (Offen, Verwendet, Abgelaufen) - - Rollenbasierte Einladungen - - Spezielle Status-Seiten für abgelaufene/verwendete Einladungen +### Bausteine -- **Partner-Setup-Wizard**: - - Mehrstufiger Onboarding-Prozess - - Rollenspezifische Schritte und Felder - - Logo-Upload (Partner & Marke) - - Adressverwaltung (Straße, PLZ, Stadt, Land) - - Retailer: Liefer- und Montageradius (1-500 km) - - Manufacturer: Markenerstellung mit Logo - - Setup-Status-Tracking (`setup_completed`, `setup_completed_at`) - - Middleware-Schutz für unvollständige Setups +- **Hero-Slideshow:** elf Bilder, im CMS pflegbar. Je Bild Marke und Motiv in der Infokarte. Überblendung alle 7 Sekunden (einstellbar 3–30), Pause bei Hover und Fokus, Steuerung per Pfeiltasten. Eine Fortschrittslinie im Bild zeigt die verbleibende Zeit. Auf dem Handy steht die Karte unter dem Bild. +- **Gemeinsamer Hero-Stil** auf Start, Marken, Über uns und Kontakt: Goldverlauf als Rahmen, Zeile über der Überschrift, Vertrauenspunkte. +- **Termin-Widget:** WhatsApp zuerst (0521-98620100), darunter das Formular. +- **Live-Display:** Die Startseite zeigt, was im Showroom läuft, vergrößerbar und im Vollbild. +- **Sprache:** Deutsch und Englisch, Umschaltung über die Sitzung (`SetLocale`). -- **Partner-Hierarchie **: - - Parent-Child-Beziehungen (Broker → Kunden) - - Hub-Zuordnung für regionale Partner 🔄 Grundarchitektur vorhanden - - Provisionsmodelle (Festbetrag oder Prozentsatz) 🔄 Grundarchitektur vorhanden +### Inhalte: CMS vor Lang-Datei -- **Registrierungs-Codes**: - - QR-Code-basierte Registrierung - - Rollenspezifische Landing-Pages (`/reg/{role}`) - - Code-Tracking (Verwendet von, Verwendungsdatum) - - Code-Namen für bessere Organisation - - Zuordnung zu übergeordnetem Partner +Jede Sektion liest zuerst das CMS (`cms_theme_section()` über `config/cms_section_map.php`). Fehlt der Eintrag, gilt die Lang-Datei `resources/lang/{de,en}/b2in.php`. Bilder kommen bevorzugt aus `public/img/assets` (WebP-Fassungen) und sonst aus der Mediathek (`theme_image_url()`, `media_url()`). --- -### 4. Hub-Management +## Immobilien-Welt -**Status**: 🔄 Grundarchitektur vorhanden - -Regionale Hub-Verwaltung: - -#### Funktionen: -- Hub-Erstellung und -Verwaltung -- Standortverwaltung (HubLocations) -- Partner-Zuordnung zu Hubs -- Hub-spezifische Dashboard-Ansichten -- Indexseite mit Hub-Übersicht -- Erstellen/Bearbeiten von Hubs - -#### Datenstruktur: -- Hub-Stammdaten -- Mehrere Standorte pro Hub -- Partner-Beziehungen +- Seiten unter `/immobilien`: Übersicht, Projekt (`/immobilien/{slug}`), Magazin, Über B2in, FAQ, Kontakt. Eigene Navigation, eigenes Logo, blaues Farbschema. +- Projekte als `CmsProject` mit Preis in AED und Umrechnung in EUR/USD (`PriceHelper`). Die Projekte sind zurzeit nicht freigegeben und im Portal nicht verlinkt. +- Magazin der Immobilien-Welt: drei Beiträge (Escrow, Al Jaddaf, Turnkey). --- -### 5. Produkt-Management-System +## Magazin -**Status**: 🔄 Grundarchitektur vorhanden +Beiträge als `CmsArticle` (Titel, Untertitel und Inhalt je Sprache, Welt `interior` oder `immobilien`, Autor, Lesezeit, Veröffentlichung). -Umfassendes Produktverwaltungssystem: +| Welt | Veröffentlicht | +|---|---| +| Interior | „Nach Maß statt von der Stange“, „Küche planen“ | +| Immobilien | Escrow, Al Jaddaf, Turnkey | +| offline | Supply-Chain, Local for Local (seit 08.10.2026) | -#### Features: -- **Produktliste** (`/products`): - - Suchfunktion (Name, Artikelnummer) - - Filter nach Status (Aktiv, Entwurf, Inaktiv) - - Filter nach Kategorie - - Aktive Filter-Anzeige - - Responsive Tabellen-Ansicht - -- **Produkt-Erstellung** (`/products/create`): - - Umfangreiches Formular für Produktdaten - - Mehrstufige Eingabe - - Bild-Upload - - Varianten-Verwaltung - -#### Datenmodelle: -- **Products** - Hauptprodukte -- **ProductVariants** - Produktvarianten mit Attributen -- **Attributes** - Produkt-Attribute (z.B. Farbe, Größe) -- **AttributeValues** - Attribut-Werte -- **Categories** - Produktkategorien (mehrfach zuweisbar) -- **Tags** - Produkt-Tags -- **Brands** - Marken (Partner-zuweisbar) -- **Collections** - Produkt-Kollektionen -- **TaxRates** - Steuersätze -- **ShippingClasses** - Versandklassen -- **ProductLogistics** - Logistik-Informationen - -#### Beziehungen: -- Produkte → Kategorien (N:N) -- Produkte → Tags (N:N) -- Produkte → Verwandte Produkte (N:N) -- Produkte → Marken -- Varianten → Attribute & Werte +Absätze im Inhalt trennt eine Leerzeile. Datum und Lesezeit stehen im deutschen Format. --- -### 6. Dashboard-System +## CMS im Portal -**Status**: 🔄 Grundarchitektur vorhanden +Unter **CMS ▸ Website-Inhalte**: -Rollenbasiertes Dashboard mit individuellen KPIs: +| Bereich | Funktion | +|---|---| +| Übersicht | Einstieg mit Kennzahlen | +| Inhalte | **Seitenbaum** (`config/cms_pages.php`): je Seite die Sektionen mit Beschreibung. Felder je Sprache (DE/EN), Listen als Wiederholfelder, Bilder über die Mediathek. **Vorschau** der Seite daneben im Rahmen. Eine fehlende Sektion lässt sich aus der Lang-Datei anlegen. | +| Marken | die vier Kernmarken: Texte, Logo, Titelbild, Merkmale, Leistungen, Abschnitte, Galerie mit Rubriken, Fertigungsort, CTA. **Alle Textfelder je Sprache**, Bilder und Rubriken gelten für beide Sprachen. | +| Magazin | Beiträge beider Welten | +| Referenzen | Modul vorhanden, Seite und Menüpunkt zurzeit ausgeblendet | +| Medien | Mediathek mit Sammlungen (Marken, Magazin, Website), Alternativtexten je Sprache und Bildgrößen. Alle auf der Website verwendeten Bilder sind übernommen. | -#### Admin-Dashboard: -- Aktive & geplante Hubs -- Partner-Wachstum (Gesamt, Dieser Monat) -- Plattform-Umsatz (Platzhalter) -- System-Status -- Ausstehende Einladungen -- Gesamt-Kunden +Hinweise zur Pflege: -#### Retailer-Dashboard: -- Offene Bestellungen -- Monatlicher Umsatz -- Produkt-Aufrufe -- Lagerbestands-Warnungen -- Meine Kunden - -#### Manufacturer-Dashboard: -- Marken-Reichweite -- Aktive Produkte -- Entwurfs-Produkte -- Gesamt-Aufrufe - -#### Broker-Dashboard: -- Gesamt-Provision -- Ausstehende Auszahlung -- Generierte Leads -- Empfehlungs-Link -- Broker-Kunden - -#### Customer-Dashboard: -- Marken-spezifisches Branding -- Top-Angebote -- Broker-Information -- Individuelles Design basierend auf zugewiesenem Broker +- **FAQ:** Jede Frage hat das Feld `category`. Leer heißt allgemeine Frage oben, sonst steht dort der Bereich. Überschrift und Symbol der Bereiche stehen in `categories`. +- **Vorschau im Portal:** Die Website erlaubt das Einbetten nur durch sich selbst und das Portal (`frame-ancestors`, `AllowPortalFraming`). +- **Übersetzungen prüfen:** `php artisan cms:untranslated` listet alles, was auf der englischen Seite fehlt oder noch deutsch ist. --- -### 7. Digital Signage / Display-CMS (Legacy) +## Store Displays und Info-Tablet -**Status**: ✅ Vollständig implementiert (Legacy-System → siehe auch Abschnitt 14 für Neuarchitektur) +Unter **Cabinet ▸ Store Displays**: -Professionelles CMS-System für Digital Signage im Cabinet Showroom Bielefeld: +| Bereich | Funktion | +|---|---| +| Übersicht | Kennzahlen, Status des Info-Tablets | +| Mediathek | Bilder und Videos der Displays (Uploads oder externe URLs) | +| Module | Inhalte nach Typ: `video-display` (Video-Playlist), `b2in` (Marken-Slides mit Interior-Logo, Bilddauer mit Nachkommastelle), `offers` (Angebote). Vorschau je Modul und je Folie. | +| Displays | physische Geräte mit **Playlists** (Entwurf und veröffentlicht), Test-Displays, Vorschau-Links mit Token | +| Info-Tablet | Öffnungszeiten (7 Tage), Tagesausnahmen mit Rücksetzung um Mitternacht, Status (offen, Hinweis, geschlossen, Warnung), Kontakt; Schnellschalter unter `/info/status` | -#### Video-Verwaltung: -- Verwaltung von Video-Playlists -- Reihenfolge-Verwaltung -- Video-Position einstellen (0-100% für optimalen Ausschnitt) -- Videos aktivieren/deaktivieren -- Titel für bessere Organisation +**API:** Die Displays fragen die API zyklisch ab, ein Neustart ist nach Änderungen nicht nötig. Medien-URLs sind relativ gespeichert und funktionieren dadurch auf jedem Host. -#### Footer-Content mit Tracking: -- Überschrift und Unterzeile -- Optionale Ziel-URL -- **Automatische Short-Link-Generierung** (6-stellige Codes) -- **QR-Code-Generierung** für Short-Links -- **Echtzeit-Klick-Tracking** -- Klick-Statistiken im CMS -- Reihenfolge-Verwaltung (30-Sekunden-Rotation) -- Short-Code neu generieren -- Klick-Zähler zurücksetzen -- Flexibles Layout (mit/ohne URL) +| Endpunkt | Zweck | +|---|---| +| `/api/display/{display}/config`, `/check` | Konfiguration und Änderungsprüfung je Gerät | +| `/api/display/overview` | Übersicht aller Geräte | +| `/api/display/preview/{token}` | Entwurf über Vorschau-Token | +| `/api/display/module/{module}/preview` | Vorschau eines Moduls | +| `/api/cabinet-tablet/status`, `/check` | Info-Tablet | -#### Short-Link-System: -- Automatische Code-Generierung (z.B. `c59kjb`) -- Short-URLs: `https://cabinet.b2in.eu/go.php?z=CODE` -- Tracking in Datenbank + Log-Datei -- Weiterleitung zur Original-URL -- Statistik-Dashboard - -#### Technische Details: -- API-basierte Konfiguration (`/api/display/config`) -- Standalone Display-Seite (`/_cabinet/`) -- Auto-Reload alle 5 Minuten -- Subdomain-Support (Live: `cabinet.b2in.eu`) -- Test- und Live-Umgebung -- Einheitlicher Pfad für beide Umgebungen +**Short-Links:** `cabinet.b2in.eu/go.php?z=CODE` mit Klickzählung in `public/_cabinet/clicks.log`. Die Datei schreibt der Player im Betrieb, deshalb ist sie nicht versioniert. --- -### 8. Authentifizierungs-System +## Partner, Produkte, Regionen -**Status**: ✅ Vollständig implementiert +Diese Bereiche haben eine Grundarchitektur. Seit dem Frühjahr kamen keine neuen Funktionen hinzu. -Modernes Auth-System basierend auf Laravel Fortify & Sanctum: - -#### Features: -- Login/Logout -- Registrierung -- E-Mail-Verifizierung -- Passwort-Reset -- Passwort-Bestätigung (für sensible Aktionen) -- Two-Factor-Authentication (2FA) -- API-Token-Authentifizierung (Sanctum) -- "Remember Me" Funktionalität - -#### Views: -- Login-Seite (Standard & Vereinfacht) -- Registrierungs-Seite -- Passwort-vergessen -- Passwort-zurücksetzen -- E-Mail-Verifizierung - -#### Einstellungen: -- Profil-Verwaltung -- Passwort-Änderung -- Erscheinungsbild (Theme-Einstellungen) -- Benutzer löschen/anonymisieren +| Bereich | Funktionen | +|---|---| +| Rollen | Super-Admin, Admin, Retailer, Manufacturer, Broker, Customer | +| Partner | Einladung per Mail mit Token, Setup-Wizard, Registrierungscodes mit QR (`/reg/{role}`), Impersonation, Anonymisieren statt Löschen | +| Produkte | Produkte, Varianten, Kategorien, Marken, Kuration (`curate_products`) | +| Regionen | Hubs mit PLZ-Gebieten (Import einzeln, Bereich oder CSV) | --- -### 9. Website-Frontend +## Betrieb -**Status**: ✅ Grundstruktur und Inhalte implementiert +Die vollständige Anleitung steht in **`dev/betrieb/README.md`**. -Moderne, responsive Website mit zahlreichen Sections: +### Auslieferung per Git-Tag -#### Implementierte Seiten: -- **Home** - Hauptseite mit Hero-Slider (Q1 2026: Repositionierung "Connecting Design and Property") -- **About** - Über uns (Q1 2026: Neue Timeline "Die Erweiterung 2025/2026") -- **Ecosystem** - Ökosystem-Darstellung (Q1 2026: Drei-Säulen-Modell) -- **Partner** - Partner-Informationen (Q1 2026: "Für Immobilienentwickler"-Bereich) -- **Portfolio** - Produkt-Portfolio -- **Magazin** - Blog/Magazin mit Detail-Ansichten (Q1 2026: 5 vollständige Artikel de/en) -- **Contact** - Kontaktformular (Q1 2026: Neue Betreff-Optionen Immobilien/Supply-Chain) -- **Service** - Service-Seite -- **FAQ** - Häufig gestellte Fragen (Q1 2026: Immobilien & Supply-Chain Fokus) -- **Theme-Demo** - Theme-Vorschau -- **Immobilien** *(NEU)* - Dubai Immobilien-Übersicht -- **Immobilien Detail** *(NEU)* - Projekt-Einzelansicht mit Investment-Case -- **Interior** *(NEU)* - Interior Design / Einrichtungs-Showcase -- **Netzwerk** *(NEU)* - Partner-Netzwerk mit Cabinet-Integration -- **Impressum** *(NEU)* - Rechtliches Impressum -- **Datenschutz** *(NEU)* - Datenschutzerklärung -- **AGB** *(NEU)* - Allgemeine Geschäftsbedingungen -- **Cookie-Policy** *(NEU)* - Cookie-Richtlinie +- Remotes: `origin` = forge.adametz.media (Quelle für den Deploy, auf dem Server über den Alias `forge-b2in`), `NAS` = Sicherung. +- Ausgeliefert wird nur ein Tag `vX.Y.Z`, auf dem Server mit `bash dev/betrieb/deploy.sh vX.Y.Z [--migrations] [--seed=…]`. +- Das Skript bricht ab, bevor es etwas verändert, wenn im Verzeichnis von Hand geändert wurde, der Tag fehlt, ein Build-Manifest fehlt oder Migrationen ohne `--migrations` kommen. Rollback: dasselbe Skript mit dem vorigen Tag. +- `public/build` ist versioniert, weil der Server kein Node hat. Vor dem Tag lokal `npm run build:web && npm run build:portal` ausführen. +- Inhaltsänderungen laufen über idempotente Seeder. `InteriorReleaseSeeder` fasst alle Schritte des Relaunchs zusammen. Spätere Seeder nennt die jeweilige Tag-Notiz. -#### Wiederverwendbare Sections: -- Hero (Standard, mit Bild, Slider, Tiles) -- About-Hero -- Benefits-Section -- Brand-Worlds -- Broker-Section -- Card-Section -- Commitment-Section -- Content-Section -- CTA-Section -- Dark-Stats-Section -- Digital-Core -- Ecosystem (Core, Hero, Stats) -- End-Customer-Section -- FAQ -- Final-Commitment -- Leadership-Team -- Magazin (List, Detail) -- Our-Story -- Our-Values -- Partner (Benefits, CTA, Hero, Process) -- Portfolio -- Spotlights-Section -- Supplier-Section -- Vision-Section -- **FounderBar** *(NEU)* - Gründer/CEO-Vorstellung mit Statement -- **ImageBreak** *(NEU)* - Wiederverwendbare Bildtrennung (konfigurierbar per Section-Name) -- **ImmobilienContactForm** *(NEU)* - Spezialisiertes Kontaktformular für Immobilien +### Überwachung -#### UI-Komponenten: -- Header mit Navigation -- Footer -- Top-Bar -- Kontaktformular -- Theme-Switcher (für Demos) -- **AnnouncementBar** *(NEU)* - Ankündigungsleiste -- **web-picture** *(NEU)* - Blade-Komponente für responsive Bilder +| Was | Wo | +|---|---| +| Fehler in PHP und im Browser | GlitchTip `errors.adametz.media`, Projekte `server-b2in` und `browser-b2in`. Ohne Personenbezug: nur User-ID, keine Formularinhalte, E-Mails ausgeblendet. | +| Tiefer Health-Check | `/health` mit Bearer-Token (`MONITORING_HEALTH_TOKEN`): Datenbank, Cache, Queue, Scheduler-Herzschlag, Plattenplatz | +| Externer Monitor | Uptime Kuma auf `/health` und `/up`, Alarme per ntfy (Topic `b2in-ops`) und Mail | +| Geplante Aufgaben | Cron `schedule:run` jede Minute: Herzschlag, `cabinet:reset-overrides` (0 Uhr), Aufräumen alter Jobs; bei Fehlschlag ein Alarm | +| **Admin ▸ Monitoring** | Prüfungen, Version und Deploy-Zeit, geplante Aufgaben, letzte Fehler und Alarme, fehlgeschlagene Jobs, Test-Alarm | + +Eine Queue braucht B2in nicht, Mails gehen sofort raus. --- -### 10. E-Mail-System +## Datenbank (Auszug) -**Status**: 🔄 Grundarchitektur vorhanden - -#### E-Mail-Templates: -- Partner-Einladung (`PartnerInvitationMail`) -- Weitere System-E-Mails über Laravel-Fortify +| Bereich | Tabellen | +|---|---| +| Benutzer und Rollen | `users`, `roles`, `permissions`, `model_has_roles`, `personal_access_tokens` | +| Partner | `partners`, `partner_invitations`, `registration_codes`, `hubs`, `hub_locations` | +| Produkte | `products`, `product_variants`, `brands`, `categories`, `attributes`, `tags`, `collections` … | +| Website-CMS | `flux_cms_contents` (Sektionen je Gruppe/Schlüssel, Werte je Sprache), `flux_cms_media`, `cms_brands` (mit `field_translations`), `cms_articles` (mit `world`), `cms_projects`, `cms_references` | +| Displays | `displays`, `display_versions` (Module), `display_version_items`, `display_playlists`, `display_playlist_items`, `display_media`, `cabinet_tablet_settings` | +| Altbestand Displays | `display_videos`, `display_footer_contents` | +| System | `cache`, `jobs`, `failed_jobs`, `sessions` | --- -### 11. Media-Verwaltung +## Tests -**Status**: 🔄 Grundarchitektur vorhanden +1197 Tests (Pest), alle grün (Stand 09.10.2026). Sie laufen auf SQLite im Arbeitsspeicher, die MySQL-Datenbank bleibt unberührt. -- Media-Tabelle für Datei-Uploads -- Unterstützung für verschiedene Medientypen -- Partner-Logos -- Marken-Logos -- Produkt-Bilder (vorbereitet) - ---- - -### 12. Flux CMS Package (In Entwicklung) - -**Status**: 🔄 Grundarchitektur vorhanden - -Eigenes CMS-Package in `packages/flux-cms/`: - -#### Geplante Features: -- Component-First-Architecture -- Code-as-Schema (Felder in PHP definiert) -- Multi-Domain-Support -- Vollständige Mehrsprachigkeit -- Content-Versionierung -- Media-Management -- Performance-Optimierung - -#### Package-Struktur: -- `core/` - Kern-Funktionalität, Models, Services -- `components/` - Livewire Backend & Frontend Components -- `starter-components/` - Vorgefertigte Starter-Components - -#### Neue CMS-Models (seit Q1 2026): -- `CmsContent` - Gruppen/Key-basierter Content mit übersetzbaren Werten -- `CmsDownload` - Mediendatei-Verwaltung -- `CmsFaq` - FAQ mit übersetzbaren Frage-Antwort-Paaren -- `CmsIndustry` - Branchen-Taxonomie -- `CmsLinkedinPost` - Social-Media-Integration -- `CmsMedia` - Media-Library mit Konvertierungs-Tracking -- `CmsNewsItem` - News/Artikel -- `CmsSearchIndex` - Volltextsuche-Index - -#### Neue Services: -- `CmsContentService` - Content-Abruf und -Verwaltung -- `HeroiconOutlineList` - Icon-Referenz-Service -- `MediaConversionService` - Bild/Video-Konvertierungs-Pipeline - ---- - -### 13. Immobilien-Plattform (Dubai Real Estate) - -**Status**: ✅ Soft-Launch implementiert (seit März 2026) - -Vollständige Dubai-Immobilien-Investitionsplattform als neuer Hauptgeschäftszweig: - -#### Seiten: -- **Immobilien-Übersicht** (`/immobilien`) - Listing mit Hero, Fakten, Kaufprozess, Trust-Blocks, Mindset-Check -- **Projekt-Detail** (`/immobilien/{slug}`) - Einzelansicht mit Galerie, Investment-Case, Trust/Möbel-Vorteile - -#### Datenmodelle: -- **CmsProject** - Immobilienprojekte mit mehrsprachigen Feldern (Spatie Translatable) - - Slug, Titel, Standort, Beschreibung, Features (JSON) - - Preis in AED mit automatischer EUR/USD-Umrechnung - - Investor-Trust-Block (Escrow, DLD-Kontrolle, Transparenz) - - Möbel-Vorteil-Block (exklusives B2in-Einrichtungsnetzwerk) -- **CmsArticle** - Magazin-Artikel mit Mehrsprachigkeit (de/en) - - Kategorie, Autor, Lesezeit, Veröffentlichungsstatus - - Content als JSON-Struktur (Sections mit Intro, Text, Listen, Zitaten) - -#### Magazin-Artikel (5 vollständige Artikel): -1. Escrow-System Dubai – Wie Käufer geschützt werden -2. Spotlight: Al Jaddaf – Dubais aufstrebender Kreativdistrikt -3. Turnkey-Investments – Schlüsselfertig vom Plan bis zur Einrichtung -4. Supply-Chain-Management – Deutsche Qualität für internationale Projekte -5. Local-for-Local – Wie B2in lokale Händler mit internationalen Investoren verbindet - -#### PriceHelper: -- Statische Preisformatierung AED → EUR/USD -- Feste Wechselkurse: AED/USD 3.6725, USD/EUR 1.08 -- Format: "ab 1.125.000 AED (ca. 284.000 EUR / 306.000 USD)" - -#### Seeders: -- `CmsProjectSeeder` - Immobilienprojekte aus Lang-Dateien -- `CmsArticleSeeder` - Magazin-Artikel aus Lang-Dateien (de/en) - ---- - -### 14. Display-Versions-System (Neuarchitektur) - -**Status**: ✅ Vollständig implementiert (Februar 2026) - -Komplett überarbeitetes Display-Management mit Versions-basiertem Content: - -#### Drei-Tabellen-Architektur: -- **Display** - Physische Display-Geräte (Name, Standort, Aktiv-Status) -- **DisplayVersion** - Content-Versionen mit Typ-basiertem System -- **DisplayVersionItem** - Einzelne Content-Items (Video, Footer, Media, Slides) mit JSON-Content - -#### DisplayVersionType Enum: -- `video-display` - Video-Playlists -- `b2in` - B2in-Marken-Content -- `offers` - Angebots-Slides - -#### API-Endpunkte: -- `GET /api/display/config` - Vollständige Playlist-Konfiguration als JSON -- `GET /api/display/check` - Lightweight Update-Check (Timestamp + Status) - -#### Legacy-Migration: -- `MigrateLegacyDisplays`-Kommando konvertiert alte DisplayVideo/DisplayFooterContent-Daten in neues System - ---- - -### 15. Cabinet Tablet-Management - -**Status**: ✅ Vollständig implementiert (Februar/März 2026) - -Verwaltungssystem für Tablet-Displays im Cabinet Showroom Bielefeld: - -#### CabinetTabletSetting (Singleton-Pattern): -- Store-Status-Modi: open, notice, closed, warning -- Tägliche Override-Zeiten (override_open_today, override_close_today) mit Mitternacht-Auto-Reset -- 7-Tage-Öffnungszeiten mit deutschen Labels (Montag–Sonntag) -- Nächster Termin (Datum + Uhrzeit) -- Kontaktdaten (Telefon, E-Mail) -- Status-Berechnung basierend auf Berliner Zeitzone - -#### API-Endpunkte: -- `GET /api/cabinet-tablet/status` - Vollständige Settings (Öffnungszeiten, Kontakt, Termine, Hinweise) -- `GET /api/cabinet-tablet/check` - Schnell-Poll für Status-Änderungen - -#### Admin-Oberfläche: -- `CabinetInfoTablet` - Livewire-Komponente für Öffnungszeiten und Kontaktdaten -- `QuickStatus` - Livewire-Komponente für schnelle Status-Änderungen (Auto/Geschlossen/Hinweis/Warnung) -- Key-basierte Autorisierung über Query-Parameter - ---- - -### 16. Homepage & Brand-Repositionierung - -**Status**: ✅ Umgesetzt (Februar/März 2026) - -Komplette Neuausrichtung der B2in-Marke: - -#### Strategische Änderungen: -- **Neuer Hero**: "B2in – Connecting Design and Property" mit dualem Positioning (Immobilien + Einrichtung) -- **Founder Bar**: Marcel Scheibe als CEO/Founder mit persönlichem Statement auf allen relevanten Seiten -- **Ecosystem-Drei-Säulen-Modell**: - 1. Internationale Immobilien - 2. Exklusive Einrichtung - 3. Supply-Chain-Management -- **Partner-Section**: Neuer "Für Immobilienentwickler"-Bereich (Supply-Chain-Fokus) -- **FAQ-Update**: 5 Fragen mit Immobilien- und Supply-Chain-Fokus -- **Brand Worlds Neuordnung**: Stileigentum → Style2Own → B2A - -#### Aktualisierte Seiten: -- Home, About (neue Timeline: "Die Erweiterung 2025/2026"), Ecosystem, Partner -- Contact (neue Betreff-Optionen für Immobilien/Supply-Chain) -- Magazin (mit Immobilien-Artikeln) - ---- - -### 17. Neue Webseiten & Rechtliches - -**Status**: ✅ Implementiert (März 2026) - -#### Neue Seiten: -- `/immobilien` - Dubai Immobilien-Plattform -- `/immobilien/{slug}` - Projekt-Detailseite -- `/interior` - Interior Design / Einrichtungs-Showcase -- `/netzwerk` - Partner-Netzwerk (mit Cabinet-Integration) -- `/impressum` - Impressum -- `/privacy` - Datenschutzerklärung -- `/terms` - AGB -- `/cookie-policy` - Cookie-Richtlinie - -#### Neue Livewire-Sections: -- `FounderBar` - Gründer/CEO-Vorstellung (Marcel Scheibe) -- `ImageBreak` - Wiederverwendbare Bildtrennungs-Komponente -- `ImmobilienContactForm` - Spezialisiertes Kontaktformular für Immobilien-Anfragen - ---- - -### 18. Mehrsprachigkeit & Lokalisierung - -**Status**: ✅ Implementiert (März 2026) - -#### SetLocale-Middleware: -- Neue Middleware in `bootstrap/app.php` registriert -- Erkennung über `session('locale')`, setzt App-Locale (de/en) -- Integriert in Web-Middleware-Gruppe - -#### Sprachdateien: -- `resources/lang/de/b2in.php` - Deutsche Übersetzungen (Immobilien, Magazin, UI) -- `resources/lang/en/b2in.php` - Englische Übersetzungen -- `resources/lang/de/b2in_legal.php` / `en/b2in_legal.php` - Rechtliche Texte -- `resources/lang/de/ui.php` / `en/ui.php` - UI-Elemente - ---- - -### 19. Artisan-Kommandos - -**Status**: ✅ Implementiert - -#### Neue Kommandos: -- **ConvertImagesToWebP** - Batch-Konvertierung JPG/PNG → WebP - - Optionen: `--path`, `--quality` (Standard 85%), `--force`, `--dry-run` - - Zeigt Kompressions-Statistiken (Dateigrößen-Reduktion %) -- **MigrateLegacyDisplays** - Einmalige Migration von altem DisplayVideo/DisplayFooterContent ins neue System -- **ResetCabinetTabletOverrides** - Geplante Aufgabe zum Zurücksetzen täglicher Zeitüberschreibungen um Mitternacht - ---- - -### 20. Produkt-Kuration - -**Status**: 🔄 Erweitert (Februar 2026) - -- Neue Berechtigung `curate_products` hinzugefügt (Migration `2026_02_27_154145`) -- Ermöglicht spezifische Produktkurations-Rechte unabhängig von allgemeinem Produkt-Management - ---- - -## 🗄️ Datenbank-Struktur - -### Implementierte Tabellen: - -#### Benutzer & Authentifizierung: -- `users` - Benutzer-Accounts -- `roles` - Rollen (Super Admin, Admin, Retailer, etc.) -- `permissions` - Berechtigungen -- `role_has_permissions` - Rollen-Berechtigungen-Zuordnung -- `model_has_roles` - User-Rollen-Zuordnung -- `personal_access_tokens` - API-Tokens (Sanctum) - -#### Partner & Geschäftsbeziehungen: -- `partners` - Partner-Stammdaten -- `partner_invitations` - Einladungen mit Token & Status -- `registration_codes` - QR-Code-basierte Registrierung -- `hubs` - Regionale Hubs -- `hub_locations` - Hub-Standorte - -#### Produkte & Katalog: -- `products` - Produkte -- `product_variants` - Produkt-Varianten -- `product_variant_attributes` - Varianten-Attribute -- `product_logistics` - Logistik-Informationen -- `brands` - Marken -- `categories` - Kategorien -- `category_product` - Produkt-Kategorie-Zuordnung -- `collections` - Kollektionen -- `attributes` - Attribute (Farbe, Größe, etc.) -- `attribute_values` - Attribut-Werte -- `tags` - Tags -- `product_tag` - Produkt-Tag-Zuordnung -- `related_products` - Verwandte Produkte -- `tax_rates` - Steuersätze -- `shipping_classes` - Versandklassen - -#### Display/CMS (Legacy): -- `display_videos` - Video-Playlist für Digital Signage (Legacy) -- `display_footer_contents` - Footer-Inhalte mit Short-Links & Tracking (Legacy) - -#### Display-Versions-System (Neu, Feb 2026): -- `display_versions` - Content-Versionen (Name, Typ, Settings JSON, Aktiv-Status) -- `display_version_items` - Content-Items (FK, Item-Typ, Content JSON, Sortierung) -- `displays` - Physische Display-Geräte (Name, Standort, Aktiv-Status) -- `display_display_version` - Pivot-Tabelle (Many-to-Many mit Sortierung) - -#### Cabinet Tablet (Neu, Feb/März 2026): -- `cabinet_tablet_settings` - Showroom-Status, Öffnungszeiten (7 Tage), Kontaktdaten, Overrides - -#### CMS-Inhalte (Neu, März 2026): -- `cms_projects` - Immobilienprojekte (JSON-Felder für Mehrsprachigkeit, Preis in AED) -- `cms_articles` - Magazin-Artikel (JSON für Titel/Untertitel/Content, Kategorie, Autor) - -#### Flux CMS Package (Neu, 2026): -- `flux_cms_contents` - Gruppen/Key-basierter Content -- `flux_cms_downloads` - Downloads -- `flux_cms_linkedin_posts` - LinkedIn-Posts -- `flux_cms_faqs` - FAQ-Einträge -- `flux_cms_news_items` - News -- `flux_cms_industries` - Branchen -- `flux_cms_media` - Media-Library -- `flux_cms_search_index` - Volltextsuche - -#### System: -- `media` - Media-Verwaltung -- `cache` - Cache-Tabellen -- `jobs` - Queue-Jobs -- `failed_jobs` - Fehlgeschlagene Jobs - ---- - -## 🎨 UI/UX Features - -### Design-System: -- **Flux UI Pro** - Professionelle Komponenten-Bibliothek -- **Tailwind CSS** - Utility-First CSS Framework -- **Heroicons** - Konsistente Icon-Bibliothek -- **Dark Mode** - Vollständige Dark-Mode-Unterstützung -- **Responsive Design** - Mobile-First-Ansatz - -### Theme-System: -- Domain-basiertes Theme-Switching -- Individuelle Farbschemata pro Domain -- Dynamische Asset-Verwaltung -- Theme-Demo-Seite für Vorschau - -### Komponenten: -- Flux Cards, Buttons, Inputs, Selects -- Data Tables mit Pagination -- Modals & Dialogs -- Toast-Notifications -- Form-Validierung -- Loading States - ---- - -## 📝 Dokumentation - -Umfangreiche Entwicklungs-Dokumentation: - -- `README.md` - Projekt-Übersicht & Installation -- `CLAUDE.md` - AI-Kontext-Dokumentation -- `dev/COMPONENT-STRUCTURE.md` - Komponenten-Architektur -- `dev/DOMAINS-CONFIG.md` - Domain-Konfiguration -- `dev/FORTIFY-SANCTUM-SETUP.md` - Auth-Setup -- `dev/HERO-ICONS-USAGE.md` - Icon-Verwendung -- `dev/LOCAL-DEVELOPMENT.md` - Lokale Entwicklung -- `dev/PARTNER-SETUP-WIZARD.md` - Partner-Onboarding -- `dev/DISPLAY_CMS_README.md` - Display-CMS-Dokumentation -- `dev/DISPLAY_SETUP_LIVE.md` - Display Live-Setup -- `dev/ENV_VARIABLES_DISPLAY.md` - Display-Umgebungsvariablen -- `dev/THEME-SWITCHING.md` - Theme-System -- `dev/THEME-DEMO-COMPONENTS.md` - Theme-Demo -- `dev/27-02-2026/` - Entwicklungsdokumentation Relaunch Februar 2026 -- `dev/12-03-2026/` - Entwicklungsdokumentation Immobilien-Launch März 2026 -- `packages/flux-cms/ARCHITECTURE.md` - CMS-Package Architektur -- `packages/flux-cms/MIGRATION.md` - CMS-Migrations-Leitfaden -- `packages/flux-cms/SETUP.md` - CMS-Setup-Anleitung - ---- - -## 🔧 Entwicklungstools - -### Integrierte Tools: -- **Laravel Sail** - Docker-Entwicklungsumgebung -- **Laravel Pail** - Real-time Log-Viewer -- **Laravel Debugbar** - Debug-Informationen -- **Laravel Pint** - Code-Formatter -- **Pest PHP** - Testing Framework -- **Laravel Dusk** - Browser-Testing -- **NPM Concurrently** - Parallel-Prozess-Management - -### Development-Scripts: ```bash -composer dev # Startet Server, Queue, Logs & Vite parallel +php artisan test --compact # alle +php artisan test --compact tests/Feature/FooTest.php ``` ---- +Wächtertests sichern bekannte Stolpersteine ab: -## 🚀 Deployment-Bereitschaft - -### Produktions-Features: -- ✅ Umgebungsspezifische Konfigurationen -- ✅ Asset-Kompilierung (Vite) -- ✅ Cache-System -- ✅ Queue-System -- ✅ Log-Management -- ✅ Error-Handling -- ✅ HTTPS-Ready - -### Optimierungen: -- Autoloader-Optimierung -- Route-Caching -- Config-Caching -- View-Caching +- Klassenpfad und Namespace in gleicher Schreibweise, sonst Ausfall auf Linux +- Lang-Sektionen und Section-Map decken sich +- die Testsuite meldet nie an das echte GlitchTip --- -## 📊 Test-Abdeckung +## Wichtige Dateien und Dokumente -### Testing-Setup: -- Pest PHP Framework installiert -- TestCase-Struktur vorhanden -- Browser-Testing mit Laravel Dusk -- Feature & Unit Tests vorbereitet -- SQLite in-memory für Tests (MySQL wird nicht berührt) -- Automatischer Config-Cache-Reset vor jedem Test-Run +| Datei | Inhalt | +|---|---| +| `CLAUDE.md` | Projektkontext für Entwicklung mit KI | +| `dev/betrieb/README.md` | Deploy, Livegang, Monitoring (Runbook) | +| `dev/2026-08-28/entwicklungsplan.md` | Verlauf des Interior-Relaunchs mit allen Nachträgen | +| `dev/git-deploy-monitoring/` | Baukasten Git-Deploy und Monitoring (projektübergreifend) | +| `config/cms_pages.php` | Seitenbaum und Beschreibungen im CMS | +| `config/cms_section_map.php` | Zuordnung Website-Sektion ↔ CMS-Eintrag | +| `resources/lang/{de,en}/b2in.php` | Standardtexte der Website | +| `resources/lang/{de,en}/b2in_legal.php` | Rechtstexte | +| `database/seeders/data/brand-translations-en.json` | englische Markentexte | +| `dev/DISPLAY_CMS_README.md`, `dev/DISPLAY_SETUP_LIVE.md` | Display-System | +| `DOMAINS-CONFIG.md` | Domain-Konfiguration | -### Neue Tests (seit Q1 2026): - -#### Display & Tablet Tests: -- `DisplayVersionTest` - Model-Beziehungen, activeItems() -- `DisplayVersionApiTest` - API-Config/Check-Endpunkte -- `DisplayListTest` - Display CRUD-Operationen -- `CabinetInfoTabletTest` - Info-Tablet-Display-Integration -- `CabinetTabletApiTest` - API-Endpunkte (Status/Check) -- `CabinetQuickStatusTest` - Livewire-Komponenten-Interaktion -- `ResetCabinetTabletOverridesTest` - Mitternacht-Reset-Logik - -#### Immobilien/CMS Tests: -- `ImmobilienShowTest` - Projekt-Detailseite-Rendering -- `CmsLegalSeederTest` - Rechtliche Inhalte (Privacy/Terms/Impressum) -- `MagazinPageTest` - Magazin-Seiten -- `ContactFormTest` - Kontaktformular - -#### Weitere Tests: -- `AboutPageTest` - About-Seite -- `AnnouncementBarTest` - Announcement-Bar -- `InteriorPageTest` - Interior-Seite -- `SoftLaunchDevPagesTest` - Dev-Seiten im Soft-Launch -- `PartnerSelfServiceProfileTest` - Partner Self-Service -- `CmsFluxEditorHtmlTransformerTest` (Unit) - HTML-Transformation -- `CabinetTabletSettingTest` (Unit) - Status-Berechnung, Öffnungszeiten - -#### Factories: -- `CabinetTabletSettingFactory` -- `CmsArticleFactory` (mehrsprachig) -- `CmsProjectFactory` (mehrsprachig) -- `DisplayFactory` -- `DisplayVersionFactory` (mit Typ) -- `DisplayVersionItemFactory` +Archive alter Entwürfe und stillgelegter Seiten liegen unter `dev/2026-08-28/archiv-*`, jeweils mit README. --- -## 🔐 Sicherheit +## Offene Punkte -### Implementierte Sicherheitsfeatures: -- ✅ CSRF-Protection (Laravel Standard) -- ✅ SQL-Injection-Prevention (Eloquent ORM) -- ✅ XSS-Protection (Blade Escaping) -- ✅ Password-Hashing (Bcrypt) -- ✅ E-Mail-Verifizierung -- ✅ Two-Factor-Authentication -- ✅ Rate-Limiting (vorbereitet) -- ✅ Soft-Delete für DSGVO-Compliance -- ✅ Benutzer-Anonymisierung +- **Datenschutzerklärung:** Der Absatz zur Fehlerprotokollierung (GlitchTip) fehlt noch. Ein Textvorschlag steht in `dev/betrieb/README.md`, Abschnitt 6. +- **OG-Bild** `img/assets/b2in-og-default.jpg` fehlt. Geteilte Links zeigen deshalb kein Vorschaubild. +- **Freigaben:** + - Herstellerfreigabe der Texte von Rotpunkt und Febrü, mit Blick auf die EmpCo-Regeln + - CABINET-Seitentext von Marcel + - Waldflächen-Aussage bei Rotpunkt +- **Englische Markentexte** einmal muttersprachlich gegenlesen lassen. +- **Logo TC Bad Salzuflen** liegt nur in geringer Auflösung vor (72 × 80 px). +- **Mailzustellung:** Im Frühjahr wurden Systemmails bei Gmail abgewiesen („sender is unauthenticated“). SPF, DKIM und DMARC der Absenderdomain prüfen. +- **Display-Feed:** Festlegen, welches Display auf der Website läuft (`referenzen.display_feed.display_id`). Ohne Eintrag läuft das erste aktive Display mit veröffentlichter Playlist. --- -## 📦 Abhängigkeiten & Packages - -### Haupt-Abhängigkeiten: -- `laravel/framework` ^12.0 -- `laravel/fortify` ^1.27 -- `laravel/sanctum` ^4.1 -- `livewire/flux` ^2.1.1 -- `livewire/flux-pro` ^2.6 -- `livewire/volt` ^1.7.0 -- `spatie/laravel-permission` ^6.17 -- `spatie/laravel-translatable` (NEU - für CMS-Inhalte) -- `blade-ui-kit/blade-heroicons` ^2.6 -- `laravel/mcp` ^0.x (NEU - MCP-Server-Integration) - -### Dev-Abhängigkeiten: -- `laravel/sail` ^1.41 -- `laravel/dusk` ^8.2 -- `pestphp/pest` ^3.8 -- `barryvdh/laravel-debugbar` ^3.16 -- `reliese/laravel` ^1.4 (Model-Generator) - ---- - -## 📈 Nächste Schritte & Empfehlungen - -### Kurzfristig (bereit für Implementierung): -1. **Bestellsystem** - Order-Management für Kunden -2. **Produktbilder** - Media-Upload für Produkte -3. **E-Mail-Templates** - Erweiterte E-Mail-Kommunikation -4. **Benachrichtigungen** - In-App-Notifications - -### Mittelfristig: -1. **Provisionsabrechnung** - Automatisierte Provisionsberechnung -2. **Reporting & Analytics** - Dashboard-Erweiterungen -3. **API-Erweiterung** - REST-API für Externe -4. **Suchfunktion** - Globale Suche über alle Inhalte - -### Langfristig: -1. **Mobile-App** - Native Apps (via Sanctum-API) -2. **Mehrsprachigkeit** - Internationalisierung -3. **Erweiterte CMS-Features** - Flux-CMS-Package fertigstellen -4. **Payment-Integration** - Zahlungsabwicklung - ---- - -## 🎯 Projektstatus Zusammenfassung - -### ✅ Vollständig implementiert: -- Multi-Domain-System mit Theme-Switching -- Komplettes Benutzer- & Rollen-Management -- Partner-Management mit Onboarding -- Hub-Verwaltung -- Produkt-Management (Grundfunktionen) -- Rollenbasierte Dashboards -- Digital Signage CMS mit Tracking -- Authentifizierung & Sicherheit -- Website-Frontend (Grundstruktur) -- Dokumentation -- **NEU**: Immobilien-Plattform (Dubai Real Estate) mit Soft-Launch -- **NEU**: Display-Versions-System (Neuarchitektur) -- **NEU**: Cabinet Tablet-Management -- **NEU**: Homepage & Brand-Repositionierung -- **NEU**: Mehrsprachigkeit (de/en) mit SetLocale-Middleware -- **NEU**: Rechtliche Seiten (Impressum, Datenschutz, AGB, Cookie-Policy) -- **NEU**: Magazin mit 5 vollständigen Artikeln (de/en) -- **NEU**: Interior- und Netzwerk-Seiten -- **NEU**: WebP-Konvertierungs-Tool -- **NEU**: Umfangreiche Test-Suite mit Factories - -### 🔄 In Arbeit: -- Flux-CMS-Package (Architektur steht, neue Models und Services hinzugefügt) -- Erweiterte Produkt-Features + Produkt-Kuration -- Weitere Immobilienprojekte (aktuell: Azizi Creek Views 4) - -### 📋 Bereit für Umsetzung: -- Bestellsystem -- Provisionsabrechnung -- Erweiterte Reporting-Funktionen -- Payment-Integration - ---- - -## 💡 Besonderheiten & Highlights - -### Technische Exzellenz: -- **Modern Stack** - Neueste Laravel 12 / Livewire 3 / PHP 8.4+ / Tailwind CSS v4 -- **Component-Architecture** - Wiederverwendbare Livewire-Komponenten -- **Type-Safety** - PHP 8.4+ Features inkl. Enums -- **Performance** - Optimierte Queries, Caching, WebP-Bildkonvertierung -- **Skalierbarkeit** - Modularer Aufbau für Wachstum -- **API-First Display-System** - JSON-basierte Konfiguration für Signage-Geräte -- **Mehrsprachigkeit** - DE/EN mit Spatie Translatable und Laravel-Lang-Dateien - -### Business-Features: -- **Multi-Tenant-Ready** - Verschiedene Partner-Typen -- **Hierarchische Strukturen** - Broker-Kunden-Beziehungen -- **Flexibles Provisionsmodell** - Prozentsatz oder Festbetrag -- **Umfangreiches Tracking** - Display-Klicks, User-Aktivitäten -- **White-Label-Fähigkeit** - Domain-spezifisches Branding -- **Immobilien-Investment** - Vollständige Dubai Real Estate-Plattform mit Preisumrechnung -- **Content-Management** - Magazin-Artikel, Projekte, rechtliche Inhalte -- **Showroom-Management** - Cabinet Tablet mit Öffnungszeiten und Live-Status - -### User-Experience: -- **Intuitives Onboarding** - Setup-Wizard für neue Partner -- **Rollenbasierte Ansichten** - Jede Rolle sieht nur relevante Inhalte -- **Real-time Updates** - Livewire für nahtlose Interaktion -- **Responsive Design** - Funktioniert auf allen Geräten -- **Dark Mode** - Moderne UI-Präferenzen -- **Founder-Vertrauen** - CEO-Positioning auf relevanten Seiten -- **Trust-Building** - Escrow, DLD-Kontrolle, Investoren-Transparenz - ---- - -## 📞 Support & Wartung - -Das System ist produktionsbereit und kann bei Bedarf mit folgenden Services erweitert werden: - -- Code-Reviews & Optimierungen -- Feature-Erweiterungen -- Bug-Fixes & Updates -- Performance-Tuning -- Sicherheits-Audits -- Schulungen für Administratoren - ---- - -**Entwicklungsstand**: März 2026 -**Version**: 2.0 -**Framework**: Laravel 12 -**PHP**: 8.4+ -**Lizenz**: MIT - ---- - -*Diese Dokumentation wird fortlaufend aktualisiert und gibt den aktuellen Stand der Entwicklung wieder.* -*Letzte Aktualisierung: März 2026* - +*Diese Dokumentation wird mit jedem Release aktualisiert. Letzte Aktualisierung: 09.10.2026 (v2.0.6).* diff --git a/resources/views/livewire/admin/documentation.blade.php b/resources/views/livewire/admin/documentation.blade.php index 79d19a41..e8884de5 100644 --- a/resources/views/livewire/admin/documentation.blade.php +++ b/resources/views/livewire/admin/documentation.blade.php @@ -223,6 +223,26 @@ $fileInfo = computed(fn () => ProjectDocumentationContent::fileInfo()); .dark .prose hr { border-color: #374151 !important; } + /* Tabellen (Dokumentation seit 09.10.2026 überwiegend tabellarisch) */ + .prose table { + width: 100%; + margin: 1rem 0 1.5rem; + border-collapse: collapse; + font-size: 0.875rem; + } + .prose th, .prose td { + padding: 0.5rem 0.75rem; + border-bottom: 1px solid rgb(228 228 231); + text-align: left; + vertical-align: top; + } + .prose th { + font-weight: 600; + border-bottom-width: 2px; + } + .dark .prose th, .dark .prose td { + border-color: rgb(63 63 70); + }