diff --git a/.gitignore b/.gitignore index dc6e139b..d9fa0f0c 100644 --- a/.gitignore +++ b/.gitignore @@ -59,7 +59,7 @@ _storage/ _businessportal24.com/ dev/migration/ # Produktivdaten: Legacy-SQL-Dumps bleiben lokal, nie ins Repo (Entscheidung 06.07.2026) -dev/migration 2026/sql/ +dev/archive/migration-2026/sql/ # Produktivdaten: API-Aktivitaets-Logs der Altportale (Kundendaten + Alt-API-Keys), analog SQL-Dumps dev/api/ diff --git a/dev/README.md b/dev/README.md new file mode 100644 index 00000000..d9d96bb6 --- /dev/null +++ b/dev/README.md @@ -0,0 +1,38 @@ +# dev/ — Projekt- und Betriebsdokumentation + +Stand: 20.07.2026 — **das System ist live** (pressekonto.com, presseecho.de, +businessportal24.com). Die Struktur trennt aktive Betriebs-/Planungsdoku von +abgeschlossenen Phasen (Archiv). + +## Aktiv + +| Pfad | Inhalt | +| --- | --- | +| `betrieb/deploy-runbook.md` | Deploy- und Betriebs-Runbook (SFTP-Deploy-Checkliste, Worker, Scheduler, Stripe-Webhook, Rollback) — **erste Anlaufstelle für alles Operative** | +| `betrieb/api-legacy-paritaet.md` | Verhaltens-Referenz der Legacy-API-Kompatibilitätsschicht (`/service/…`) — lebendes Dokument, solange Alt-Integrationen (Connektar) die Pfade nutzen | +| `betrieb/umami.md` | Umami-Analytics-Snippets je Domain | +| `roadmap.md` | Offene Punkte und nächste Entwicklungen/Optimierungen | + +## Lokal / gitignored (bleiben liegen, nicht committen) + +| Pfad | Inhalt | +| --- | --- | +| `migration/` | Medien-Staging der Legacy-Migration (~7 GB Uploads beider Altportale) — Quelle für `legacy:migrate-media`; behalten, bis das Alt-System endgültig abgeschaltet und ein Server-Backup gezogen ist | +| `api/` | Postman-Collection (enthält API-Keys!) und Activity-Log-Auswertungen der Alt-APIs | +| `archive/migration-2026/sql/` | Legacy-DB-Dumps (Snapshots vom 23.04.2026) | + +## Archiv (`archive/`) + +Abgeschlossene Phasen, als Historie/Referenz erhalten: + +- `optimize/` — System-Optimierungsphasen 0–6 **und das Cutover-Runbook der + Legacy-Migration** (erledigt 20.07.2026; enthält weiterhin die Anleitung für + `--since`-Delta-Läufe, falls das Alt-System noch einmal Daten liefert) +- `release/` — Release-Entwicklungsplan, manuelle QA-Checkliste, + Boost-Platzierungs-Entscheidung +- `migration-2026/` — Analyse- und Planungsdoku der Legacy-Migration + (Datenmodell, Merge-Strategie, API-Kunden, Fortschritt) +- `frontend/` + `frontend-audits/` — Frontend-Konzepte und die + Responsive-/Mobile-Audits vom 16.07. +- `agentur-attribution/`, `legacy_logging/`, `legacy_performance/`, `_old/` — + ältere Einzelthemen bzw. Altsystem-Reste diff --git a/dev/_old/Models/ApiUser.php b/dev/archive/_old/Models/ApiUser.php similarity index 100% rename from dev/_old/Models/ApiUser.php rename to dev/archive/_old/Models/ApiUser.php diff --git a/dev/_old/Models/Blacklist.php b/dev/archive/_old/Models/Blacklist.php similarity index 100% rename from dev/_old/Models/Blacklist.php rename to dev/archive/_old/Models/Blacklist.php diff --git a/dev/_old/Models/Category.php b/dev/archive/_old/Models/Category.php similarity index 100% rename from dev/_old/Models/Category.php rename to dev/archive/_old/Models/Category.php diff --git a/dev/_old/Models/CategoryFooterCode.php b/dev/archive/_old/Models/CategoryFooterCode.php similarity index 100% rename from dev/_old/Models/CategoryFooterCode.php rename to dev/archive/_old/Models/CategoryFooterCode.php diff --git a/dev/_old/Models/CategoryTranslation.php b/dev/archive/_old/Models/CategoryTranslation.php similarity index 100% rename from dev/_old/Models/CategoryTranslation.php rename to dev/archive/_old/Models/CategoryTranslation.php diff --git a/dev/_old/Models/Company.php b/dev/archive/_old/Models/Company.php similarity index 100% rename from dev/_old/Models/Company.php rename to dev/archive/_old/Models/Company.php diff --git a/dev/_old/Models/CompanyUser.php b/dev/archive/_old/Models/CompanyUser.php similarity index 100% rename from dev/_old/Models/CompanyUser.php rename to dev/archive/_old/Models/CompanyUser.php diff --git a/dev/_old/Models/Contact.php b/dev/archive/_old/Models/Contact.php similarity index 100% rename from dev/_old/Models/Contact.php rename to dev/archive/_old/Models/Contact.php diff --git a/dev/_old/Models/Country.php b/dev/archive/_old/Models/Country.php similarity index 100% rename from dev/_old/Models/Country.php rename to dev/archive/_old/Models/Country.php diff --git a/dev/_old/Models/Coupon.php b/dev/archive/_old/Models/Coupon.php similarity index 100% rename from dev/_old/Models/Coupon.php rename to dev/archive/_old/Models/Coupon.php diff --git a/dev/_old/Models/FooterCode.php b/dev/archive/_old/Models/FooterCode.php similarity index 100% rename from dev/_old/Models/FooterCode.php rename to dev/archive/_old/Models/FooterCode.php diff --git a/dev/_old/Models/Invoice.php b/dev/archive/_old/Models/Invoice.php similarity index 100% rename from dev/_old/Models/Invoice.php rename to dev/archive/_old/Models/Invoice.php diff --git a/dev/_old/Models/InvoiceBillingAddress.php b/dev/archive/_old/Models/InvoiceBillingAddress.php similarity index 100% rename from dev/_old/Models/InvoiceBillingAddress.php rename to dev/archive/_old/Models/InvoiceBillingAddress.php diff --git a/dev/_old/Models/MigrationVersion.php b/dev/archive/_old/Models/MigrationVersion.php similarity index 100% rename from dev/_old/Models/MigrationVersion.php rename to dev/archive/_old/Models/MigrationVersion.php diff --git a/dev/_old/Models/NewsletterSubscription.php b/dev/archive/_old/Models/NewsletterSubscription.php similarity index 100% rename from dev/_old/Models/NewsletterSubscription.php rename to dev/archive/_old/Models/NewsletterSubscription.php diff --git a/dev/_old/Models/PaymentOption.php b/dev/archive/_old/Models/PaymentOption.php similarity index 100% rename from dev/_old/Models/PaymentOption.php rename to dev/archive/_old/Models/PaymentOption.php diff --git a/dev/_old/Models/PaymentOptionAccessGroup.php b/dev/archive/_old/Models/PaymentOptionAccessGroup.php similarity index 100% rename from dev/_old/Models/PaymentOptionAccessGroup.php rename to dev/archive/_old/Models/PaymentOptionAccessGroup.php diff --git a/dev/_old/Models/PaymentOptionExcludeGroup.php b/dev/archive/_old/Models/PaymentOptionExcludeGroup.php similarity index 100% rename from dev/_old/Models/PaymentOptionExcludeGroup.php rename to dev/archive/_old/Models/PaymentOptionExcludeGroup.php diff --git a/dev/_old/Models/PaymentOptionReference.php b/dev/archive/_old/Models/PaymentOptionReference.php similarity index 100% rename from dev/_old/Models/PaymentOptionReference.php rename to dev/archive/_old/Models/PaymentOptionReference.php diff --git a/dev/_old/Models/PaymentOptionTranslation.php b/dev/archive/_old/Models/PaymentOptionTranslation.php similarity index 100% rename from dev/_old/Models/PaymentOptionTranslation.php rename to dev/archive/_old/Models/PaymentOptionTranslation.php diff --git a/dev/_old/Models/PressRelease.php b/dev/archive/_old/Models/PressRelease.php similarity index 100% rename from dev/_old/Models/PressRelease.php rename to dev/archive/_old/Models/PressRelease.php diff --git a/dev/_old/Models/PressReleaseContact.php b/dev/archive/_old/Models/PressReleaseContact.php similarity index 100% rename from dev/_old/Models/PressReleaseContact.php rename to dev/archive/_old/Models/PressReleaseContact.php diff --git a/dev/_old/Models/PressReleaseImage.php b/dev/archive/_old/Models/PressReleaseImage.php similarity index 100% rename from dev/_old/Models/PressReleaseImage.php rename to dev/archive/_old/Models/PressReleaseImage.php diff --git a/dev/_old/Models/PressReleaseImageOld.php b/dev/archive/_old/Models/PressReleaseImageOld.php similarity index 100% rename from dev/_old/Models/PressReleaseImageOld.php rename to dev/archive/_old/Models/PressReleaseImageOld.php diff --git a/dev/_old/Models/PromotionLink.php b/dev/archive/_old/Models/PromotionLink.php similarity index 100% rename from dev/_old/Models/PromotionLink.php rename to dev/archive/_old/Models/PromotionLink.php diff --git a/dev/_old/Models/PromotionLinkCategory.php b/dev/archive/_old/Models/PromotionLinkCategory.php similarity index 100% rename from dev/_old/Models/PromotionLinkCategory.php rename to dev/archive/_old/Models/PromotionLinkCategory.php diff --git a/dev/_old/Models/ResponsibleCompanyUser.php b/dev/archive/_old/Models/ResponsibleCompanyUser.php similarity index 100% rename from dev/_old/Models/ResponsibleCompanyUser.php rename to dev/archive/_old/Models/ResponsibleCompanyUser.php diff --git a/dev/_old/Models/Salutation.php b/dev/archive/_old/Models/Salutation.php similarity index 100% rename from dev/_old/Models/Salutation.php rename to dev/archive/_old/Models/Salutation.php diff --git a/dev/_old/Models/SalutationTranslation.php b/dev/archive/_old/Models/SalutationTranslation.php similarity index 100% rename from dev/_old/Models/SalutationTranslation.php rename to dev/archive/_old/Models/SalutationTranslation.php diff --git a/dev/_old/Models/SfGuardGroup.php b/dev/archive/_old/Models/SfGuardGroup.php similarity index 100% rename from dev/_old/Models/SfGuardGroup.php rename to dev/archive/_old/Models/SfGuardGroup.php diff --git a/dev/_old/Models/SfGuardGroupPermission.php b/dev/archive/_old/Models/SfGuardGroupPermission.php similarity index 100% rename from dev/_old/Models/SfGuardGroupPermission.php rename to dev/archive/_old/Models/SfGuardGroupPermission.php diff --git a/dev/_old/Models/SfGuardPermission.php b/dev/archive/_old/Models/SfGuardPermission.php similarity index 100% rename from dev/_old/Models/SfGuardPermission.php rename to dev/archive/_old/Models/SfGuardPermission.php diff --git a/dev/_old/Models/SfGuardRememberKey.php b/dev/archive/_old/Models/SfGuardRememberKey.php similarity index 100% rename from dev/_old/Models/SfGuardRememberKey.php rename to dev/archive/_old/Models/SfGuardRememberKey.php diff --git a/dev/_old/Models/SfGuardUser.php b/dev/archive/_old/Models/SfGuardUser.php similarity index 100% rename from dev/_old/Models/SfGuardUser.php rename to dev/archive/_old/Models/SfGuardUser.php diff --git a/dev/_old/Models/SfGuardUserGroup.php b/dev/archive/_old/Models/SfGuardUserGroup.php similarity index 100% rename from dev/_old/Models/SfGuardUserGroup.php rename to dev/archive/_old/Models/SfGuardUserGroup.php diff --git a/dev/_old/Models/SfGuardUserPermission.php b/dev/archive/_old/Models/SfGuardUserPermission.php similarity index 100% rename from dev/_old/Models/SfGuardUserPermission.php rename to dev/archive/_old/Models/SfGuardUserPermission.php diff --git a/dev/_old/Models/SfGuardUserProfile.php b/dev/archive/_old/Models/SfGuardUserProfile.php similarity index 100% rename from dev/_old/Models/SfGuardUserProfile.php rename to dev/archive/_old/Models/SfGuardUserProfile.php diff --git a/dev/_old/Models/User.php b/dev/archive/_old/Models/User.php similarity index 100% rename from dev/_old/Models/User.php rename to dev/archive/_old/Models/User.php diff --git a/dev/_old/Models/UserBillingAddress.php b/dev/archive/_old/Models/UserBillingAddress.php similarity index 100% rename from dev/_old/Models/UserBillingAddress.php rename to dev/archive/_old/Models/UserBillingAddress.php diff --git a/dev/_old/Models/UserPayment.php b/dev/archive/_old/Models/UserPayment.php similarity index 100% rename from dev/_old/Models/UserPayment.php rename to dev/archive/_old/Models/UserPayment.php diff --git a/dev/_old/Models/UserPaymentOption.php b/dev/archive/_old/Models/UserPaymentOption.php similarity index 100% rename from dev/_old/Models/UserPaymentOption.php rename to dev/archive/_old/Models/UserPaymentOption.php diff --git a/dev/_old/Models/UserPaymentOptionCompany.php b/dev/archive/_old/Models/UserPaymentOptionCompany.php similarity index 100% rename from dev/_old/Models/UserPaymentOptionCompany.php rename to dev/archive/_old/Models/UserPaymentOptionCompany.php diff --git a/dev/_old/Models/UserPaymentOptionReference.php b/dev/archive/_old/Models/UserPaymentOptionReference.php similarity index 100% rename from dev/_old/Models/UserPaymentOptionReference.php rename to dev/archive/_old/Models/UserPaymentOptionReference.php diff --git a/dev/_old/config-vite/devcontainer.json b/dev/archive/_old/config-vite/devcontainer.json similarity index 100% rename from dev/_old/config-vite/devcontainer.json rename to dev/archive/_old/config-vite/devcontainer.json diff --git a/dev/_old/config-vite/package.json b/dev/archive/_old/config-vite/package.json similarity index 100% rename from dev/_old/config-vite/package.json rename to dev/archive/_old/config-vite/package.json diff --git a/dev/_old/config-vite/public/build/b2a/app-l0sNRNKZ.js b/dev/archive/_old/config-vite/public/build/b2a/app-l0sNRNKZ.js similarity index 100% rename from dev/_old/config-vite/public/build/b2a/app-l0sNRNKZ.js rename to dev/archive/_old/config-vite/public/build/b2a/app-l0sNRNKZ.js diff --git a/dev/_old/config-vite/public/build/b2a/manifest.json b/dev/archive/_old/config-vite/public/build/b2a/manifest.json similarity index 100% rename from dev/_old/config-vite/public/build/b2a/manifest.json rename to dev/archive/_old/config-vite/public/build/b2a/manifest.json diff --git a/dev/_old/config-vite/public/build/b2a/shared-styles-BpmL0S84.css b/dev/archive/_old/config-vite/public/build/b2a/shared-styles-BpmL0S84.css similarity index 100% rename from dev/_old/config-vite/public/build/b2a/shared-styles-BpmL0S84.css rename to dev/archive/_old/config-vite/public/build/b2a/shared-styles-BpmL0S84.css diff --git a/dev/_old/config-vite/public/build/b2a/theme-b2a-BVR9j-ut.css b/dev/archive/_old/config-vite/public/build/b2a/theme-b2a-BVR9j-ut.css similarity index 100% rename from dev/_old/config-vite/public/build/b2a/theme-b2a-BVR9j-ut.css rename to dev/archive/_old/config-vite/public/build/b2a/theme-b2a-BVR9j-ut.css diff --git a/dev/_old/config-vite/public/build/b2a/theme-b2in-oKARomDq.css b/dev/archive/_old/config-vite/public/build/b2a/theme-b2in-oKARomDq.css similarity index 100% rename from dev/_old/config-vite/public/build/b2a/theme-b2in-oKARomDq.css rename to dev/archive/_old/config-vite/public/build/b2a/theme-b2in-oKARomDq.css diff --git a/dev/_old/config-vite/public/build/b2a/theme-stileigentum-cxAk5yJt.css b/dev/archive/_old/config-vite/public/build/b2a/theme-stileigentum-cxAk5yJt.css similarity index 100% rename from dev/_old/config-vite/public/build/b2a/theme-stileigentum-cxAk5yJt.css rename to dev/archive/_old/config-vite/public/build/b2a/theme-stileigentum-cxAk5yJt.css diff --git a/dev/_old/config-vite/public/build/b2a/theme-style2own-aIcZwV5c.css b/dev/archive/_old/config-vite/public/build/b2a/theme-style2own-aIcZwV5c.css similarity index 100% rename from dev/_old/config-vite/public/build/b2a/theme-style2own-aIcZwV5c.css rename to dev/archive/_old/config-vite/public/build/b2a/theme-style2own-aIcZwV5c.css diff --git a/dev/_old/config-vite/public/build/b2in/app-l0sNRNKZ.js b/dev/archive/_old/config-vite/public/build/b2in/app-l0sNRNKZ.js similarity index 100% rename from dev/_old/config-vite/public/build/b2in/app-l0sNRNKZ.js rename to dev/archive/_old/config-vite/public/build/b2in/app-l0sNRNKZ.js diff --git a/dev/_old/config-vite/public/build/b2in/manifest.json b/dev/archive/_old/config-vite/public/build/b2in/manifest.json similarity index 100% rename from dev/_old/config-vite/public/build/b2in/manifest.json rename to dev/archive/_old/config-vite/public/build/b2in/manifest.json diff --git a/dev/_old/config-vite/public/build/b2in/shared-styles-BpmL0S84.css b/dev/archive/_old/config-vite/public/build/b2in/shared-styles-BpmL0S84.css similarity index 100% rename from dev/_old/config-vite/public/build/b2in/shared-styles-BpmL0S84.css rename to dev/archive/_old/config-vite/public/build/b2in/shared-styles-BpmL0S84.css diff --git a/dev/_old/config-vite/public/build/b2in/theme-b2a-BVR9j-ut.css b/dev/archive/_old/config-vite/public/build/b2in/theme-b2a-BVR9j-ut.css similarity index 100% rename from dev/_old/config-vite/public/build/b2in/theme-b2a-BVR9j-ut.css rename to dev/archive/_old/config-vite/public/build/b2in/theme-b2a-BVR9j-ut.css diff --git a/dev/_old/config-vite/public/build/b2in/theme-b2in-oKARomDq.css b/dev/archive/_old/config-vite/public/build/b2in/theme-b2in-oKARomDq.css similarity index 100% rename from dev/_old/config-vite/public/build/b2in/theme-b2in-oKARomDq.css rename to dev/archive/_old/config-vite/public/build/b2in/theme-b2in-oKARomDq.css diff --git a/dev/_old/config-vite/public/build/b2in/theme-stileigentum-cxAk5yJt.css b/dev/archive/_old/config-vite/public/build/b2in/theme-stileigentum-cxAk5yJt.css similarity index 100% rename from dev/_old/config-vite/public/build/b2in/theme-stileigentum-cxAk5yJt.css rename to dev/archive/_old/config-vite/public/build/b2in/theme-stileigentum-cxAk5yJt.css diff --git a/dev/_old/config-vite/public/build/b2in/theme-style2own-aIcZwV5c.css b/dev/archive/_old/config-vite/public/build/b2in/theme-style2own-aIcZwV5c.css similarity index 100% rename from dev/_old/config-vite/public/build/b2in/theme-style2own-aIcZwV5c.css rename to dev/archive/_old/config-vite/public/build/b2in/theme-style2own-aIcZwV5c.css diff --git a/dev/_old/config-vite/public/build/portal/app-l0sNRNKZ.js b/dev/archive/_old/config-vite/public/build/portal/app-l0sNRNKZ.js similarity index 100% rename from dev/_old/config-vite/public/build/portal/app-l0sNRNKZ.js rename to dev/archive/_old/config-vite/public/build/portal/app-l0sNRNKZ.js diff --git a/dev/_old/config-vite/public/build/portal/manifest.json b/dev/archive/_old/config-vite/public/build/portal/manifest.json similarity index 100% rename from dev/_old/config-vite/public/build/portal/manifest.json rename to dev/archive/_old/config-vite/public/build/portal/manifest.json diff --git a/dev/_old/config-vite/public/build/portal/portal-CK12WEW2.css b/dev/archive/_old/config-vite/public/build/portal/portal-CK12WEW2.css similarity index 100% rename from dev/_old/config-vite/public/build/portal/portal-CK12WEW2.css rename to dev/archive/_old/config-vite/public/build/portal/portal-CK12WEW2.css diff --git a/dev/_old/config-vite/public/build/stileigentum/app-l0sNRNKZ.js b/dev/archive/_old/config-vite/public/build/stileigentum/app-l0sNRNKZ.js similarity index 100% rename from dev/_old/config-vite/public/build/stileigentum/app-l0sNRNKZ.js rename to dev/archive/_old/config-vite/public/build/stileigentum/app-l0sNRNKZ.js diff --git a/dev/_old/config-vite/public/build/stileigentum/manifest.json b/dev/archive/_old/config-vite/public/build/stileigentum/manifest.json similarity index 100% rename from dev/_old/config-vite/public/build/stileigentum/manifest.json rename to dev/archive/_old/config-vite/public/build/stileigentum/manifest.json diff --git a/dev/_old/config-vite/public/build/stileigentum/shared-styles-BpmL0S84.css b/dev/archive/_old/config-vite/public/build/stileigentum/shared-styles-BpmL0S84.css similarity index 100% rename from dev/_old/config-vite/public/build/stileigentum/shared-styles-BpmL0S84.css rename to dev/archive/_old/config-vite/public/build/stileigentum/shared-styles-BpmL0S84.css diff --git a/dev/_old/config-vite/public/build/stileigentum/theme-b2a-BVR9j-ut.css b/dev/archive/_old/config-vite/public/build/stileigentum/theme-b2a-BVR9j-ut.css similarity index 100% rename from dev/_old/config-vite/public/build/stileigentum/theme-b2a-BVR9j-ut.css rename to dev/archive/_old/config-vite/public/build/stileigentum/theme-b2a-BVR9j-ut.css diff --git a/dev/_old/config-vite/public/build/stileigentum/theme-b2in-oKARomDq.css b/dev/archive/_old/config-vite/public/build/stileigentum/theme-b2in-oKARomDq.css similarity index 100% rename from dev/_old/config-vite/public/build/stileigentum/theme-b2in-oKARomDq.css rename to dev/archive/_old/config-vite/public/build/stileigentum/theme-b2in-oKARomDq.css diff --git a/dev/_old/config-vite/public/build/stileigentum/theme-stileigentum-cxAk5yJt.css b/dev/archive/_old/config-vite/public/build/stileigentum/theme-stileigentum-cxAk5yJt.css similarity index 100% rename from dev/_old/config-vite/public/build/stileigentum/theme-stileigentum-cxAk5yJt.css rename to dev/archive/_old/config-vite/public/build/stileigentum/theme-stileigentum-cxAk5yJt.css diff --git a/dev/_old/config-vite/public/build/stileigentum/theme-style2own-aIcZwV5c.css b/dev/archive/_old/config-vite/public/build/stileigentum/theme-style2own-aIcZwV5c.css similarity index 100% rename from dev/_old/config-vite/public/build/stileigentum/theme-style2own-aIcZwV5c.css rename to dev/archive/_old/config-vite/public/build/stileigentum/theme-style2own-aIcZwV5c.css diff --git a/dev/_old/config-vite/public/build/style2own/app-l0sNRNKZ.js b/dev/archive/_old/config-vite/public/build/style2own/app-l0sNRNKZ.js similarity index 100% rename from dev/_old/config-vite/public/build/style2own/app-l0sNRNKZ.js rename to dev/archive/_old/config-vite/public/build/style2own/app-l0sNRNKZ.js diff --git a/dev/_old/config-vite/public/build/style2own/manifest.json b/dev/archive/_old/config-vite/public/build/style2own/manifest.json similarity index 100% rename from dev/_old/config-vite/public/build/style2own/manifest.json rename to dev/archive/_old/config-vite/public/build/style2own/manifest.json diff --git a/dev/_old/config-vite/public/build/style2own/shared-styles-BpmL0S84.css b/dev/archive/_old/config-vite/public/build/style2own/shared-styles-BpmL0S84.css similarity index 100% rename from dev/_old/config-vite/public/build/style2own/shared-styles-BpmL0S84.css rename to dev/archive/_old/config-vite/public/build/style2own/shared-styles-BpmL0S84.css diff --git a/dev/_old/config-vite/public/build/style2own/theme-b2a-BVR9j-ut.css b/dev/archive/_old/config-vite/public/build/style2own/theme-b2a-BVR9j-ut.css similarity index 100% rename from dev/_old/config-vite/public/build/style2own/theme-b2a-BVR9j-ut.css rename to dev/archive/_old/config-vite/public/build/style2own/theme-b2a-BVR9j-ut.css diff --git a/dev/_old/config-vite/public/build/style2own/theme-b2in-oKARomDq.css b/dev/archive/_old/config-vite/public/build/style2own/theme-b2in-oKARomDq.css similarity index 100% rename from dev/_old/config-vite/public/build/style2own/theme-b2in-oKARomDq.css rename to dev/archive/_old/config-vite/public/build/style2own/theme-b2in-oKARomDq.css diff --git a/dev/_old/config-vite/public/build/style2own/theme-stileigentum-cxAk5yJt.css b/dev/archive/_old/config-vite/public/build/style2own/theme-stileigentum-cxAk5yJt.css similarity index 100% rename from dev/_old/config-vite/public/build/style2own/theme-stileigentum-cxAk5yJt.css rename to dev/archive/_old/config-vite/public/build/style2own/theme-stileigentum-cxAk5yJt.css diff --git a/dev/_old/config-vite/public/build/style2own/theme-style2own-aIcZwV5c.css b/dev/archive/_old/config-vite/public/build/style2own/theme-style2own-aIcZwV5c.css similarity index 100% rename from dev/_old/config-vite/public/build/style2own/theme-style2own-aIcZwV5c.css rename to dev/archive/_old/config-vite/public/build/style2own/theme-style2own-aIcZwV5c.css diff --git a/dev/_old/config-vite/resources/css/app.css b/dev/archive/_old/config-vite/resources/css/app.css similarity index 100% rename from dev/_old/config-vite/resources/css/app.css rename to dev/archive/_old/config-vite/resources/css/app.css diff --git a/dev/_old/config-vite/resources/css/portal.css b/dev/archive/_old/config-vite/resources/css/portal.css similarity index 100% rename from dev/_old/config-vite/resources/css/portal.css rename to dev/archive/_old/config-vite/resources/css/portal.css diff --git a/dev/_old/config-vite/resources/css/web/shared-styles.css b/dev/archive/_old/config-vite/resources/css/web/shared-styles.css similarity index 100% rename from dev/_old/config-vite/resources/css/web/shared-styles.css rename to dev/archive/_old/config-vite/resources/css/web/shared-styles.css diff --git a/dev/_old/config-vite/resources/css/web/theme-b2a.css b/dev/archive/_old/config-vite/resources/css/web/theme-b2a.css similarity index 100% rename from dev/_old/config-vite/resources/css/web/theme-b2a.css rename to dev/archive/_old/config-vite/resources/css/web/theme-b2a.css diff --git a/dev/_old/config-vite/resources/css/web/theme-b2in.css b/dev/archive/_old/config-vite/resources/css/web/theme-b2in.css similarity index 100% rename from dev/_old/config-vite/resources/css/web/theme-b2in.css rename to dev/archive/_old/config-vite/resources/css/web/theme-b2in.css diff --git a/dev/_old/config-vite/resources/css/web/theme-main.css b/dev/archive/_old/config-vite/resources/css/web/theme-main.css similarity index 100% rename from dev/_old/config-vite/resources/css/web/theme-main.css rename to dev/archive/_old/config-vite/resources/css/web/theme-main.css diff --git a/dev/_old/config-vite/resources/css/web/theme-stileigentum.css b/dev/archive/_old/config-vite/resources/css/web/theme-stileigentum.css similarity index 100% rename from dev/_old/config-vite/resources/css/web/theme-stileigentum.css rename to dev/archive/_old/config-vite/resources/css/web/theme-stileigentum.css diff --git a/dev/_old/config-vite/resources/css/web/theme-style2own.css b/dev/archive/_old/config-vite/resources/css/web/theme-style2own.css similarity index 100% rename from dev/_old/config-vite/resources/css/web/theme-style2own.css rename to dev/archive/_old/config-vite/resources/css/web/theme-style2own.css diff --git a/dev/_old/config-vite/resources/js/admin.js b/dev/archive/_old/config-vite/resources/js/admin.js similarity index 100% rename from dev/_old/config-vite/resources/js/admin.js rename to dev/archive/_old/config-vite/resources/js/admin.js diff --git a/dev/_old/config-vite/resources/js/app.js b/dev/archive/_old/config-vite/resources/js/app.js similarity index 100% rename from dev/_old/config-vite/resources/js/app.js rename to dev/archive/_old/config-vite/resources/js/app.js diff --git a/dev/_old/config-vite/resources/lang/de/messages.php b/dev/archive/_old/config-vite/resources/lang/de/messages.php similarity index 100% rename from dev/_old/config-vite/resources/lang/de/messages.php rename to dev/archive/_old/config-vite/resources/lang/de/messages.php diff --git a/dev/_old/config-vite/resources/lang/en/messages.php b/dev/archive/_old/config-vite/resources/lang/en/messages.php similarity index 100% rename from dev/_old/config-vite/resources/lang/en/messages.php rename to dev/archive/_old/config-vite/resources/lang/en/messages.php diff --git a/dev/_old/config-vite/resources/lang/es/messages.php b/dev/archive/_old/config-vite/resources/lang/es/messages.php similarity index 100% rename from dev/_old/config-vite/resources/lang/es/messages.php rename to dev/archive/_old/config-vite/resources/lang/es/messages.php diff --git a/dev/_old/config-vite/resources/lang/fr/messages.php b/dev/archive/_old/config-vite/resources/lang/fr/messages.php similarity index 100% rename from dev/_old/config-vite/resources/lang/fr/messages.php rename to dev/archive/_old/config-vite/resources/lang/fr/messages.php diff --git a/dev/_old/config-vite/tailwind.portal.config.js b/dev/archive/_old/config-vite/tailwind.portal.config.js similarity index 100% rename from dev/_old/config-vite/tailwind.portal.config.js rename to dev/archive/_old/config-vite/tailwind.portal.config.js diff --git a/dev/_old/config-vite/tailwind.web.config.js b/dev/archive/_old/config-vite/tailwind.web.config.js similarity index 100% rename from dev/_old/config-vite/tailwind.web.config.js rename to dev/archive/_old/config-vite/tailwind.web.config.js diff --git a/dev/_old/config-vite/vite.portal.config.js b/dev/archive/_old/config-vite/vite.portal.config.js similarity index 100% rename from dev/_old/config-vite/vite.portal.config.js rename to dev/archive/_old/config-vite/vite.portal.config.js diff --git a/dev/_old/config-vite/vite.web.config.js b/dev/archive/_old/config-vite/vite.web.config.js similarity index 100% rename from dev/_old/config-vite/vite.web.config.js rename to dev/archive/_old/config-vite/vite.web.config.js diff --git a/dev/_old/migrations/2014_10_12_000000_create_users_table.php b/dev/archive/_old/migrations/2014_10_12_000000_create_users_table.php similarity index 100% rename from dev/_old/migrations/2014_10_12_000000_create_users_table.php rename to dev/archive/_old/migrations/2014_10_12_000000_create_users_table.php diff --git a/dev/_old/migrations/2014_10_12_100000_create_password_reset_tokens_table.php b/dev/archive/_old/migrations/2014_10_12_100000_create_password_reset_tokens_table.php similarity index 100% rename from dev/_old/migrations/2014_10_12_100000_create_password_reset_tokens_table.php rename to dev/archive/_old/migrations/2014_10_12_100000_create_password_reset_tokens_table.php diff --git a/dev/_old/migrations/2019_08_19_000000_create_failed_jobs_table.php b/dev/archive/_old/migrations/2019_08_19_000000_create_failed_jobs_table.php similarity index 100% rename from dev/_old/migrations/2019_08_19_000000_create_failed_jobs_table.php rename to dev/archive/_old/migrations/2019_08_19_000000_create_failed_jobs_table.php diff --git a/dev/_old/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/dev/archive/_old/migrations/2019_12_14_000001_create_personal_access_tokens_table.php similarity index 100% rename from dev/_old/migrations/2019_12_14_000001_create_personal_access_tokens_table.php rename to dev/archive/_old/migrations/2019_12_14_000001_create_personal_access_tokens_table.php diff --git a/dev/_old/migrations/2024_02_17_165215_create_api_user_table.php b/dev/archive/_old/migrations/2024_02_17_165215_create_api_user_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165215_create_api_user_table.php rename to dev/archive/_old/migrations/2024_02_17_165215_create_api_user_table.php diff --git a/dev/_old/migrations/2024_02_17_165216_create_blacklist_table.php b/dev/archive/_old/migrations/2024_02_17_165216_create_blacklist_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165216_create_blacklist_table.php rename to dev/archive/_old/migrations/2024_02_17_165216_create_blacklist_table.php diff --git a/dev/_old/migrations/2024_02_17_165216_create_category_footer_code_table.php b/dev/archive/_old/migrations/2024_02_17_165216_create_category_footer_code_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165216_create_category_footer_code_table.php rename to dev/archive/_old/migrations/2024_02_17_165216_create_category_footer_code_table.php diff --git a/dev/_old/migrations/2024_02_17_165216_create_category_table.php b/dev/archive/_old/migrations/2024_02_17_165216_create_category_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165216_create_category_table.php rename to dev/archive/_old/migrations/2024_02_17_165216_create_category_table.php diff --git a/dev/_old/migrations/2024_02_17_165216_create_category_translation_table.php b/dev/archive/_old/migrations/2024_02_17_165216_create_category_translation_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165216_create_category_translation_table.php rename to dev/archive/_old/migrations/2024_02_17_165216_create_category_translation_table.php diff --git a/dev/_old/migrations/2024_02_17_165217_create_company_table.php b/dev/archive/_old/migrations/2024_02_17_165217_create_company_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165217_create_company_table.php rename to dev/archive/_old/migrations/2024_02_17_165217_create_company_table.php diff --git a/dev/_old/migrations/2024_02_17_165217_create_company_user_table.php b/dev/archive/_old/migrations/2024_02_17_165217_create_company_user_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165217_create_company_user_table.php rename to dev/archive/_old/migrations/2024_02_17_165217_create_company_user_table.php diff --git a/dev/_old/migrations/2024_02_17_165217_create_contact_table.php b/dev/archive/_old/migrations/2024_02_17_165217_create_contact_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165217_create_contact_table.php rename to dev/archive/_old/migrations/2024_02_17_165217_create_contact_table.php diff --git a/dev/_old/migrations/2024_02_17_165217_create_country_table.php b/dev/archive/_old/migrations/2024_02_17_165217_create_country_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165217_create_country_table.php rename to dev/archive/_old/migrations/2024_02_17_165217_create_country_table.php diff --git a/dev/_old/migrations/2024_02_17_165218_create_coupon_table.php b/dev/archive/_old/migrations/2024_02_17_165218_create_coupon_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165218_create_coupon_table.php rename to dev/archive/_old/migrations/2024_02_17_165218_create_coupon_table.php diff --git a/dev/_old/migrations/2024_02_17_165218_create_footer_code_table.php b/dev/archive/_old/migrations/2024_02_17_165218_create_footer_code_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165218_create_footer_code_table.php rename to dev/archive/_old/migrations/2024_02_17_165218_create_footer_code_table.php diff --git a/dev/_old/migrations/2024_02_17_165218_create_invoice_billing_address_table.php b/dev/archive/_old/migrations/2024_02_17_165218_create_invoice_billing_address_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165218_create_invoice_billing_address_table.php rename to dev/archive/_old/migrations/2024_02_17_165218_create_invoice_billing_address_table.php diff --git a/dev/_old/migrations/2024_02_17_165218_create_invoice_table.php b/dev/archive/_old/migrations/2024_02_17_165218_create_invoice_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165218_create_invoice_table.php rename to dev/archive/_old/migrations/2024_02_17_165218_create_invoice_table.php diff --git a/dev/_old/migrations/2024_02_17_165219_create_migration_version_table.php b/dev/archive/_old/migrations/2024_02_17_165219_create_migration_version_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165219_create_migration_version_table.php rename to dev/archive/_old/migrations/2024_02_17_165219_create_migration_version_table.php diff --git a/dev/_old/migrations/2024_02_17_165219_create_newsletter_subscription_table.php b/dev/archive/_old/migrations/2024_02_17_165219_create_newsletter_subscription_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165219_create_newsletter_subscription_table.php rename to dev/archive/_old/migrations/2024_02_17_165219_create_newsletter_subscription_table.php diff --git a/dev/_old/migrations/2024_02_17_165219_create_payment_option_table.php b/dev/archive/_old/migrations/2024_02_17_165219_create_payment_option_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165219_create_payment_option_table.php rename to dev/archive/_old/migrations/2024_02_17_165219_create_payment_option_table.php diff --git a/dev/_old/migrations/2024_02_17_165220_create_payment_option_access_group_table.php b/dev/archive/_old/migrations/2024_02_17_165220_create_payment_option_access_group_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165220_create_payment_option_access_group_table.php rename to dev/archive/_old/migrations/2024_02_17_165220_create_payment_option_access_group_table.php diff --git a/dev/_old/migrations/2024_02_17_165220_create_payment_option_exclude_group_table.php b/dev/archive/_old/migrations/2024_02_17_165220_create_payment_option_exclude_group_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165220_create_payment_option_exclude_group_table.php rename to dev/archive/_old/migrations/2024_02_17_165220_create_payment_option_exclude_group_table.php diff --git a/dev/_old/migrations/2024_02_17_165220_create_payment_option_reference_table.php b/dev/archive/_old/migrations/2024_02_17_165220_create_payment_option_reference_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165220_create_payment_option_reference_table.php rename to dev/archive/_old/migrations/2024_02_17_165220_create_payment_option_reference_table.php diff --git a/dev/_old/migrations/2024_02_17_165220_create_payment_option_translation_table.php b/dev/archive/_old/migrations/2024_02_17_165220_create_payment_option_translation_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165220_create_payment_option_translation_table.php rename to dev/archive/_old/migrations/2024_02_17_165220_create_payment_option_translation_table.php diff --git a/dev/_old/migrations/2024_02_17_165221_create_press_release_contact_table.php b/dev/archive/_old/migrations/2024_02_17_165221_create_press_release_contact_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165221_create_press_release_contact_table.php rename to dev/archive/_old/migrations/2024_02_17_165221_create_press_release_contact_table.php diff --git a/dev/_old/migrations/2024_02_17_165221_create_press_release_image_old_table.php b/dev/archive/_old/migrations/2024_02_17_165221_create_press_release_image_old_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165221_create_press_release_image_old_table.php rename to dev/archive/_old/migrations/2024_02_17_165221_create_press_release_image_old_table.php diff --git a/dev/_old/migrations/2024_02_17_165221_create_press_release_image_table.php b/dev/archive/_old/migrations/2024_02_17_165221_create_press_release_image_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165221_create_press_release_image_table.php rename to dev/archive/_old/migrations/2024_02_17_165221_create_press_release_image_table.php diff --git a/dev/_old/migrations/2024_02_17_165221_create_press_release_table.php b/dev/archive/_old/migrations/2024_02_17_165221_create_press_release_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165221_create_press_release_table.php rename to dev/archive/_old/migrations/2024_02_17_165221_create_press_release_table.php diff --git a/dev/_old/migrations/2024_02_17_165222_create_promotion_link_category_table.php b/dev/archive/_old/migrations/2024_02_17_165222_create_promotion_link_category_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165222_create_promotion_link_category_table.php rename to dev/archive/_old/migrations/2024_02_17_165222_create_promotion_link_category_table.php diff --git a/dev/_old/migrations/2024_02_17_165222_create_promotion_link_table.php b/dev/archive/_old/migrations/2024_02_17_165222_create_promotion_link_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165222_create_promotion_link_table.php rename to dev/archive/_old/migrations/2024_02_17_165222_create_promotion_link_table.php diff --git a/dev/_old/migrations/2024_02_17_165222_create_responsible_company_user_table.php b/dev/archive/_old/migrations/2024_02_17_165222_create_responsible_company_user_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165222_create_responsible_company_user_table.php rename to dev/archive/_old/migrations/2024_02_17_165222_create_responsible_company_user_table.php diff --git a/dev/_old/migrations/2024_02_17_165222_create_salutation_table.php b/dev/archive/_old/migrations/2024_02_17_165222_create_salutation_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165222_create_salutation_table.php rename to dev/archive/_old/migrations/2024_02_17_165222_create_salutation_table.php diff --git a/dev/_old/migrations/2024_02_17_165223_create_salutation_translation_table.php b/dev/archive/_old/migrations/2024_02_17_165223_create_salutation_translation_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165223_create_salutation_translation_table.php rename to dev/archive/_old/migrations/2024_02_17_165223_create_salutation_translation_table.php diff --git a/dev/_old/migrations/2024_02_17_165223_create_sf_guard_group_permission_table.php b/dev/archive/_old/migrations/2024_02_17_165223_create_sf_guard_group_permission_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165223_create_sf_guard_group_permission_table.php rename to dev/archive/_old/migrations/2024_02_17_165223_create_sf_guard_group_permission_table.php diff --git a/dev/_old/migrations/2024_02_17_165223_create_sf_guard_group_table.php b/dev/archive/_old/migrations/2024_02_17_165223_create_sf_guard_group_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165223_create_sf_guard_group_table.php rename to dev/archive/_old/migrations/2024_02_17_165223_create_sf_guard_group_table.php diff --git a/dev/_old/migrations/2024_02_17_165223_create_sf_guard_permission_table.php b/dev/archive/_old/migrations/2024_02_17_165223_create_sf_guard_permission_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165223_create_sf_guard_permission_table.php rename to dev/archive/_old/migrations/2024_02_17_165223_create_sf_guard_permission_table.php diff --git a/dev/_old/migrations/2024_02_17_165224_create_sf_guard_remember_key_table.php b/dev/archive/_old/migrations/2024_02_17_165224_create_sf_guard_remember_key_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165224_create_sf_guard_remember_key_table.php rename to dev/archive/_old/migrations/2024_02_17_165224_create_sf_guard_remember_key_table.php diff --git a/dev/_old/migrations/2024_02_17_165224_create_sf_guard_user_group_table.php b/dev/archive/_old/migrations/2024_02_17_165224_create_sf_guard_user_group_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165224_create_sf_guard_user_group_table.php rename to dev/archive/_old/migrations/2024_02_17_165224_create_sf_guard_user_group_table.php diff --git a/dev/_old/migrations/2024_02_17_165224_create_sf_guard_user_table.php b/dev/archive/_old/migrations/2024_02_17_165224_create_sf_guard_user_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165224_create_sf_guard_user_table.php rename to dev/archive/_old/migrations/2024_02_17_165224_create_sf_guard_user_table.php diff --git a/dev/_old/migrations/2024_02_17_165225_create_sf_guard_user_permission_table.php b/dev/archive/_old/migrations/2024_02_17_165225_create_sf_guard_user_permission_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165225_create_sf_guard_user_permission_table.php rename to dev/archive/_old/migrations/2024_02_17_165225_create_sf_guard_user_permission_table.php diff --git a/dev/_old/migrations/2024_02_17_165225_create_sf_guard_user_profile_table.php b/dev/archive/_old/migrations/2024_02_17_165225_create_sf_guard_user_profile_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165225_create_sf_guard_user_profile_table.php rename to dev/archive/_old/migrations/2024_02_17_165225_create_sf_guard_user_profile_table.php diff --git a/dev/_old/migrations/2024_02_17_165225_create_user_billing_address_table.php b/dev/archive/_old/migrations/2024_02_17_165225_create_user_billing_address_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165225_create_user_billing_address_table.php rename to dev/archive/_old/migrations/2024_02_17_165225_create_user_billing_address_table.php diff --git a/dev/_old/migrations/2024_02_17_165225_create_user_payment_table.php b/dev/archive/_old/migrations/2024_02_17_165225_create_user_payment_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165225_create_user_payment_table.php rename to dev/archive/_old/migrations/2024_02_17_165225_create_user_payment_table.php diff --git a/dev/_old/migrations/2024_02_17_165226_create_user_payment_option_company_table.php b/dev/archive/_old/migrations/2024_02_17_165226_create_user_payment_option_company_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165226_create_user_payment_option_company_table.php rename to dev/archive/_old/migrations/2024_02_17_165226_create_user_payment_option_company_table.php diff --git a/dev/_old/migrations/2024_02_17_165226_create_user_payment_option_reference_table.php b/dev/archive/_old/migrations/2024_02_17_165226_create_user_payment_option_reference_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165226_create_user_payment_option_reference_table.php rename to dev/archive/_old/migrations/2024_02_17_165226_create_user_payment_option_reference_table.php diff --git a/dev/_old/migrations/2024_02_17_165226_create_user_payment_option_table.php b/dev/archive/_old/migrations/2024_02_17_165226_create_user_payment_option_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165226_create_user_payment_option_table.php rename to dev/archive/_old/migrations/2024_02_17_165226_create_user_payment_option_table.php diff --git a/dev/_old/migrations/2024_02_17_165227_add_foreign_key_to_api_user_table.php b/dev/archive/_old/migrations/2024_02_17_165227_add_foreign_key_to_api_user_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165227_add_foreign_key_to_api_user_table.php rename to dev/archive/_old/migrations/2024_02_17_165227_add_foreign_key_to_api_user_table.php diff --git a/dev/_old/migrations/2024_02_17_165228_add_foreign_key_to_category_footer_code_table.php b/dev/archive/_old/migrations/2024_02_17_165228_add_foreign_key_to_category_footer_code_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165228_add_foreign_key_to_category_footer_code_table.php rename to dev/archive/_old/migrations/2024_02_17_165228_add_foreign_key_to_category_footer_code_table.php diff --git a/dev/_old/migrations/2024_02_17_165228_add_foreign_key_to_category_translation_table.php b/dev/archive/_old/migrations/2024_02_17_165228_add_foreign_key_to_category_translation_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165228_add_foreign_key_to_category_translation_table.php rename to dev/archive/_old/migrations/2024_02_17_165228_add_foreign_key_to_category_translation_table.php diff --git a/dev/_old/migrations/2024_02_17_165228_add_foreign_key_to_company_table.php b/dev/archive/_old/migrations/2024_02_17_165228_add_foreign_key_to_company_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165228_add_foreign_key_to_company_table.php rename to dev/archive/_old/migrations/2024_02_17_165228_add_foreign_key_to_company_table.php diff --git a/dev/_old/migrations/2024_02_17_165228_add_foreign_key_to_company_user_table.php b/dev/archive/_old/migrations/2024_02_17_165228_add_foreign_key_to_company_user_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165228_add_foreign_key_to_company_user_table.php rename to dev/archive/_old/migrations/2024_02_17_165228_add_foreign_key_to_company_user_table.php diff --git a/dev/_old/migrations/2024_02_17_165228_add_foreign_key_to_contact_table.php b/dev/archive/_old/migrations/2024_02_17_165228_add_foreign_key_to_contact_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165228_add_foreign_key_to_contact_table.php rename to dev/archive/_old/migrations/2024_02_17_165228_add_foreign_key_to_contact_table.php diff --git a/dev/_old/migrations/2024_02_17_165228_add_foreign_key_to_coupon_table.php b/dev/archive/_old/migrations/2024_02_17_165228_add_foreign_key_to_coupon_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165228_add_foreign_key_to_coupon_table.php rename to dev/archive/_old/migrations/2024_02_17_165228_add_foreign_key_to_coupon_table.php diff --git a/dev/_old/migrations/2024_02_17_165228_add_foreign_key_to_invoice_table.php b/dev/archive/_old/migrations/2024_02_17_165228_add_foreign_key_to_invoice_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165228_add_foreign_key_to_invoice_table.php rename to dev/archive/_old/migrations/2024_02_17_165228_add_foreign_key_to_invoice_table.php diff --git a/dev/_old/migrations/2024_02_17_165229_add_foreign_key_to_invoice_billing_address_table.php b/dev/archive/_old/migrations/2024_02_17_165229_add_foreign_key_to_invoice_billing_address_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165229_add_foreign_key_to_invoice_billing_address_table.php rename to dev/archive/_old/migrations/2024_02_17_165229_add_foreign_key_to_invoice_billing_address_table.php diff --git a/dev/_old/migrations/2024_02_17_165229_add_foreign_key_to_newsletter_subscription_table.php b/dev/archive/_old/migrations/2024_02_17_165229_add_foreign_key_to_newsletter_subscription_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165229_add_foreign_key_to_newsletter_subscription_table.php rename to dev/archive/_old/migrations/2024_02_17_165229_add_foreign_key_to_newsletter_subscription_table.php diff --git a/dev/_old/migrations/2024_02_17_165229_add_foreign_key_to_payment_option_access_group_table.php b/dev/archive/_old/migrations/2024_02_17_165229_add_foreign_key_to_payment_option_access_group_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165229_add_foreign_key_to_payment_option_access_group_table.php rename to dev/archive/_old/migrations/2024_02_17_165229_add_foreign_key_to_payment_option_access_group_table.php diff --git a/dev/_old/migrations/2024_02_17_165229_add_foreign_key_to_payment_option_exclude_group_table.php b/dev/archive/_old/migrations/2024_02_17_165229_add_foreign_key_to_payment_option_exclude_group_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165229_add_foreign_key_to_payment_option_exclude_group_table.php rename to dev/archive/_old/migrations/2024_02_17_165229_add_foreign_key_to_payment_option_exclude_group_table.php diff --git a/dev/_old/migrations/2024_02_17_165229_add_foreign_key_to_payment_option_reference_table.php b/dev/archive/_old/migrations/2024_02_17_165229_add_foreign_key_to_payment_option_reference_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165229_add_foreign_key_to_payment_option_reference_table.php rename to dev/archive/_old/migrations/2024_02_17_165229_add_foreign_key_to_payment_option_reference_table.php diff --git a/dev/_old/migrations/2024_02_17_165229_add_foreign_key_to_payment_option_translation_table.php b/dev/archive/_old/migrations/2024_02_17_165229_add_foreign_key_to_payment_option_translation_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165229_add_foreign_key_to_payment_option_translation_table.php rename to dev/archive/_old/migrations/2024_02_17_165229_add_foreign_key_to_payment_option_translation_table.php diff --git a/dev/_old/migrations/2024_02_17_165229_add_foreign_key_to_press_release_table.php b/dev/archive/_old/migrations/2024_02_17_165229_add_foreign_key_to_press_release_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165229_add_foreign_key_to_press_release_table.php rename to dev/archive/_old/migrations/2024_02_17_165229_add_foreign_key_to_press_release_table.php diff --git a/dev/_old/migrations/2024_02_17_165230_add_foreign_key_to_press_release_contact_table.php b/dev/archive/_old/migrations/2024_02_17_165230_add_foreign_key_to_press_release_contact_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165230_add_foreign_key_to_press_release_contact_table.php rename to dev/archive/_old/migrations/2024_02_17_165230_add_foreign_key_to_press_release_contact_table.php diff --git a/dev/_old/migrations/2024_02_17_165230_add_foreign_key_to_press_release_image_old_table.php b/dev/archive/_old/migrations/2024_02_17_165230_add_foreign_key_to_press_release_image_old_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165230_add_foreign_key_to_press_release_image_old_table.php rename to dev/archive/_old/migrations/2024_02_17_165230_add_foreign_key_to_press_release_image_old_table.php diff --git a/dev/_old/migrations/2024_02_17_165230_add_foreign_key_to_promotion_link_category_table.php b/dev/archive/_old/migrations/2024_02_17_165230_add_foreign_key_to_promotion_link_category_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165230_add_foreign_key_to_promotion_link_category_table.php rename to dev/archive/_old/migrations/2024_02_17_165230_add_foreign_key_to_promotion_link_category_table.php diff --git a/dev/_old/migrations/2024_02_17_165230_add_foreign_key_to_responsible_company_user_table.php b/dev/archive/_old/migrations/2024_02_17_165230_add_foreign_key_to_responsible_company_user_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165230_add_foreign_key_to_responsible_company_user_table.php rename to dev/archive/_old/migrations/2024_02_17_165230_add_foreign_key_to_responsible_company_user_table.php diff --git a/dev/_old/migrations/2024_02_17_165230_add_foreign_key_to_salutation_translation_table.php b/dev/archive/_old/migrations/2024_02_17_165230_add_foreign_key_to_salutation_translation_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165230_add_foreign_key_to_salutation_translation_table.php rename to dev/archive/_old/migrations/2024_02_17_165230_add_foreign_key_to_salutation_translation_table.php diff --git a/dev/_old/migrations/2024_02_17_165230_add_foreign_key_to_sf_guard_group_permission_table.php b/dev/archive/_old/migrations/2024_02_17_165230_add_foreign_key_to_sf_guard_group_permission_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165230_add_foreign_key_to_sf_guard_group_permission_table.php rename to dev/archive/_old/migrations/2024_02_17_165230_add_foreign_key_to_sf_guard_group_permission_table.php diff --git a/dev/_old/migrations/2024_02_17_165231_add_foreign_key_to_sf_guard_remember_key_table.php b/dev/archive/_old/migrations/2024_02_17_165231_add_foreign_key_to_sf_guard_remember_key_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165231_add_foreign_key_to_sf_guard_remember_key_table.php rename to dev/archive/_old/migrations/2024_02_17_165231_add_foreign_key_to_sf_guard_remember_key_table.php diff --git a/dev/_old/migrations/2024_02_17_165231_add_foreign_key_to_sf_guard_user_group_table.php b/dev/archive/_old/migrations/2024_02_17_165231_add_foreign_key_to_sf_guard_user_group_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165231_add_foreign_key_to_sf_guard_user_group_table.php rename to dev/archive/_old/migrations/2024_02_17_165231_add_foreign_key_to_sf_guard_user_group_table.php diff --git a/dev/_old/migrations/2024_02_17_165231_add_foreign_key_to_sf_guard_user_permission_table.php b/dev/archive/_old/migrations/2024_02_17_165231_add_foreign_key_to_sf_guard_user_permission_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165231_add_foreign_key_to_sf_guard_user_permission_table.php rename to dev/archive/_old/migrations/2024_02_17_165231_add_foreign_key_to_sf_guard_user_permission_table.php diff --git a/dev/_old/migrations/2024_02_17_165231_add_foreign_key_to_sf_guard_user_profile_table.php b/dev/archive/_old/migrations/2024_02_17_165231_add_foreign_key_to_sf_guard_user_profile_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165231_add_foreign_key_to_sf_guard_user_profile_table.php rename to dev/archive/_old/migrations/2024_02_17_165231_add_foreign_key_to_sf_guard_user_profile_table.php diff --git a/dev/_old/migrations/2024_02_17_165231_add_foreign_key_to_user_billing_address_table.php b/dev/archive/_old/migrations/2024_02_17_165231_add_foreign_key_to_user_billing_address_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165231_add_foreign_key_to_user_billing_address_table.php rename to dev/archive/_old/migrations/2024_02_17_165231_add_foreign_key_to_user_billing_address_table.php diff --git a/dev/_old/migrations/2024_02_17_165231_add_foreign_key_to_user_payment_option_table.php b/dev/archive/_old/migrations/2024_02_17_165231_add_foreign_key_to_user_payment_option_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165231_add_foreign_key_to_user_payment_option_table.php rename to dev/archive/_old/migrations/2024_02_17_165231_add_foreign_key_to_user_payment_option_table.php diff --git a/dev/_old/migrations/2024_02_17_165231_add_foreign_key_to_user_payment_table.php b/dev/archive/_old/migrations/2024_02_17_165231_add_foreign_key_to_user_payment_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165231_add_foreign_key_to_user_payment_table.php rename to dev/archive/_old/migrations/2024_02_17_165231_add_foreign_key_to_user_payment_table.php diff --git a/dev/_old/migrations/2024_02_17_165232_add_foreign_key_to_user_payment_option_company_table.php b/dev/archive/_old/migrations/2024_02_17_165232_add_foreign_key_to_user_payment_option_company_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165232_add_foreign_key_to_user_payment_option_company_table.php rename to dev/archive/_old/migrations/2024_02_17_165232_add_foreign_key_to_user_payment_option_company_table.php diff --git a/dev/_old/migrations/2024_02_17_165232_add_foreign_key_to_user_payment_option_reference_table.php b/dev/archive/_old/migrations/2024_02_17_165232_add_foreign_key_to_user_payment_option_reference_table.php similarity index 100% rename from dev/_old/migrations/2024_02_17_165232_add_foreign_key_to_user_payment_option_reference_table.php rename to dev/archive/_old/migrations/2024_02_17_165232_add_foreign_key_to_user_payment_option_reference_table.php diff --git a/dev/_old/presswave/.gitignore b/dev/archive/_old/presswave/.gitignore similarity index 100% rename from dev/_old/presswave/.gitignore rename to dev/archive/_old/presswave/.gitignore diff --git a/dev/_old/presswave/MIGRATION-TO-LARAVEL.md b/dev/archive/_old/presswave/MIGRATION-TO-LARAVEL.md similarity index 100% rename from dev/_old/presswave/MIGRATION-TO-LARAVEL.md rename to dev/archive/_old/presswave/MIGRATION-TO-LARAVEL.md diff --git a/dev/_old/presswave/README-CONVERSION.md b/dev/archive/_old/presswave/README-CONVERSION.md similarity index 100% rename from dev/_old/presswave/README-CONVERSION.md rename to dev/archive/_old/presswave/README-CONVERSION.md diff --git a/dev/_old/presswave/README.md b/dev/archive/_old/presswave/README.md similarity index 100% rename from dev/_old/presswave/README.md rename to dev/archive/_old/presswave/README.md diff --git a/dev/_old/presswave/bun.lockb b/dev/archive/_old/presswave/bun.lockb similarity index 100% rename from dev/_old/presswave/bun.lockb rename to dev/archive/_old/presswave/bun.lockb diff --git a/dev/_old/presswave/components.json b/dev/archive/_old/presswave/components.json similarity index 100% rename from dev/_old/presswave/components.json rename to dev/archive/_old/presswave/components.json diff --git a/dev/_old/presswave/eslint.config.js b/dev/archive/_old/presswave/eslint.config.js similarity index 100% rename from dev/_old/presswave/eslint.config.js rename to dev/archive/_old/presswave/eslint.config.js diff --git a/dev/_old/presswave/index.html b/dev/archive/_old/presswave/index.html similarity index 100% rename from dev/_old/presswave/index.html rename to dev/archive/_old/presswave/index.html diff --git a/dev/_old/presswave/package-lock.json b/dev/archive/_old/presswave/package-lock.json similarity index 100% rename from dev/_old/presswave/package-lock.json rename to dev/archive/_old/presswave/package-lock.json diff --git a/dev/_old/presswave/package.json b/dev/archive/_old/presswave/package.json similarity index 100% rename from dev/_old/presswave/package.json rename to dev/archive/_old/presswave/package.json diff --git a/dev/_old/presswave/postcss.config.js b/dev/archive/_old/presswave/postcss.config.js similarity index 100% rename from dev/_old/presswave/postcss.config.js rename to dev/archive/_old/presswave/postcss.config.js diff --git a/dev/_old/presswave/public/favicon.ico b/dev/archive/_old/presswave/public/favicon.ico similarity index 100% rename from dev/_old/presswave/public/favicon.ico rename to dev/archive/_old/presswave/public/favicon.ico diff --git a/dev/_old/presswave/public/placeholder.svg b/dev/archive/_old/presswave/public/placeholder.svg similarity index 100% rename from dev/_old/presswave/public/placeholder.svg rename to dev/archive/_old/presswave/public/placeholder.svg diff --git a/dev/_old/presswave/public/robots.txt b/dev/archive/_old/presswave/public/robots.txt similarity index 100% rename from dev/_old/presswave/public/robots.txt rename to dev/archive/_old/presswave/public/robots.txt diff --git a/dev/_old/presswave/src/App.css b/dev/archive/_old/presswave/src/App.css similarity index 100% rename from dev/_old/presswave/src/App.css rename to dev/archive/_old/presswave/src/App.css diff --git a/dev/_old/presswave/src/App.tsx b/dev/archive/_old/presswave/src/App.tsx similarity index 100% rename from dev/_old/presswave/src/App.tsx rename to dev/archive/_old/presswave/src/App.tsx diff --git a/dev/_old/presswave/src/assets/businessportal.svg b/dev/archive/_old/presswave/src/assets/businessportal.svg similarity index 100% rename from dev/_old/presswave/src/assets/businessportal.svg rename to dev/archive/_old/presswave/src/assets/businessportal.svg diff --git a/dev/_old/presswave/src/assets/press-ai-automation.jpg b/dev/archive/_old/presswave/src/assets/press-ai-automation.jpg similarity index 100% rename from dev/_old/presswave/src/assets/press-ai-automation.jpg rename to dev/archive/_old/presswave/src/assets/press-ai-automation.jpg diff --git a/dev/_old/presswave/src/assets/press-emobility.jpg b/dev/archive/_old/presswave/src/assets/press-emobility.jpg similarity index 100% rename from dev/_old/presswave/src/assets/press-emobility.jpg rename to dev/archive/_old/presswave/src/assets/press-emobility.jpg diff --git a/dev/_old/presswave/src/assets/press-example-hero.jpg b/dev/archive/_old/presswave/src/assets/press-example-hero.jpg similarity index 100% rename from dev/_old/presswave/src/assets/press-example-hero.jpg rename to dev/archive/_old/presswave/src/assets/press-example-hero.jpg diff --git a/dev/_old/presswave/src/assets/press-renewable-energy.jpg b/dev/archive/_old/presswave/src/assets/press-renewable-energy.jpg similarity index 100% rename from dev/_old/presswave/src/assets/press-renewable-energy.jpg rename to dev/archive/_old/presswave/src/assets/press-renewable-energy.jpg diff --git a/dev/_old/presswave/src/components/BurgerMenu.tsx b/dev/archive/_old/presswave/src/components/BurgerMenu.tsx similarity index 100% rename from dev/_old/presswave/src/components/BurgerMenu.tsx rename to dev/archive/_old/presswave/src/components/BurgerMenu.tsx diff --git a/dev/_old/presswave/src/components/FilterBar.tsx b/dev/archive/_old/presswave/src/components/FilterBar.tsx similarity index 100% rename from dev/_old/presswave/src/components/FilterBar.tsx rename to dev/archive/_old/presswave/src/components/FilterBar.tsx diff --git a/dev/_old/presswave/src/components/Header.tsx b/dev/archive/_old/presswave/src/components/Header.tsx similarity index 100% rename from dev/_old/presswave/src/components/Header.tsx rename to dev/archive/_old/presswave/src/components/Header.tsx diff --git a/dev/_old/presswave/src/components/PressReleaseCard.tsx b/dev/archive/_old/presswave/src/components/PressReleaseCard.tsx similarity index 100% rename from dev/_old/presswave/src/components/PressReleaseCard.tsx rename to dev/archive/_old/presswave/src/components/PressReleaseCard.tsx diff --git a/dev/_old/presswave/src/components/ThemeProvider.tsx b/dev/archive/_old/presswave/src/components/ThemeProvider.tsx similarity index 100% rename from dev/_old/presswave/src/components/ThemeProvider.tsx rename to dev/archive/_old/presswave/src/components/ThemeProvider.tsx diff --git a/dev/_old/presswave/src/components/ThemeToggle.tsx b/dev/archive/_old/presswave/src/components/ThemeToggle.tsx similarity index 100% rename from dev/_old/presswave/src/components/ThemeToggle.tsx rename to dev/archive/_old/presswave/src/components/ThemeToggle.tsx diff --git a/dev/_old/presswave/src/components/ui/accordion.tsx b/dev/archive/_old/presswave/src/components/ui/accordion.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/accordion.tsx rename to dev/archive/_old/presswave/src/components/ui/accordion.tsx diff --git a/dev/_old/presswave/src/components/ui/alert-dialog.tsx b/dev/archive/_old/presswave/src/components/ui/alert-dialog.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/alert-dialog.tsx rename to dev/archive/_old/presswave/src/components/ui/alert-dialog.tsx diff --git a/dev/_old/presswave/src/components/ui/alert.tsx b/dev/archive/_old/presswave/src/components/ui/alert.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/alert.tsx rename to dev/archive/_old/presswave/src/components/ui/alert.tsx diff --git a/dev/_old/presswave/src/components/ui/aspect-ratio.tsx b/dev/archive/_old/presswave/src/components/ui/aspect-ratio.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/aspect-ratio.tsx rename to dev/archive/_old/presswave/src/components/ui/aspect-ratio.tsx diff --git a/dev/_old/presswave/src/components/ui/avatar.tsx b/dev/archive/_old/presswave/src/components/ui/avatar.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/avatar.tsx rename to dev/archive/_old/presswave/src/components/ui/avatar.tsx diff --git a/dev/_old/presswave/src/components/ui/badge.tsx b/dev/archive/_old/presswave/src/components/ui/badge.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/badge.tsx rename to dev/archive/_old/presswave/src/components/ui/badge.tsx diff --git a/dev/_old/presswave/src/components/ui/breadcrumb.tsx b/dev/archive/_old/presswave/src/components/ui/breadcrumb.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/breadcrumb.tsx rename to dev/archive/_old/presswave/src/components/ui/breadcrumb.tsx diff --git a/dev/_old/presswave/src/components/ui/button.tsx b/dev/archive/_old/presswave/src/components/ui/button.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/button.tsx rename to dev/archive/_old/presswave/src/components/ui/button.tsx diff --git a/dev/_old/presswave/src/components/ui/calendar.tsx b/dev/archive/_old/presswave/src/components/ui/calendar.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/calendar.tsx rename to dev/archive/_old/presswave/src/components/ui/calendar.tsx diff --git a/dev/_old/presswave/src/components/ui/card.tsx b/dev/archive/_old/presswave/src/components/ui/card.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/card.tsx rename to dev/archive/_old/presswave/src/components/ui/card.tsx diff --git a/dev/_old/presswave/src/components/ui/carousel.tsx b/dev/archive/_old/presswave/src/components/ui/carousel.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/carousel.tsx rename to dev/archive/_old/presswave/src/components/ui/carousel.tsx diff --git a/dev/_old/presswave/src/components/ui/chart.tsx b/dev/archive/_old/presswave/src/components/ui/chart.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/chart.tsx rename to dev/archive/_old/presswave/src/components/ui/chart.tsx diff --git a/dev/_old/presswave/src/components/ui/checkbox.tsx b/dev/archive/_old/presswave/src/components/ui/checkbox.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/checkbox.tsx rename to dev/archive/_old/presswave/src/components/ui/checkbox.tsx diff --git a/dev/_old/presswave/src/components/ui/collapsible.tsx b/dev/archive/_old/presswave/src/components/ui/collapsible.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/collapsible.tsx rename to dev/archive/_old/presswave/src/components/ui/collapsible.tsx diff --git a/dev/_old/presswave/src/components/ui/command.tsx b/dev/archive/_old/presswave/src/components/ui/command.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/command.tsx rename to dev/archive/_old/presswave/src/components/ui/command.tsx diff --git a/dev/_old/presswave/src/components/ui/context-menu.tsx b/dev/archive/_old/presswave/src/components/ui/context-menu.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/context-menu.tsx rename to dev/archive/_old/presswave/src/components/ui/context-menu.tsx diff --git a/dev/_old/presswave/src/components/ui/dialog.tsx b/dev/archive/_old/presswave/src/components/ui/dialog.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/dialog.tsx rename to dev/archive/_old/presswave/src/components/ui/dialog.tsx diff --git a/dev/_old/presswave/src/components/ui/drawer.tsx b/dev/archive/_old/presswave/src/components/ui/drawer.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/drawer.tsx rename to dev/archive/_old/presswave/src/components/ui/drawer.tsx diff --git a/dev/_old/presswave/src/components/ui/dropdown-menu.tsx b/dev/archive/_old/presswave/src/components/ui/dropdown-menu.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/dropdown-menu.tsx rename to dev/archive/_old/presswave/src/components/ui/dropdown-menu.tsx diff --git a/dev/_old/presswave/src/components/ui/form.tsx b/dev/archive/_old/presswave/src/components/ui/form.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/form.tsx rename to dev/archive/_old/presswave/src/components/ui/form.tsx diff --git a/dev/_old/presswave/src/components/ui/hover-card.tsx b/dev/archive/_old/presswave/src/components/ui/hover-card.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/hover-card.tsx rename to dev/archive/_old/presswave/src/components/ui/hover-card.tsx diff --git a/dev/_old/presswave/src/components/ui/input-otp.tsx b/dev/archive/_old/presswave/src/components/ui/input-otp.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/input-otp.tsx rename to dev/archive/_old/presswave/src/components/ui/input-otp.tsx diff --git a/dev/_old/presswave/src/components/ui/input.tsx b/dev/archive/_old/presswave/src/components/ui/input.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/input.tsx rename to dev/archive/_old/presswave/src/components/ui/input.tsx diff --git a/dev/_old/presswave/src/components/ui/label.tsx b/dev/archive/_old/presswave/src/components/ui/label.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/label.tsx rename to dev/archive/_old/presswave/src/components/ui/label.tsx diff --git a/dev/_old/presswave/src/components/ui/menubar.tsx b/dev/archive/_old/presswave/src/components/ui/menubar.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/menubar.tsx rename to dev/archive/_old/presswave/src/components/ui/menubar.tsx diff --git a/dev/_old/presswave/src/components/ui/navigation-menu.tsx b/dev/archive/_old/presswave/src/components/ui/navigation-menu.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/navigation-menu.tsx rename to dev/archive/_old/presswave/src/components/ui/navigation-menu.tsx diff --git a/dev/_old/presswave/src/components/ui/pagination.tsx b/dev/archive/_old/presswave/src/components/ui/pagination.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/pagination.tsx rename to dev/archive/_old/presswave/src/components/ui/pagination.tsx diff --git a/dev/_old/presswave/src/components/ui/popover.tsx b/dev/archive/_old/presswave/src/components/ui/popover.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/popover.tsx rename to dev/archive/_old/presswave/src/components/ui/popover.tsx diff --git a/dev/_old/presswave/src/components/ui/progress.tsx b/dev/archive/_old/presswave/src/components/ui/progress.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/progress.tsx rename to dev/archive/_old/presswave/src/components/ui/progress.tsx diff --git a/dev/_old/presswave/src/components/ui/radio-group.tsx b/dev/archive/_old/presswave/src/components/ui/radio-group.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/radio-group.tsx rename to dev/archive/_old/presswave/src/components/ui/radio-group.tsx diff --git a/dev/_old/presswave/src/components/ui/resizable.tsx b/dev/archive/_old/presswave/src/components/ui/resizable.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/resizable.tsx rename to dev/archive/_old/presswave/src/components/ui/resizable.tsx diff --git a/dev/_old/presswave/src/components/ui/scroll-area.tsx b/dev/archive/_old/presswave/src/components/ui/scroll-area.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/scroll-area.tsx rename to dev/archive/_old/presswave/src/components/ui/scroll-area.tsx diff --git a/dev/_old/presswave/src/components/ui/select.tsx b/dev/archive/_old/presswave/src/components/ui/select.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/select.tsx rename to dev/archive/_old/presswave/src/components/ui/select.tsx diff --git a/dev/_old/presswave/src/components/ui/separator.tsx b/dev/archive/_old/presswave/src/components/ui/separator.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/separator.tsx rename to dev/archive/_old/presswave/src/components/ui/separator.tsx diff --git a/dev/_old/presswave/src/components/ui/sheet.tsx b/dev/archive/_old/presswave/src/components/ui/sheet.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/sheet.tsx rename to dev/archive/_old/presswave/src/components/ui/sheet.tsx diff --git a/dev/_old/presswave/src/components/ui/sidebar.tsx b/dev/archive/_old/presswave/src/components/ui/sidebar.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/sidebar.tsx rename to dev/archive/_old/presswave/src/components/ui/sidebar.tsx diff --git a/dev/_old/presswave/src/components/ui/skeleton.tsx b/dev/archive/_old/presswave/src/components/ui/skeleton.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/skeleton.tsx rename to dev/archive/_old/presswave/src/components/ui/skeleton.tsx diff --git a/dev/_old/presswave/src/components/ui/slider.tsx b/dev/archive/_old/presswave/src/components/ui/slider.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/slider.tsx rename to dev/archive/_old/presswave/src/components/ui/slider.tsx diff --git a/dev/_old/presswave/src/components/ui/sonner.tsx b/dev/archive/_old/presswave/src/components/ui/sonner.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/sonner.tsx rename to dev/archive/_old/presswave/src/components/ui/sonner.tsx diff --git a/dev/_old/presswave/src/components/ui/switch.tsx b/dev/archive/_old/presswave/src/components/ui/switch.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/switch.tsx rename to dev/archive/_old/presswave/src/components/ui/switch.tsx diff --git a/dev/_old/presswave/src/components/ui/table.tsx b/dev/archive/_old/presswave/src/components/ui/table.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/table.tsx rename to dev/archive/_old/presswave/src/components/ui/table.tsx diff --git a/dev/_old/presswave/src/components/ui/tabs.tsx b/dev/archive/_old/presswave/src/components/ui/tabs.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/tabs.tsx rename to dev/archive/_old/presswave/src/components/ui/tabs.tsx diff --git a/dev/_old/presswave/src/components/ui/textarea.tsx b/dev/archive/_old/presswave/src/components/ui/textarea.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/textarea.tsx rename to dev/archive/_old/presswave/src/components/ui/textarea.tsx diff --git a/dev/_old/presswave/src/components/ui/toast.tsx b/dev/archive/_old/presswave/src/components/ui/toast.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/toast.tsx rename to dev/archive/_old/presswave/src/components/ui/toast.tsx diff --git a/dev/_old/presswave/src/components/ui/toaster.tsx b/dev/archive/_old/presswave/src/components/ui/toaster.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/toaster.tsx rename to dev/archive/_old/presswave/src/components/ui/toaster.tsx diff --git a/dev/_old/presswave/src/components/ui/toggle-group.tsx b/dev/archive/_old/presswave/src/components/ui/toggle-group.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/toggle-group.tsx rename to dev/archive/_old/presswave/src/components/ui/toggle-group.tsx diff --git a/dev/_old/presswave/src/components/ui/toggle.tsx b/dev/archive/_old/presswave/src/components/ui/toggle.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/toggle.tsx rename to dev/archive/_old/presswave/src/components/ui/toggle.tsx diff --git a/dev/_old/presswave/src/components/ui/tooltip.tsx b/dev/archive/_old/presswave/src/components/ui/tooltip.tsx similarity index 100% rename from dev/_old/presswave/src/components/ui/tooltip.tsx rename to dev/archive/_old/presswave/src/components/ui/tooltip.tsx diff --git a/dev/_old/presswave/src/components/ui/use-toast.ts b/dev/archive/_old/presswave/src/components/ui/use-toast.ts similarity index 100% rename from dev/_old/presswave/src/components/ui/use-toast.ts rename to dev/archive/_old/presswave/src/components/ui/use-toast.ts diff --git a/dev/_old/presswave/src/hooks/use-mobile.tsx b/dev/archive/_old/presswave/src/hooks/use-mobile.tsx similarity index 100% rename from dev/_old/presswave/src/hooks/use-mobile.tsx rename to dev/archive/_old/presswave/src/hooks/use-mobile.tsx diff --git a/dev/_old/presswave/src/hooks/use-toast.ts b/dev/archive/_old/presswave/src/hooks/use-toast.ts similarity index 100% rename from dev/_old/presswave/src/hooks/use-toast.ts rename to dev/archive/_old/presswave/src/hooks/use-toast.ts diff --git a/dev/_old/presswave/src/index.css b/dev/archive/_old/presswave/src/index.css similarity index 100% rename from dev/_old/presswave/src/index.css rename to dev/archive/_old/presswave/src/index.css diff --git a/dev/_old/presswave/src/lib/utils.ts b/dev/archive/_old/presswave/src/lib/utils.ts similarity index 100% rename from dev/_old/presswave/src/lib/utils.ts rename to dev/archive/_old/presswave/src/lib/utils.ts diff --git a/dev/_old/presswave/src/main.tsx b/dev/archive/_old/presswave/src/main.tsx similarity index 100% rename from dev/_old/presswave/src/main.tsx rename to dev/archive/_old/presswave/src/main.tsx diff --git a/dev/_old/presswave/src/pages/FAQ.tsx b/dev/archive/_old/presswave/src/pages/FAQ.tsx similarity index 100% rename from dev/_old/presswave/src/pages/FAQ.tsx rename to dev/archive/_old/presswave/src/pages/FAQ.tsx diff --git a/dev/_old/presswave/src/pages/Index.tsx b/dev/archive/_old/presswave/src/pages/Index.tsx similarity index 100% rename from dev/_old/presswave/src/pages/Index.tsx rename to dev/archive/_old/presswave/src/pages/Index.tsx diff --git a/dev/_old/presswave/src/pages/KategorieIT.tsx b/dev/archive/_old/presswave/src/pages/KategorieIT.tsx similarity index 100% rename from dev/_old/presswave/src/pages/KategorieIT.tsx rename to dev/archive/_old/presswave/src/pages/KategorieIT.tsx diff --git a/dev/_old/presswave/src/pages/Kontakt.tsx b/dev/archive/_old/presswave/src/pages/Kontakt.tsx similarity index 100% rename from dev/_old/presswave/src/pages/Kontakt.tsx rename to dev/archive/_old/presswave/src/pages/Kontakt.tsx diff --git a/dev/_old/presswave/src/pages/NotFound.tsx b/dev/archive/_old/presswave/src/pages/NotFound.tsx similarity index 100% rename from dev/_old/presswave/src/pages/NotFound.tsx rename to dev/archive/_old/presswave/src/pages/NotFound.tsx diff --git a/dev/_old/presswave/src/pages/Preise.tsx b/dev/archive/_old/presswave/src/pages/Preise.tsx similarity index 100% rename from dev/_old/presswave/src/pages/Preise.tsx rename to dev/archive/_old/presswave/src/pages/Preise.tsx diff --git a/dev/_old/presswave/src/pages/PressExample.tsx b/dev/archive/_old/presswave/src/pages/PressExample.tsx similarity index 100% rename from dev/_old/presswave/src/pages/PressExample.tsx rename to dev/archive/_old/presswave/src/pages/PressExample.tsx diff --git a/dev/_old/presswave/src/pages/ReleaseDetail.tsx b/dev/archive/_old/presswave/src/pages/ReleaseDetail.tsx similarity index 100% rename from dev/_old/presswave/src/pages/ReleaseDetail.tsx rename to dev/archive/_old/presswave/src/pages/ReleaseDetail.tsx diff --git a/dev/_old/presswave/src/pages/UeberUns.tsx b/dev/archive/_old/presswave/src/pages/UeberUns.tsx similarity index 100% rename from dev/_old/presswave/src/pages/UeberUns.tsx rename to dev/archive/_old/presswave/src/pages/UeberUns.tsx diff --git a/dev/_old/presswave/src/vite-env.d.ts b/dev/archive/_old/presswave/src/vite-env.d.ts similarity index 100% rename from dev/_old/presswave/src/vite-env.d.ts rename to dev/archive/_old/presswave/src/vite-env.d.ts diff --git a/dev/_old/presswave/tailwind.config.ts b/dev/archive/_old/presswave/tailwind.config.ts similarity index 100% rename from dev/_old/presswave/tailwind.config.ts rename to dev/archive/_old/presswave/tailwind.config.ts diff --git a/dev/_old/presswave/tsconfig.app.json b/dev/archive/_old/presswave/tsconfig.app.json similarity index 100% rename from dev/_old/presswave/tsconfig.app.json rename to dev/archive/_old/presswave/tsconfig.app.json diff --git a/dev/_old/presswave/tsconfig.json b/dev/archive/_old/presswave/tsconfig.json similarity index 100% rename from dev/_old/presswave/tsconfig.json rename to dev/archive/_old/presswave/tsconfig.json diff --git a/dev/_old/presswave/tsconfig.node.json b/dev/archive/_old/presswave/tsconfig.node.json similarity index 100% rename from dev/_old/presswave/tsconfig.node.json rename to dev/archive/_old/presswave/tsconfig.node.json diff --git a/dev/_old/presswave/vite.config.ts b/dev/archive/_old/presswave/vite.config.ts similarity index 100% rename from dev/_old/presswave/vite.config.ts rename to dev/archive/_old/presswave/vite.config.ts diff --git a/dev/agentur-attribution/entwicklungsplan.md b/dev/archive/agentur-attribution/entwicklungsplan.md similarity index 100% rename from dev/agentur-attribution/entwicklungsplan.md rename to dev/archive/agentur-attribution/entwicklungsplan.md diff --git a/dev/archive/frontend-audits/frontend-optimize-56.md b/dev/archive/frontend-audits/frontend-optimize-56.md new file mode 100644 index 00000000..4fb5eba3 --- /dev/null +++ b/dev/archive/frontend-audits/frontend-optimize-56.md @@ -0,0 +1,285 @@ +# Bestandsaufnahme: Frontend Responsive / Mobile + +> **Erstellt:** 16.07.2026 +> **Status:** Nur Audit – **kein Code geändert** +> **Viewports:** 320×568 (kleines Smartphone) und 390×844 (iPhone-ähnlich), jeweils `mobile: true` +> **Scope:** Öffentliches Web-Frontend (presseecho, businessportal24, pressekonto-Hub) +> **Nicht im Scope:** Admin/Portal (Flux), Customer-Bereich + +--- + +## Methode + +1. Live-Check im Browser bei 320 px und 390 px Breite (CDP-Layout-Metriken: `scrollWidth`, Overlay-Bounding-Boxes, Grid-Spalten, Touch-Targets) +2. Code-Review der Blade-Komponenten unter `resources/views/web/**` und `resources/views/components/web/**` +3. Stichproben: Startseiten beider Portale, Preise, Release-Detail, Kategorie, Veröffentlichen, Hub-Landing + +**Hinweis zu Screenshots:** Das Browser-Capture zeigt die emulierte Seite oft als schmalen Streifen links im Fenster (Tooling-Artefakt). Maßgeblich sind die CDP-Messungen (`clientWidth` / `scrollWidth` / Element-Rechtecke), nicht die leere Fläche rechts im Screenshot. + +**Hinweis Debugbar:** Laravel Debugbar ist lokal sichtbar und verdeckt Inhalt – kein Produktionsproblem, bei visueller QA ausblenden. + +--- + +## Kurzfazit + +Die Desktop-Layouts sind weitgehend stimmig. Auf Mobile gibt es **wenige, aber schwere strukturelle Bugs**, die sich themenübergreifend wiederholen: + +| Priorität | Thema | Betrifft | +|-----------|--------|----------| +| P0 | Hero-Text-Overlay läuft aus dem Bild nach oben und überdeckt Section-Header | Portal-Startseiten, Kategorie (und analog Newsroom) | +| P0 | Horizontaler Seiten-Scroll durch Quality-Summary (3-Spalten-Grid + `nowrap`-Link) | Portal-Startseiten | +| P0 | Hub-Utility-Bar + Header-CTAs sprengen die Viewport-Breite (~245px Overflow) | pressekonto.test | +| P1 | Hub-Footer fest 4 Spalten; Architektur-Diagramm mit überlappenden Karten | pressekonto.test | +| P1 | Hub-Navigation ab `lg` ausgeblendet **ohne** Mobile-Menü-Ersatz | pressekonto.test | +| P1 | Sticky-Header-Script schaltet Klassen um, für die keine CSS-Regeln existieren | Portal-Seiten | +| P2 | Hartes `px-8` / große Type auf Homepages; kleine Touch-Targets in Topbar | Portale | + +Seiten wie **Preise**, **Release-Detail** und **Veröffentlichen** sind mobil schon deutlich robuster (`px-4 sm:px-6 lg:px-8`, kein Seiten-Overflow in der Stichprobe). + +--- + +## Geprüfte Seiten (Überblick) + +| Seite | URL (Beispiel) | Mobil-Status | +|-------|----------------|--------------| +| Startseite presseecho | `https://presseecho.test/de` | Kritisch: Hero-Overlap + H-Scroll (320/390 px verifiziert) | +| Startseite businessportal24 | `https://businessportal24.test/de` | Kritisch: gleiches Muster (390 px verifiziert) | +| Hub pressekonto | `https://pressekonto.test/` | Kritisch: Utility/Header/Footer/Diagramm (320/390 px verifiziert) | +| Preise | `…/de/preise` | Weitgehend ok | +| Release-Detail | `…/de/press-release/…` | Weitgehend ok; Hero-Bild sehr flach (21:9) | +| Kategorie | `…/de/category/sonstiges` | Kritisch: Hero-Overlay-Overflow | +| Veröffentlichen | `…/de/veroeffentlichen` | Weitgehend ok | +| Suche / FAQ / API / Newsrooms | Code-Review + Muster | Keine P0 in Stichprobe; API-Tabellen bewusst `overflow-x-auto` | + +Das Routen-Inventar umfasst darüber hinaus Newsroom-Detail, Tombstone, Suche mit Filterzuständen, Hilfe sowie die öffentlichen Rechts-/Formularseiten. Diese Seitentypen wurden statisch erfasst, aber in dieser ersten Runde nicht in allen Zuständen und auf beiden Sprachen live durchgeklickt. Admin, Auth und Customer bleiben bewusst außerhalb dieses Audits. + +--- + +## Befunde im Detail + +### P0-01 — Focus-Hero: Overlay überdeckt „Im Fokus“ + +**Schwere:** Kritisch +**Wo:** `resources/views/components/web/focus-hero.blade.php` (Zeilen ~39–67) +**Portale:** presseecho + businessportal24 (gleiche Komponente) + +**Messung (Lead mit langem Titel/Teaser):** +- Parent-Bildbox: `h-[500px]` → Höhe 500px +- Bei 390px: absolutes Bottom-Overlay **734px** hoch (presseecho) bzw. **586px** (businessportal24) +- Bei 390px ragt das presseecho-Overlay **~234px nach oben** aus dem Container und liegt über dem Section-Header („Im Fokus“ + Datum) +- Bei 320px wird das presseecho-Overlay **~917px** hoch und ragt **~417px nach oben** aus der 500px-Bildbox; der Fehler verschärft sich auf kleinen Smartphones deutlich + +**Ursache:** +- Feste Höhe `h-[500px]` + `overflow-hidden` am Bild +- Overlay absolut `bottom-0` mit Headline `text-[38px]` (ohne Mobile-Downscale), Teaser und Meta +- Inhalt des Overlays ist höher als die Bildbox → wächst nach oben aus dem `relative`-Wrapper (Parent der `` hat kein `overflow:hidden`) + +**Darstellung:** Titel/Teaser überdecken die Überschrift „Im Fokus“; Lesbarkeit und Hierarchie kaputt. + +**Fix-Richtung (später):** Responsive Type (`text-[24px] sm:text-[32px] lg:text-[38px]`), Overlay-Padding `px-4 sm:px-9`, ggf. `min-h` statt fester Höhe oder Overlay in den Flow legen / `overflow-hidden` am äußeren `relative`. + +--- + +### P0-02 — Kategorie-/Newsroom-Hero: gleiches Overlay-Problem + +**Schwere:** Kritisch (Kategorie verifiziert) / Hoch (Newsroom analog im Code) +**Wo:** +- `resources/views/web/kategorie.blade.php` ~123–147 (`aspect-ratio: 16/10`) +- `resources/views/web/newsroom.blade.php` ~152–180 (`aspect-ratio: 16/9`) + +**Messung Kategorie (390px):** +- Hero-Box ~224×358 +- Overlay-Höhe **459px**, `topDelta` ca. **−236px** (ragt nach oben heraus) + +Trotz etwas kleinerer Type (`text-[26px] sm:text-[32px]`) reicht langer Titel + Teaser + Meta, um das flache Aspect-Ratio-Hero zu sprengen. + +--- + +### P0-03 — Horizontaler Scroll auf Portal-Startseiten (Quality-Summary) + +**Schwere:** Kritisch +**Wo:** `resources/views/components/web/quality-summary.blade.php` +**Messung:** `scrollWidth = 457` bei `vw = 390` (Δ ≈ **67px**) auf beiden Portal-Homes. Bei `vw = 320` bleibt die Seite 457px breit (Δ ≈ **137px**). + +**Isolation:** Ausblenden der Quality-Summary-Section → `scrollWidth = 390`. Andere Home-Sections allein verursachen den Overflow nicht. + +**Ursache:** +```html +style="grid-template-columns: auto 1fr auto;" +``` +bleibt auf Mobile **3 Spalten**. Der Link „Veröffentlichungsrichtlinien →“ hat `whitespace-nowrap` und endet bei `right ≈ 458` (> 390). + +**Fix-Richtung:** Grid auf Mobile stacken (`grid-cols-1 sm:grid-cols-[auto_1fr_auto]` o. ä.), Link umbrechen lassen oder unter den Text legen; Section-Padding auf `px-4 sm:px-6 lg:px-8`. + +--- + +### P0-04 — Hub pressekonto: massiver Horizontal-Scroll + +**Schwere:** Kritisch +**Wo:** +- `resources/views/components/web/hub/top-utility-bar.blade.php` +- `resources/views/components/web/hub/site-header.blade.php` + +**Messung:** +- Bei 390px: `scrollWidth = 635` (Δ ≈ **245px**) +- Bei 320px: weiterhin `scrollWidth = 635` (Δ ≈ **315px**) +- Utility-Bar-Kinder summiert bis `right = 635` (Datum + „Publisher-Hub für …“ + FAQ/Hilfe/Kontakt, alles `whitespace-nowrap`, kein Wrap/`overflow-x`) +- Header-CTA-Gruppe („Anmelden“ + „Konto erstellen“) `right = 472` + +**Zusätzlich:** Haupt-Nav ist `hidden lg:flex` – auf Mobile **komplett weg, ohne Hamburger/Drawer**. Anker (Tarife, Funktion, …) sind im Header nicht erreichbar. + +--- + +### P1-01 — Hub-Footer: 4 Spalten auf Mobile + +**Schwere:** Hoch +**Wo:** `resources/views/components/web/hub/site-footer.blade.php` Zeile ~14 +`style="grid-template-columns:1.5fr 1fr 1fr 1fr;"` ohne Media Query + +**Messung:** Spaltenbreiten ca. 133 / 63 / 84 / 151 px – Linklisten unbenutzbar schmal. + +--- + +### P1-02 — Hub Architektur-Diagramm: Überlappung + +**Schwere:** Hoch +**Wo:** `resources/views/web/pressekonto.blade.php` ~105–167 + +**Messung:** Containerbreite ~268px bei `height:320px`; Brand-Karten jeweils `min-w-[160px]` links und rechts oben → Überlappung (~52px). Hub-Kreis und Eck-Labels kollidieren. + +**Zusätzlich:** Stats darunter `grid-cols-3` in derselben engen Karte. + +--- + +### P1-03 — Hartes `px-8` auf Homepages (Content-Breite) + +**Schwere:** Hoch (UX/Dichte), kein Overflow allein +**Wo u. a.:** +- `focus-hero.blade.php`, `industry-index`, `industry-spotlight`, `pricing-teaser` +- `presseecho.blade.php` / `businessportal24.blade.php` Feed-Section +- Hub-Seiten durchgängig `px-8` + +Unterseiten (Preise, Detail, Suche, …) nutzen bereits korrekt `px-4 sm:px-6 lg:px-8`. + +Bei 390px Viewport bleiben mit `px-8` nur ~326px Content – verschärft Hero- und Grid-Probleme. + +--- + +### P1-04 — Sticky-Header ist funktional wirkungslos + +**Schwere:** Hoch +**Wo:** +- `resources/views/web/layouts/web-master.blade.php` ~76–114 +- `resources/views/components/web/site-header.blade.php` ~101 + +Das Script ersetzt beim Scrollen `header-normal` durch `header-sticky`. Weder in den Web-CSS-Quellen noch im aktuellen Web-Build existieren Regeln für diese Klassen. Der Header wird deshalb nicht sticky; auf langen Mobilseiten gehen Suche, Login und Veröffentlichungs-CTA beim Scrollen verloren. + +--- + +### P2-01 — Industry-Index: 2 Spalten ab Mobile + +**Schwere:** Mittel +**Wo:** `industry-index.blade.php` – `grid-cols-2` + `px-5` +Lange Branchennamen + Delta in einer Zeile wirken gequetscht. + +--- + +### P2-02 — Quality-Summary / Stat-Strips / Sidebar-Grids + +**Schwere:** Mittel +- Quality-Summary: siehe P0-03 +- Kategorie/Newsrooms/Veröffentlichen: `grid-cols-2` Stat-Strips mit großen Zahlen – Labels wrapen unschön +- `focus-side-item`: 3-Spalten-Grid in gestapelter Sidebar – funktional ok, aber dicht +- Release-Detail-Hero `aspect-ratio: 21/9` → auf Mobile nur ~153px Bildhöhe + +--- + +### P2-03 — Touch-Targets Header (Portale) + +**Schwere:** Mittel +Topbar DE/EN (~42×35), „Preise“-Link (~33×17), Suche 40×40 und Anmelden ~34×34. Mehrere Ziele bleiben damit unter der 44×44-Empfehlung; die große Rubrik-Zeile erreicht 358×44. + +--- + +### P2-04 — Live-Ticker + +**Schwere:** Niedrig–Mittel (kein alleiniger H-Scroll-Auslöser in der Isolation) +Marquee mit `width: max-content` ist beabsichtigt und liegt in `overflow-hidden`. +Market-Slot (`max-w-[min(92vw,280px)]` + `shrink-0`) kann auf sehr schmalen Screens den Ticker-Bereich stark einengen, wenn Kursdaten aktiv sind – bei der Stichprobe war der Market-Slot oft leer. + +--- + +### P2-05 — API-Seite Tabellen + +**Schwere:** Niedrig (bewusst) +`overflow-x-auto` + `whitespace-nowrap` an Field-Namen → horizontales Scrollen in der Tabelle, nicht der ganzen Seite. + +--- + +### P2-06 — Bedingter Hub-Kontextbanner ohne Mobile-Umbruch + +**Wo:** `resources/views/components/web/hub/brand-context-banner.blade.php` +**Wann sichtbar:** Hub-Aufruf mit `?from=presseecho` oder `?from=businessportal24` + +Fließtext, Marken und „Zurück zu …“-Link liegen in einer einzigen Flex-Zeile ohne `flex-wrap` oder Mobile-Stacking. Dieser optionale Zustand wurde statisch als Overflow-/Kompressionsrisiko identifiziert und sollte bei der späteren Browser-QA separat geprüft werden. + +--- + +### P2-07 — Weitere Dichte- und Touch-Themen + +- FAQ-Antworten auf „Veröffentlichen“ behalten mobil `pl-[60px]` und verschenken auf 320px viel Textbreite. +- Credit-Pakete auf „Preise“ starten bereits mobil zweispaltig. +- Pagination und mehrere Modal-Schließen-Buttons liegen mit ca. 32–36px unter dem 44×44-Richtwert. +- FAQ/API fehlen in der mobilen Kopf-Navigation und sind mobil nur über den Footer direkt erreichbar. + +--- + +## Was mobil bereits gut wirkt + +- Portal-`site-header`: Suche als Icon-Modal, verkürzte Topbar, Burger für Rubriken +- Preise: Tarif-Grid `grid-cols-1 sm:grid-cols-2 lg:grid-cols-4`, kein Seiten-Overflow +- Release-Detail: Padding-Pattern, Body-Breite ~358px, Share-Buttons in 2 Spalten +- Veröffentlichen: bei 390px kein H-Scroll; bei 320px stammen die gemessenen 6px Überbreite ausschließlich von der lokalen Debugbar, nicht vom Seitenlayout. FAQ-Zeilen als 3-Spalten-Grid bleiben eher ein Dichte-Thema +- Viele Unterseiten schon auf `px-4 sm:px-6 lg:px-8` umgestellt + +--- + +## Empfohlene Bearbeitungsreihenfolge (noch nicht umsetzen) + +1. **P0-01 / P0-02** – Hero-Overlays (Focus-Hero, Kategorie, Newsroom): Type + Overflow-Containment +2. **P0-03** – Quality-Summary responsive machen (behebt Portal-H-Scroll) +3. **P0-04 / P1-01 / P1-02** – Hub: Utility-Bar, Header (Mobile-Nav!), Footer-Grid, Architektur-Diagramm +4. **P1-04** – Sticky-Header-CSS bzw. gewünschtes Scroll-Verhalten herstellen +5. **P1-03** – Homepages/Shared: `px-8` → `px-4 sm:px-6 lg:px-8` +6. **P2** – Kontextbanner, Industry-Index, FAQ-Dichte, Touch-Targets, flaches Detail-Hero, Feinschliff + +--- + +## Testmatrix für spätere Fixes + +| Breakpoint | Geräte-Proxy | +|------------|----------------| +| 320×568 | iPhone SE | +| 390×844 | iPhone 14/15 | +| 430×932 | große Phones | +| 768×1024 | Tablet | + +Pro Fix mindestens: beide Portal-Homes + Hub + eine Kategorie + eine PM-Detailseite; `document.documentElement.scrollWidth <= clientWidth`. + +--- + +## Dateien mit höchster Hebelwirkung + +1. `resources/views/components/web/focus-hero.blade.php` +2. `resources/views/components/web/quality-summary.blade.php` +3. `resources/views/web/kategorie.blade.php` / `newsroom.blade.php` (Hero-Blöcke) +4. `resources/views/components/web/hub/top-utility-bar.blade.php` +5. `resources/views/components/web/hub/site-header.blade.php` +6. `resources/views/components/web/hub/site-footer.blade.php` +7. `resources/views/web/pressekonto.blade.php` (Architektur-Diagramm + `px-8`) +8. `resources/views/web/layouts/web-master.blade.php` + Web-CSS (Sticky-Header) +9. `resources/views/components/web/hub/brand-context-banner.blade.php` + +--- + +*Ende der Bestandsaufnahme. Nächster Schritt nach Freigabe: Fixes in der Reihenfolge P0 → P1 → P2.* diff --git a/dev/archive/frontend-audits/frontend-optimize-grok.md b/dev/archive/frontend-audits/frontend-optimize-grok.md new file mode 100644 index 00000000..dafd5a04 --- /dev/null +++ b/dev/archive/frontend-audits/frontend-optimize-grok.md @@ -0,0 +1,264 @@ +# Bestandsaufnahme: Frontend Responsive / Mobile + +> **Erstellt:** 16.07.2026 +> **Status:** Audit + **P0/P1-Fixes umgesetzt** (16.07.2026, zweite Session) +> **Viewport:** 390×844 (iPhone-ähnlich), `mobile: true` +> **Scope:** Öffentliches Web-Frontend (presseecho, businessportal24, pressekonto-Hub) +> **Nicht im Scope:** Admin/Portal (Flux), Customer-Bereich + +--- + +## Methode + +1. Live-Check im Browser (CDP-Layout-Metriken: `scrollWidth`, Overlay-Bounding-Boxes, Grid-Spalten, Touch-Targets) +2. Code-Review der Blade-Komponenten unter `resources/views/web/**` und `resources/views/components/web/**` +3. Stichproben: Startseiten beider Portale, Preise, Release-Detail, Kategorie, Veröffentlichen, Hub-Landing + +**Hinweis zu Screenshots:** Das Browser-Capture zeigt die emulierte Seite oft als schmalen Streifen links im Fenster (Tooling-Artefakt). Maßgeblich sind die CDP-Messungen (`clientWidth` / `scrollWidth` / Element-Rechtecke), nicht die leere Fläche rechts im Screenshot. + +**Hinweis Debugbar:** Laravel Debugbar ist lokal sichtbar und verdeckt Inhalt – kein Produktionsproblem, bei visueller QA ausblenden. + +--- + +## Kurzfazit + +Die Desktop-Layouts sind weitgehend stimmig. Auf Mobile gibt es **wenige, aber schwere strukturelle Bugs**, die sich themenübergreifend wiederholen: + +| Priorität | Thema | Betrifft | +|-----------|--------|----------| +| P0 | Hero-Text-Overlay läuft aus dem Bild nach oben und überdeckt Section-Header | Portal-Startseiten, Kategorie (und analog Newsroom) | +| P0 | Horizontaler Seiten-Scroll durch Quality-Summary (3-Spalten-Grid + `nowrap`-Link) | Portal-Startseiten | +| P0 | Hub-Utility-Bar + Header-CTAs sprengen die Viewport-Breite (~245px Overflow) | pressekonto.test | +| P1 | Hub-Footer fest 4 Spalten; Architektur-Diagramm mit überlappenden Karten | pressekonto.test | +| P1 | Hub-Navigation ab `lg` ausgeblendet **ohne** Mobile-Menü-Ersatz | pressekonto.test | +| P2 | Hartes `px-8` / große Type auf Homepages; kleine Touch-Targets in Topbar | Portale | + +Seiten wie **Preise**, **Release-Detail** und **Veröffentlichen** sind mobil schon deutlich robuster (`px-4 sm:px-6 lg:px-8`, kein Seiten-Overflow in der Stichprobe). + +--- + +## Geprüfte Seiten (Überblick) + +| Seite | URL (Beispiel) | Mobil-Status | +|-------|----------------|--------------| +| Startseite presseecho | `https://presseecho.test/de` | Kritisch: Hero-Overlap + H-Scroll | +| Startseite businessportal24 | `https://businessportal24.test/de` | Kritisch: gleiches Muster | +| Hub pressekonto | `https://pressekonto.test/` | Kritisch: Utility/Header/Footer/Diagramm | +| Preise | `…/de/preise` | Weitgehend ok | +| Release-Detail | `…/de/press-release/…` | Weitgehend ok; Hero-Bild sehr flach (21:9) | +| Kategorie | `…/de/category/sonstiges` | Kritisch: Hero-Overlay-Overflow | +| Veröffentlichen | `…/de/veroeffentlichen` | Weitgehend ok | +| Suche / FAQ / API / Newsrooms | Code-Review + Muster | Keine P0 in Stichprobe; API-Tabellen bewusst `overflow-x-auto` | + +--- + +## Befunde im Detail + +### P0-01 — Focus-Hero: Overlay überdeckt „Im Fokus“ + +**Schwere:** Kritisch +**Wo:** `resources/views/components/web/focus-hero.blade.php` (Zeilen ~39–67) +**Portale:** presseecho + businessportal24 (gleiche Komponente) + +**Messung (390px, Lead mit langem Titel/Teaser):** +- Parent-Bildbox: `h-[500px]` → Höhe 500px +- Absolutes Bottom-Overlay: Höhe **734px** (presseecho) bzw. **586px** (businessportal24) +- Overlay ragt **~234px nach oben** aus dem Container und liegt über dem Section-Header („Im Fokus“ + Datum) + +**Ursache:** +- Feste Höhe `h-[500px]` + `overflow-hidden` am Bild +- Overlay absolut `bottom-0` mit Headline `text-[38px]` (ohne Mobile-Downscale), Teaser und Meta +- Inhalt des Overlays ist höher als die Bildbox → wächst nach oben aus dem `relative`-Wrapper (Parent der `` hat kein `overflow:hidden`) + +**Darstellung:** Titel/Teaser überdecken die Überschrift „Im Fokus“; Lesbarkeit und Hierarchie kaputt. + +**Fix-Richtung (später):** Responsive Type (`text-[24px] sm:text-[32px] lg:text-[38px]`), Overlay-Padding `px-4 sm:px-9`, ggf. `min-h` statt fester Höhe oder Overlay in den Flow legen / `overflow-hidden` am äußeren `relative`. + +--- + +### P0-02 — Kategorie-/Newsroom-Hero: gleiches Overlay-Problem + +**Schwere:** Kritisch (Kategorie verifiziert) / Hoch (Newsroom analog im Code) +**Wo:** +- `resources/views/web/kategorie.blade.php` ~123–147 (`aspect-ratio: 16/10`) +- `resources/views/web/newsroom.blade.php` ~152–180 (`aspect-ratio: 16/9`) + +**Messung Kategorie (390px):** +- Hero-Box ~224×358 +- Overlay-Höhe **459px**, `topDelta` ca. **−236px** (ragt nach oben heraus) + +Trotz etwas kleinerer Type (`text-[26px] sm:text-[32px]`) reicht langer Titel + Teaser + Meta, um das flache Aspect-Ratio-Hero zu sprengen. + +--- + +### P0-03 — Horizontaler Scroll auf Portal-Startseiten (Quality-Summary) + +**Schwere:** Kritisch +**Wo:** `resources/views/components/web/quality-summary.blade.php` +**Messung:** `scrollWidth = 457` bei `vw = 390` (Δ ≈ **67px**) auf beiden Portal-Homes + +**Isolation:** Ausblenden der Quality-Summary-Section → `scrollWidth = 390`. Andere Home-Sections allein verursachen den Overflow nicht. + +**Ursache:** +```html +style="grid-template-columns: auto 1fr auto;" +``` +bleibt auf Mobile **3 Spalten**. Der Link „Veröffentlichungsrichtlinien →“ hat `whitespace-nowrap` und endet bei `right ≈ 458` (> 390). + +**Fix-Richtung:** Grid auf Mobile stacken (`grid-cols-1 sm:grid-cols-[auto_1fr_auto]` o. ä.), Link umbrechen lassen oder unter den Text legen; Section-Padding auf `px-4 sm:px-6 lg:px-8`. + +--- + +### P0-04 — Hub pressekonto: massiver Horizontal-Scroll + +**Schwere:** Kritisch +**Wo:** +- `resources/views/components/web/hub/top-utility-bar.blade.php` +- `resources/views/components/web/hub/site-header.blade.php` + +**Messung (390px):** +- `scrollWidth = 635` (Δ ≈ **245px**) +- Utility-Bar-Kinder summiert bis `right = 635` (Datum + „Publisher-Hub für …“ + FAQ/Hilfe/Kontakt, alles `whitespace-nowrap`, kein Wrap/`overflow-x`) +- Header-CTA-Gruppe („Anmelden“ + „Konto erstellen“) `right = 472` + +**Zusätzlich:** Haupt-Nav ist `hidden lg:flex` – auf Mobile **komplett weg, ohne Hamburger/Drawer**. Anker (Tarife, Funktion, …) sind im Header nicht erreichbar. + +--- + +### P1-01 — Hub-Footer: 4 Spalten auf Mobile + +**Schwere:** Hoch +**Wo:** `resources/views/components/web/hub/site-footer.blade.php` Zeile ~14 +`style="grid-template-columns:1.5fr 1fr 1fr 1fr;"` ohne Media Query + +**Messung:** Spaltenbreiten ca. 133 / 63 / 84 / 151 px – Linklisten unbenutzbar schmal. + +--- + +### P1-02 — Hub Architektur-Diagramm: Überlappung + +**Schwere:** Hoch +**Wo:** `resources/views/web/pressekonto.blade.php` ~105–167 + +**Messung:** Containerbreite ~268px bei `height:320px`; Brand-Karten jeweils `min-w-[160px]` links und rechts oben → Überlappung (~52px). Hub-Kreis und Eck-Labels kollidieren. + +**Zusätzlich:** Stats darunter `grid-cols-3` in derselben engen Karte. + +--- + +### P1-03 — Hartes `px-8` auf Homepages (Content-Breite) + +**Schwere:** Hoch (UX/Dichte), kein Overflow allein +**Wo u. a.:** +- `focus-hero.blade.php`, `industry-index`, `industry-spotlight`, `pricing-teaser` +- `presseecho.blade.php` / `businessportal24.blade.php` Feed-Section +- Hub-Seiten durchgängig `px-8` + +Unterseiten (Preise, Detail, Suche, …) nutzen bereits korrekt `px-4 sm:px-6 lg:px-8`. + +Bei 390px Viewport bleiben mit `px-8` nur ~326px Content – verschärft Hero- und Grid-Probleme. + +--- + +### P2-01 — Industry-Index: 2 Spalten ab Mobile + +**Schwere:** Mittel +**Wo:** `industry-index.blade.php` – `grid-cols-2` + `px-5` +Lange Branchennamen + Delta in einer Zeile wirken gequetscht. + +--- + +### P2-02 — Quality-Summary / Stat-Strips / Sidebar-Grids + +**Schwere:** Mittel +- Quality-Summary: siehe P0-03 +- Kategorie/Newsrooms/Veröffentlichen: `grid-cols-2` Stat-Strips mit großen Zahlen – Labels wrapen unschön +- `focus-side-item`: 3-Spalten-Grid in gestapelter Sidebar – funktional ok, aber dicht +- Release-Detail-Hero `aspect-ratio: 21/9` → auf Mobile nur ~153px Bildhöhe + +--- + +### P2-03 — Touch-Targets Header (Portale) + +**Schwere:** Mittel +Topbar DE/EN (~42×35), „Preise“-Link (~33×17), teils unter 44×44-Empfehlung. Suche/Anmelden sind mit ~40×40 besser, aber Topbar bleibt eng. + +--- + +### P2-04 — Live-Ticker + +**Schwere:** Niedrig–Mittel (kein alleiniger H-Scroll-Auslöser in der Isolation) +Marquee mit `width: max-content` ist beabsichtigt und liegt in `overflow-hidden`. +Market-Slot (`max-w-[min(92vw,280px)]` + `shrink-0`) kann auf sehr schmalen Screens den Ticker-Bereich stark einengen, wenn Kursdaten aktiv sind – bei der Stichprobe war der Market-Slot oft leer. + +--- + +### P2-05 — API-Seite Tabellen + +**Schwere:** Niedrig (bewusst) +`overflow-x-auto` + `whitespace-nowrap` an Field-Namen → horizontales Scrollen in der Tabelle, nicht der ganzen Seite. + +--- + +## Was mobil bereits gut wirkt + +- Portal-`site-header`: Suche als Icon-Modal, verkürzte Topbar, Burger für Rubriken +- Preise: Tarif-Grid `grid-cols-1 sm:grid-cols-2 lg:grid-cols-4`, kein Seiten-Overflow +- Release-Detail: Padding-Pattern, Body-Breite ~358px, Share-Buttons in 2 Spalten +- Veröffentlichen: kein H-Scroll in der Stichprobe; FAQ-Zeilen als 3-Spalten-Grid eher Dichte-Thema +- Viele Unterseiten schon auf `px-4 sm:px-6 lg:px-8` umgestellt + +--- + +## Empfohlene Bearbeitungsreihenfolge (noch nicht umsetzen) + +1. **P0-01 / P0-02** – Hero-Overlays (Focus-Hero, Kategorie, Newsroom): Type + Overflow-Containment +2. **P0-03** – Quality-Summary responsive machen (behebt Portal-H-Scroll) +3. **P0-04 / P1-01 / P1-02** – Hub: Utility-Bar, Header (Mobile-Nav!), Footer-Grid, Architektur-Diagramm +4. **P1-03** – Homepages/Shared: `px-8` → `px-4 sm:px-6 lg:px-8` +5. **P2** – Industry-Index, Touch-Targets, flaches Detail-Hero, Feinschliff + +--- + +## Testmatrix für spätere Fixes + +| Breakpoint | Geräte-Proxy | +|------------|----------------| +| 320×568 | iPhone SE | +| 390×844 | iPhone 14/15 | +| 430×932 | große Phones | +| 768×1024 | Tablet | + +Pro Fix mindestens: beide Portal-Homes + Hub + eine Kategorie + eine PM-Detailseite; `document.documentElement.scrollWidth <= clientWidth`. + +--- + +## Dateien mit höchster Hebelwirkung + +1. `resources/views/components/web/focus-hero.blade.php` +2. `resources/views/components/web/quality-summary.blade.php` +3. `resources/views/web/kategorie.blade.php` / `newsroom.blade.php` (Hero-Blöcke) +4. `resources/views/components/web/hub/top-utility-bar.blade.php` +5. `resources/views/components/web/hub/site-header.blade.php` +6. `resources/views/components/web/hub/site-footer.blade.php` +7. `resources/views/web/pressekonto.blade.php` (Architektur-Diagramm + `px-8`) + +--- + +## Umsetzung (16.07.2026) + +P0/P1 aus der Reihenfolge oben sind umgesetzt. Verifikation bei 390px: + +| Check | Vorher | Nachher | +|-------|--------|---------| +| Portal-Home `scrollWidth` | 457 | 390 | +| Hero: H1 unter „Im Fokus“ | Overlay überdeckte Header | Hierarchie ok (`h1Top > h2Bottom`) | +| Hub `scrollWidth` | 635 | 390 | +| Hub-Footer-Spalten | 4 | 1 (stackt ab `sm`/`lg`) | +| Hub Mobile-Nav | fehlte | Burger + Panel | + +**Geänderte Dateien:** Focus-Hero, Quality-Summary, Kategorie-/Newsroom-Hero, Hub Utility/Header/Footer/Banner, Homepages + Industry-/Pricing-Teaser-Paddings, Architektur-Diagramm (Mobile-Stack). + +**Tests:** `PresseechoHomeTest`, `Businessportal24HomeTest`, `PressekontoHubHomeTest`, `HubStaticPageShellTest` — 32 passed. + +**Offen (P2):** kleinere Touch-Targets in Portal-Topbar, Industry-Index-Dichte, flaches Release-Detail-Hero 21:9. diff --git a/dev/archive/frontend-audits/frontend-optimize-protokoll.md b/dev/archive/frontend-audits/frontend-optimize-protokoll.md new file mode 100644 index 00000000..f277c99e --- /dev/null +++ b/dev/archive/frontend-audits/frontend-optimize-protokoll.md @@ -0,0 +1,240 @@ +# Protokoll & Bestandsaufnahme: Frontend Responsive / Mobile (Re-Audit) + +> **Erstellt:** 16.07.2026 (dritte Session) +> **Status:** Audit + **P1-Fixes umgesetzt** (16.07.2026) +> **Viewports:** 320×568 (iPhone SE) und 390×844 (iPhone 14/15), `mobile: true` +> **Scope:** Öffentliches Web-Frontend (presseecho, businessportal24, pressekonto-Hub) +> **Nicht im Scope:** Admin/Portal (Flux), Auth, Customer-Bereich +> **Grundlage:** Code-Review (aktueller Stand) + Live-CDP-Messung im Browser + +--- + +## Zweck dieses Dokuments + +Frische Bestandsaufnahme **nach** den bereits umgesetzten Fixes aus +`dev/frontend-optimize-grok.md`. Dieses Protokoll + +1. **verifiziert**, welche früheren P0/P1-Befunde jetzt tatsächlich behoben sind (Code + Live), +2. **listet die noch offenen Punkte** (v. a. aus `dev/frontend-optimize-56.md`), und +3. **dokumentiert einen neuen, bisher nicht erfassten Fehler** bei 320px. + +**Es wurde bewusst noch kein Code geändert.** + +--- + +## Kurzfazit + +Die schweren strukturellen P0-Bugs aus den beiden Vor-Audits sind im aktuellen Code +**behoben und live bestätigt** (bei 390px kein Seiten-Overflow mehr, Hero-Hierarchie intakt, +Hub mit Mobile-Nav/Burger, Footer stackt, Architektur-Diagramm gestapelt). + +Offen bleiben: + +| Priorität | Thema | Betrifft | Quelle | +|-----------|-------|----------|--------| +| **P1** | **Sticky-Header funktional wirkungslos** – Script schaltet Klassen `header-normal`/`header-sticky` um, für die **keine CSS-Regeln existieren** | Portal-Seiten (presseecho, businessportal24) | 56.md P1-04, hier **live bestätigt** | +| **P1 (neu)** | **Header-Button-Gruppe bricht bei 320px aus** → horizontaler Seiten-Scroll auf sehr kleinen Phones | Portal-Home (+38px) & Hub (+62px) | **Neu in diesem Audit** | +| P2 | Industry-Index: `grid-cols-2` + `px-5` ab Mobile (gequetscht) | Portal-Homes | 56.md P2-01 | +| P2 | Touch-Targets in Portal-Topbar unter 44×44 (DE/EN, „Preise") | Portale | 56.md P2-03 | +| P2 | Stat-Strips `grid-cols-2` mit großen Zahlen, Labels wrappen | Kategorie/Newsroom/Veröffentlichen | 56.md P2-02 | +| P2 | FAQ-Antworten `pl-[60px]`, Credit-Pakete 2-spaltig, kleine Pagination/Modal-Close-Buttons, FAQ/API fehlen in mobiler Portal-Nav | Veröffentlichen/Preise/diverse | 56.md P2-07 | +| P3 | API-Tabellen `overflow-x-auto` (bewusst, kein Seiten-Overflow) | API-Seite | 56.md P2-05 | + +--- + +## Methode + +1. **Code-Review** der High-Leverage-Blades unter `resources/views/web/**` und + `resources/views/components/web/**`. +2. **Live-Check** im Browser mit CDP-Emulation (`Emulation.setDeviceMetricsOverride`) bei + 320px und 390px; Messung von `document.documentElement.scrollWidth`, + Element-Bounding-Boxes und `getComputedStyle`. +3. **Overflow-Isolation:** Elemente mit `right > clientWidth` gefiltert und um solche + bereinigt, die einen klippenden Vorfahren (`overflow-x: hidden/clip/auto/scroll`) haben, + sowie um die lokale Laravel-Debugbar. + +**Hinweis Debugbar:** Lokal sichtbar, wurde bei allen Messungen ausgeschlossen (kein Produktionsproblem). + +--- + +## Teil A — Verifiziert behoben (aus grok.md) + +| Befund | Datei(en) | Beleg (Code + Live) | +|--------|-----------|---------------------| +| **P0-01** Focus-Hero-Overlay überdeckt „Im Fokus" | `components/web/focus-hero.blade.php` | Overlay jetzt im Flow: `min-h-[320px] sm:min-h-[420px] lg:min-h-[500px] flex flex-col justify-end`, Type `text-[24px] sm:text-[32px] lg:text-[38px]`. **Live 390px:** `h1Top=407 > imFokusBottom=250` → Hierarchie intakt. | +| **P0-03** Quality-Summary erzeugt H-Scroll | `components/web/quality-summary.blade.php` | Grid jetzt `grid-cols-1 sm:grid-cols-[auto_minmax(0,1fr)_auto]`, Link `sm:whitespace-nowrap`, Padding `px-4 sm:px-6 lg:px-8`. **Live 390px Portal-Home:** `scrollWidth = 390` (kein Overflow). | +| **P0-02** Kategorie-/Newsroom-Hero gleicher Overlay-Overflow | `web/kategorie.blade.php`, `web/newsroom.blade.php` | Beide Heroes jetzt `min-h-[…] flex flex-col justify-end` statt fester Höhe / Aspect-Ratio. | +| **P0-04** Hub-Utility-Bar + Header sprengen Viewport | `components/web/hub/top-utility-bar.blade.php`, `hub/site-header.blade.php` | Utility-Bar `flex-wrap`, kurzes Datum (`sm:hidden`), Mobile-**Burger + Panel** (`x-data menuOpen`). **Live 390px Hub:** `scrollWidth = 390`. | +| **P1-01** Hub-Footer 4 Spalten auf Mobile | `components/web/hub/site-footer.blade.php` | Jetzt `grid-cols-1 sm:grid-cols-2 lg:grid-cols-[1.5fr_1fr_1fr_1fr]`. | +| **P1-02** Hub-Architektur-Diagramm überlappt | `web/pressekonto.blade.php` | Mobile-Variante gestapelt (`lg:hidden flex flex-col`), absolut positioniertes Diagramm nur noch `hidden lg:block`. | +| **P1-03** Hartes `px-8` auf Homepages | `focus-hero`, `quality-summary`, `industry-index` u. a. | Umgestellt auf `px-4 sm:px-6 lg:px-8`. | + +--- + +## Teil B — Noch offene Befunde + +### P1-04 — Sticky-Header ist funktional wirkungslos (live bestätigt) + +**Schwere:** Hoch +**Wo:** +- `resources/views/web/layouts/web-master.blade.php` (Inline-Script ~76–115) +- `resources/views/components/web/site-header.blade.php` (`id="topbar"` Z. 54, `id="header" class="header-normal …"` Z. 101) + +**Problem:** Beim Scrollen tauscht das Script `header-normal` ↔ `header-sticky`. Für diese +beiden Klassen existieren **keine CSS-Regeln** – bestätigt per Repo-Suche: Treffer nur in +Blade/JS sowie in `dev/_old/`-Altbuilds, **nicht** in den aktiven Web-CSS-Quellen/Builds. + +**Live-Messung (390px, businessportal24, nach `scrollTo(0, 700)`):** +- `header.className = "header-normal …"` (Klasse wechselt nicht wirksam) +- `getComputedStyle(header).position = "static"` +- Header-`top = -665` → **Header komplett aus dem Viewport gescrollt, nicht sichtbar** + +**Auswirkung:** Auf langen Mobilseiten verschwinden Suche, Anmelden und der +Veröffentlichungs-CTA beim Scrollen. Der gewünschte Sticky-Effekt tritt nie ein. + +**Fix-Richtung (später):** Entweder CSS für `.header-sticky` (`position: sticky/fixed`, +Top-Offset, Schatten, Platzhalterhöhe) ergänzen, oder das Script entfernen und stattdessen +`position: sticky; top: 0` direkt am Header-Container setzen. + +--- + +### P1-05 (NEU) — Header-Button-Gruppe bricht bei 320px aus → H-Scroll + +**Schwere:** Hoch (nur ≤ 320px; bei 390px sauber) +**Status:** In den Vor-Audits **nicht** erfasst (dort wurde vor dem Fix 635/457px gemessen). + +**Live-Messung 320px:** + +| Seite | `scrollWidth` | Overflow | Verursacher (kein klippender Vorfahre) | +|-------|---------------|----------|-----------------------------------------| +| Portal-Home (businessportal24) | 358 | **+38px** | Header-rechts-Cluster `flex items-center gap-1 sm:gap-2 flex-shrink-0` (`right=358`), darin PM-Button | +| Hub (pressekonto) | 382 | **+62px** | Header-rechts-Cluster `flex items-center gap-1.5 sm:gap-2 flex-shrink-0` (`right=383`), „Registrieren"-Button + Burger | + +**Ursache:** +- **Portal** (`components/web/site-header.blade.php` ~144–182): Logo + Such-Icon (40px) + + „Anmelden" + PM-Button liegen alle in einer nicht umbrechenden Zeile; `flex-shrink-0` + verhindert Schrumpfen. Bei 320px reicht die Breite nicht. +- **Hub** (`components/web/hub/site-header.blade.php` ~48–91): Logo + „Anmelden" + + „Registrieren" + 40px-Burger. Der zusätzliche „Registrieren"-Button (`sm:hidden`) neben + Burger und „Anmelden" ist bei 320px zu breit. + +**Fix-Richtung (später):** Bei ≤ 320px Buttons weiter verkürzen (Icon-only bzw. „Registrieren" +in den Burger verlagern), engere Gaps, `min-w-0`/kürzere Labels; Ziel +`scrollWidth <= clientWidth` auch bei 320px. + +--- + +### P2-01 — Industry-Index: 2 Spalten + `px-5` ab Mobile + +**Schwere:** Mittel +**Wo:** `components/web/industry-index.blade.php` (`grid-cols-2 md:grid-cols-4`, Kacheln `px-5`) +Lange Branchennamen + Delta in einer Zeile wirken bei 320/390px gequetscht. Kein Seiten-Overflow. + +### P2-02 — Stat-Strips / Sidebar-Grids (Dichte) + +**Schwere:** Mittel +Kategorie/Newsroom Stat-Strips `grid-cols-2` mit `text-[32px]`-Zahlen → Labels wrappen unschön. +`focus-side-item` als 3-Spalten-Grid in gestapelter Sidebar funktional ok, aber dicht. +Release-Detail-Hero `aspect-ratio: 21/9` → mobil sehr flach (~153px Bildhöhe). + +### P2-03 — Touch-Targets Portal-Topbar + +**Schwere:** Mittel +DE/EN-Umschalter und „Preise"-Link in der Topbar bleiben unter der 44×44-Empfehlung. +Suche/Anmelden mit ~40×40 grenzwertig; die große Rubrik-Zeile (Burger) erreicht ~358×44. + +### P2-04 — Brand-Kontextbanner (Hub, `?from=…`) + +**Schwere:** Niedrig – **weitgehend entschärft** +`components/web/hub/brand-context-banner.blade.php` hat jetzt `flex-wrap`. +**Live 320px (`?from=businessportal24`):** „Zurück zu"-Link `right = 304` (< 320) → kein Overflow. +Der `flex-1`-Spacer ohne `min-w-0` am Text ist ein kleines Restrisiko bei extrem langen Marken – niedrig. + +### P2-05 — API-Seite Tabellen (bewusst) + +`overflow-x-auto` + `whitespace-nowrap` → Scrollen innerhalb der Tabelle, nicht der Seite. Kein Handlungsbedarf. + +### P2-06 — Weitere Dichte-/Touch-Themen (aus 56.md P2-07) + +- FAQ-Antworten „Veröffentlichen" mit `pl-[60px]` verschenken auf 320px Textbreite. +- Credit-Pakete auf „Preise" starten bereits mobil zweispaltig. +- Pagination und mehrere Modal-Close-Buttons ~32–36px (< 44×44). +- FAQ/API sind in der **mobilen Portal-Kopf-Navigation** nicht direkt erreichbar (nur `hidden lg:inline` in der Topbar bzw. über den Footer). Der Mobile-Burger listet nur Rubriken. + +--- + +## Live-Messmatrix (dieses Audit) + +| Seite | Viewport | `scrollWidth` | clientWidth | Overflow | Bewertung | +|-------|----------|---------------|-------------|----------|-----------| +| Portal-Home (businessportal24) | 390 | 390 | 390 | 0 | ok | +| Portal-Home (businessportal24) | 320 | 358 | 320 | **+38** | Header-Cluster (P1-05) | +| Hub (pressekonto, `?from=…`) | 390 | 390 | 390 | 0 | ok | +| Hub (pressekonto, `?from=…`) | 320 | 382 | 320 | **+62** | Header-Cluster (P1-05) | +| Sticky-Header (Portal, Scroll 700) | 390 | – | – | – | `position: static`, scrollt weg (P1-04) | + +--- + +## Empfohlene Bearbeitungsreihenfolge (noch nicht umsetzen) + +1. **P1-04** – Sticky-Header: CSS herstellen oder auf `position: sticky` am Container umstellen. +2. **P1-05 (neu)** – Header-Button-Cluster bei ≤ 320px entschärfen (Portal + Hub). +3. **P2** – Industry-Index-Dichte, Stat-Strips, Touch-Targets, FAQ-Padding, Credit-Pakete, mobile Nav-Erreichbarkeit von FAQ/API. + +**Akzeptanzkriterium je Fix:** `document.documentElement.scrollWidth <= clientWidth` bei +320/390/430px, plus visuelle Prüfung Portal-Home + Hub + eine Kategorie + eine PM-Detailseite. + +--- + +## Dateien mit höchster Hebelwirkung (offen) + +1. `resources/views/web/layouts/web-master.blade.php` + Web-CSS (Sticky-Header, P1-04) +2. `resources/views/components/web/site-header.blade.php` (Portal-Header 320px, P1-05) +3. `resources/views/components/web/hub/site-header.blade.php` (Hub-Header 320px, P1-05) +4. `resources/views/components/web/industry-index.blade.php` (P2-01) +5. Preise-/Veröffentlichen-Views (P2-06: Credit-Pakete, FAQ-Padding) + +--- + +## Umsetzung (16.07.2026) + +Die beiden P1-Punkte sind umgesetzt und live (320/390px) verifiziert. + +| Check | Vorher | Nachher | +|-------|--------|---------| +| Sticky-Header Portal (nach Scroll) | `position: static`, scrollt weg | `position: fixed; top:0; z-index:50`, sichtbar; Platzhalter verhindert Sprung; setzt oben sauber zurück | +| Portal-Home `scrollWidth` @320px | 358 (+38) | **320** (0) | +| Hub `scrollWidth` @320px | 382 (+62) | **320** (0) | +| presseecho-Home `scrollWidth` @320/390 | – | **320 / 390** (0) | +| Hub/Portal `scrollWidth` @390px | 390 | 390 (unverändert ok) | + +**Geänderte Dateien:** +- `resources/css/web/shared-styles.css` — CSS-Regeln für `.header-sticky` ergänzt (P1-04). +- `resources/views/web/layouts/web-master.blade.php` — Sticky-Script mit Platzhalter (kein Layout-Sprung) (P1-04). +- `resources/views/components/web/site-header.blade.php` — Portal-Header bei ≤320px verschlankt (Padding/Gap/Logo/CTA) (P1-05). +- `resources/views/components/web/hub/site-header.blade.php` — Hub-Header verschlankt; „Anmelden" auf Mobile ins Burger-Panel verlagert (P1-05). +- `resources/views/web/pressekonto.blade.php` — Hub-Hero-H1 Basisgröße `text-[34px]` (Wortmarke „businessportal24" passte bei 320px nicht) (P1-05). + +**Tests:** `PresseechoHomeTest`, `Businessportal24HomeTest`, `PressekontoHubHomeTest`, `HubStaticPageShellTest` — 32 passed. Pint sauber. + +**Hinweis:** Web-Assets wurden neu gebaut (`npm run build:web`). Sail/Docker war nicht aktiv; Build lief direkt über npm. + +## Umsetzung P2 (16.07.2026) + +| Punkt | Änderung | Datei | +|-------|----------|-------| +| P2 Nav | FAQ, API und Preise ins Mobile-Burger-Menü aufgenommen (vorher mobil nur im Footer) | `components/web/site-header.blade.php` | +| P2-03 | Edition-Tabs (DE/EN) in der Topbar: `py-2 → py-2.5`, `px-1.5 → px-2` (größere Tap-Fläche) | `components/web/site-header.blade.php` | +| P2-01 | Industry-Index: `px-5 → px-4 sm:px-5`, `py-[18px] → py-4 sm:py-[18px]`, Branchenname `text-[13px] sm:text-[14px]` | `components/web/industry-index.blade.php` | +| P2-07 | „Veröffentlichen"-FAQ-Antwort: `pl-[60px] → pl-0 sm:pl-[60px]` (volle Textbreite auf Mobile) | `web/veroeffentlichen.blade.php` | +| P2 (neu) | Preise „Einzel-PM"-Block: `gap-6` → `flex-wrap gap-4` (behebt 11px-Overflow bei 320px) | `web/preise.blade.php` | + +**Live-Verifikation @320px:** Preise `scrollWidth` 331 → **320**; Veröffentlichen ohne echten Layout-Overflow (verbleibende 6px = Debugbar); Mobile-Burger enthält jetzt Preise/FAQ/API. + +**Tests:** 105 passed (u. a. Home-, Hub-, Preise-, Publish-Suites). Pint sauber. Web-Assets neu gebaut. + +**Bewusst belassen:** Credit-Pakete (`grid-cols-2`) — kompakte Kacheln, bei 320px kein Overflow. Pagination-Buttons (~36px) als optionaler Feinschliff offen. + +--- + +*Ende des Protokolls. P1 + P2 umgesetzt und verifiziert.* diff --git a/dev/frontend/ENTWICKLUNGSKONZEPT-BusinessPortal24-Frontend.md b/dev/archive/frontend/ENTWICKLUNGSKONZEPT-BusinessPortal24-Frontend.md similarity index 100% rename from dev/frontend/ENTWICKLUNGSKONZEPT-BusinessPortal24-Frontend.md rename to dev/archive/frontend/ENTWICKLUNGSKONZEPT-BusinessPortal24-Frontend.md diff --git a/dev/frontend/Umsetzungskonzept - Frontend BusinessPortal24 Startseite.md b/dev/archive/frontend/Umsetzungskonzept - Frontend BusinessPortal24 Startseite.md similarity index 100% rename from dev/frontend/Umsetzungskonzept - Frontend BusinessPortal24 Startseite.md rename to dev/archive/frontend/Umsetzungskonzept - Frontend BusinessPortal24 Startseite.md diff --git a/dev/frontend/booking/Bildschirmfoto 2026-07-07 um 14.09.46.png b/dev/archive/frontend/booking/Bildschirmfoto 2026-07-07 um 14.09.46.png similarity index 100% rename from dev/frontend/booking/Bildschirmfoto 2026-07-07 um 14.09.46.png rename to dev/archive/frontend/booking/Bildschirmfoto 2026-07-07 um 14.09.46.png diff --git a/dev/frontend/booking/Bildschirmfoto 2026-07-07 um 14.09.57.png b/dev/archive/frontend/booking/Bildschirmfoto 2026-07-07 um 14.09.57.png similarity index 100% rename from dev/frontend/booking/Bildschirmfoto 2026-07-07 um 14.09.57.png rename to dev/archive/frontend/booking/Bildschirmfoto 2026-07-07 um 14.09.57.png diff --git a/dev/frontend/claude-design/Branchenseite _ Energie _ Klima _aktiv.html b/dev/archive/frontend/claude-design/Branchenseite _ Energie _ Klima _aktiv.html similarity index 100% rename from dev/frontend/claude-design/Branchenseite _ Energie _ Klima _aktiv.html rename to dev/archive/frontend/claude-design/Branchenseite _ Energie _ Klima _aktiv.html diff --git a/dev/frontend/claude-design/Branchenseite _ Energie _ Klima _aktiv.png b/dev/archive/frontend/claude-design/Branchenseite _ Energie _ Klima _aktiv.png similarity index 100% rename from dev/frontend/claude-design/Branchenseite _ Energie _ Klima _aktiv.png rename to dev/archive/frontend/claude-design/Branchenseite _ Energie _ Klima _aktiv.png diff --git a/dev/frontend/claude-design/Detailseite _ Pressemitteilung _aktiv.html b/dev/archive/frontend/claude-design/Detailseite _ Pressemitteilung _aktiv.html similarity index 100% rename from dev/frontend/claude-design/Detailseite _ Pressemitteilung _aktiv.html rename to dev/archive/frontend/claude-design/Detailseite _ Pressemitteilung _aktiv.html diff --git a/dev/frontend/claude-design/Detailseite _ Pressemitteilung _aktiv.png b/dev/archive/frontend/claude-design/Detailseite _ Pressemitteilung _aktiv.png similarity index 100% rename from dev/frontend/claude-design/Detailseite _ Pressemitteilung _aktiv.png rename to dev/archive/frontend/claude-design/Detailseite _ Pressemitteilung _aktiv.png diff --git a/dev/frontend/claude-design/Mobile _ Startseite.html b/dev/archive/frontend/claude-design/Mobile _ Startseite.html similarity index 100% rename from dev/frontend/claude-design/Mobile _ Startseite.html rename to dev/archive/frontend/claude-design/Mobile _ Startseite.html diff --git a/dev/frontend/claude-design/Mobile _ Startseite.png b/dev/archive/frontend/claude-design/Mobile _ Startseite.png similarity index 100% rename from dev/frontend/claude-design/Mobile _ Startseite.png rename to dev/archive/frontend/claude-design/Mobile _ Startseite.png diff --git a/dev/frontend/claude-design/Pass B _ _ Deutschland _aktiv.html b/dev/archive/frontend/claude-design/Pass B _ _ Deutschland _aktiv.html similarity index 100% rename from dev/frontend/claude-design/Pass B _ _ Deutschland _aktiv.html rename to dev/archive/frontend/claude-design/Pass B _ _ Deutschland _aktiv.html diff --git a/dev/frontend/claude-design/Pass B _ _ Deutschland _aktiv.png b/dev/archive/frontend/claude-design/Pass B _ _ Deutschland _aktiv.png similarity index 100% rename from dev/frontend/claude-design/Pass B _ _ Deutschland _aktiv.png rename to dev/archive/frontend/claude-design/Pass B _ _ Deutschland _aktiv.png diff --git a/dev/frontend/claude-design/Ver_ffentlichen _ Variante A _aktiv_.html b/dev/archive/frontend/claude-design/Ver_ffentlichen _ Variante A _aktiv_.html similarity index 100% rename from dev/frontend/claude-design/Ver_ffentlichen _ Variante A _aktiv_.html rename to dev/archive/frontend/claude-design/Ver_ffentlichen _ Variante A _aktiv_.html diff --git a/dev/frontend/claude-design/Ver_ffentlichen _ Variante A _aktiv_.png b/dev/archive/frontend/claude-design/Ver_ffentlichen _ Variante A _aktiv_.png similarity index 100% rename from dev/frontend/claude-design/Ver_ffentlichen _ Variante A _aktiv_.png rename to dev/archive/frontend/claude-design/Ver_ffentlichen _ Variante A _aktiv_.png diff --git a/dev/frontend/hub-flux/01-PHASE-0-TOKENS.md b/dev/archive/frontend/hub-flux/01-PHASE-0-TOKENS.md similarity index 100% rename from dev/frontend/hub-flux/01-PHASE-0-TOKENS.md rename to dev/archive/frontend/hub-flux/01-PHASE-0-TOKENS.md diff --git a/dev/frontend/hub-flux/02-PHASE-1-PORTAL-SHELL.md b/dev/archive/frontend/hub-flux/02-PHASE-1-PORTAL-SHELL.md similarity index 100% rename from dev/frontend/hub-flux/02-PHASE-1-PORTAL-SHELL.md rename to dev/archive/frontend/hub-flux/02-PHASE-1-PORTAL-SHELL.md diff --git a/dev/frontend/hub-flux/03-WEITERE-PHASEN.md b/dev/archive/frontend/hub-flux/03-WEITERE-PHASEN.md similarity index 100% rename from dev/frontend/hub-flux/03-WEITERE-PHASEN.md rename to dev/archive/frontend/hub-flux/03-WEITERE-PHASEN.md diff --git a/dev/frontend/hub-flux/04-PHASE-2-CUSTOMER-DASHBOARD.md b/dev/archive/frontend/hub-flux/04-PHASE-2-CUSTOMER-DASHBOARD.md similarity index 100% rename from dev/frontend/hub-flux/04-PHASE-2-CUSTOMER-DASHBOARD.md rename to dev/archive/frontend/hub-flux/04-PHASE-2-CUSTOMER-DASHBOARD.md diff --git a/dev/frontend/hub-flux/05-PHASE-5-DARK-MODE.md b/dev/archive/frontend/hub-flux/05-PHASE-5-DARK-MODE.md similarity index 100% rename from dev/frontend/hub-flux/05-PHASE-5-DARK-MODE.md rename to dev/archive/frontend/hub-flux/05-PHASE-5-DARK-MODE.md diff --git a/dev/frontend/hub-flux/06-PHASE-3-ADMIN-DASHBOARD.md b/dev/archive/frontend/hub-flux/06-PHASE-3-ADMIN-DASHBOARD.md similarity index 100% rename from dev/frontend/hub-flux/06-PHASE-3-ADMIN-DASHBOARD.md rename to dev/archive/frontend/hub-flux/06-PHASE-3-ADMIN-DASHBOARD.md diff --git a/dev/frontend/hub-flux/07-PHASE-4A-PRESS-RELEASES-LISTEN.md b/dev/archive/frontend/hub-flux/07-PHASE-4A-PRESS-RELEASES-LISTEN.md similarity index 100% rename from dev/frontend/hub-flux/07-PHASE-4A-PRESS-RELEASES-LISTEN.md rename to dev/archive/frontend/hub-flux/07-PHASE-4A-PRESS-RELEASES-LISTEN.md diff --git a/dev/frontend/hub-flux/08-PHASE-4B-PRESS-RELEASES-DETAIL.md b/dev/archive/frontend/hub-flux/08-PHASE-4B-PRESS-RELEASES-DETAIL.md similarity index 100% rename from dev/frontend/hub-flux/08-PHASE-4B-PRESS-RELEASES-DETAIL.md rename to dev/archive/frontend/hub-flux/08-PHASE-4B-PRESS-RELEASES-DETAIL.md diff --git a/dev/frontend/hub-flux/09-PHASE-4C-PRESS-RELEASES-FORMS.md b/dev/archive/frontend/hub-flux/09-PHASE-4C-PRESS-RELEASES-FORMS.md similarity index 100% rename from dev/frontend/hub-flux/09-PHASE-4C-PRESS-RELEASES-FORMS.md rename to dev/archive/frontend/hub-flux/09-PHASE-4C-PRESS-RELEASES-FORMS.md diff --git a/dev/frontend/hub-flux/10-PHASE-4D-COMPANIES.md b/dev/archive/frontend/hub-flux/10-PHASE-4D-COMPANIES.md similarity index 100% rename from dev/frontend/hub-flux/10-PHASE-4D-COMPANIES.md rename to dev/archive/frontend/hub-flux/10-PHASE-4D-COMPANIES.md diff --git a/dev/frontend/hub-flux/11-PHASE-4E-PROFILE-SETTINGS.md b/dev/archive/frontend/hub-flux/11-PHASE-4E-PROFILE-SETTINGS.md similarity index 100% rename from dev/frontend/hub-flux/11-PHASE-4E-PROFILE-SETTINGS.md rename to dev/archive/frontend/hub-flux/11-PHASE-4E-PROFILE-SETTINGS.md diff --git a/dev/frontend/hub-flux/12-PHASE-4G-CUSTOMER-PORTAL.md b/dev/archive/frontend/hub-flux/12-PHASE-4G-CUSTOMER-PORTAL.md similarity index 100% rename from dev/frontend/hub-flux/12-PHASE-4G-CUSTOMER-PORTAL.md rename to dev/archive/frontend/hub-flux/12-PHASE-4G-CUSTOMER-PORTAL.md diff --git a/dev/frontend/hub-flux/13-PHASE-4F-ADMIN-REST.md b/dev/archive/frontend/hub-flux/13-PHASE-4F-ADMIN-REST.md similarity index 100% rename from dev/frontend/hub-flux/13-PHASE-4F-ADMIN-REST.md rename to dev/archive/frontend/hub-flux/13-PHASE-4F-ADMIN-REST.md diff --git a/dev/frontend/hub-flux/14-PHASE-4H-PRESS-RELEASES-MOCKUP.md b/dev/archive/frontend/hub-flux/14-PHASE-4H-PRESS-RELEASES-MOCKUP.md similarity index 100% rename from dev/frontend/hub-flux/14-PHASE-4H-PRESS-RELEASES-MOCKUP.md rename to dev/archive/frontend/hub-flux/14-PHASE-4H-PRESS-RELEASES-MOCKUP.md diff --git a/dev/frontend/hub-flux/15-PHASE-4I-ADMIN-PRESS-RELEASES.md b/dev/archive/frontend/hub-flux/15-PHASE-4I-ADMIN-PRESS-RELEASES.md similarity index 100% rename from dev/frontend/hub-flux/15-PHASE-4I-ADMIN-PRESS-RELEASES.md rename to dev/archive/frontend/hub-flux/15-PHASE-4I-ADMIN-PRESS-RELEASES.md diff --git a/dev/frontend/hub-flux/16-PHASE-4J-DASHBOARD-LISTS.md b/dev/archive/frontend/hub-flux/16-PHASE-4J-DASHBOARD-LISTS.md similarity index 100% rename from dev/frontend/hub-flux/16-PHASE-4J-DASHBOARD-LISTS.md rename to dev/archive/frontend/hub-flux/16-PHASE-4J-DASHBOARD-LISTS.md diff --git a/dev/frontend/hub-flux/17-PHASE-5-DARK-MODE.md b/dev/archive/frontend/hub-flux/17-PHASE-5-DARK-MODE.md similarity index 100% rename from dev/frontend/hub-flux/17-PHASE-5-DARK-MODE.md rename to dev/archive/frontend/hub-flux/17-PHASE-5-DARK-MODE.md diff --git a/dev/frontend/hub-flux/18-PHASE-6-AUTH-CLEANUP.md b/dev/archive/frontend/hub-flux/18-PHASE-6-AUTH-CLEANUP.md similarity index 100% rename from dev/frontend/hub-flux/18-PHASE-6-AUTH-CLEANUP.md rename to dev/archive/frontend/hub-flux/18-PHASE-6-AUTH-CLEANUP.md diff --git a/dev/frontend/hub-flux/19-PHASE-7-PRESS-RELEASE-FORM.md b/dev/archive/frontend/hub-flux/19-PHASE-7-PRESS-RELEASE-FORM.md similarity index 100% rename from dev/frontend/hub-flux/19-PHASE-7-PRESS-RELEASE-FORM.md rename to dev/archive/frontend/hub-flux/19-PHASE-7-PRESS-RELEASE-FORM.md diff --git a/dev/frontend/hub-flux/20-PHASE-8-USER-PANEL.md b/dev/archive/frontend/hub-flux/20-PHASE-8-USER-PANEL.md similarity index 100% rename from dev/frontend/hub-flux/20-PHASE-8-USER-PANEL.md rename to dev/archive/frontend/hub-flux/20-PHASE-8-USER-PANEL.md diff --git a/dev/frontend/hub-flux/PROGRESS.md b/dev/archive/frontend/hub-flux/PROGRESS.md similarity index 100% rename from dev/frontend/hub-flux/PROGRESS.md rename to dev/archive/frontend/hub-flux/PROGRESS.md diff --git a/dev/frontend/hub-flux/README.md b/dev/archive/frontend/hub-flux/README.md similarity index 100% rename from dev/frontend/hub-flux/README.md rename to dev/archive/frontend/hub-flux/README.md diff --git a/dev/frontend/responsive/admin:me.png b/dev/archive/frontend/responsive/admin:me.png similarity index 100% rename from dev/frontend/responsive/admin:me.png rename to dev/archive/frontend/responsive/admin:me.png diff --git a/dev/frontend/responsive/admin:me:firmen:id.png b/dev/archive/frontend/responsive/admin:me:firmen:id.png similarity index 100% rename from dev/frontend/responsive/admin:me:firmen:id.png rename to dev/archive/frontend/responsive/admin:me:firmen:id.png diff --git a/dev/frontend/responsive/pm-vorschau.png b/dev/archive/frontend/responsive/pm-vorschau.png similarity index 100% rename from dev/frontend/responsive/pm-vorschau.png rename to dev/archive/frontend/responsive/pm-vorschau.png diff --git a/dev/frontend/tailwind_v3/businessportal24_branchenseite-tailwind.html b/dev/archive/frontend/tailwind_v3/businessportal24_branchenseite-tailwind.html similarity index 100% rename from dev/frontend/tailwind_v3/businessportal24_branchenseite-tailwind.html rename to dev/archive/frontend/tailwind_v3/businessportal24_branchenseite-tailwind.html diff --git a/dev/frontend/tailwind_v3/businessportal24_branchenseite-tailwind.png b/dev/archive/frontend/tailwind_v3/businessportal24_branchenseite-tailwind.png similarity index 100% rename from dev/frontend/tailwind_v3/businessportal24_branchenseite-tailwind.png rename to dev/archive/frontend/tailwind_v3/businessportal24_branchenseite-tailwind.png diff --git a/dev/frontend/tailwind_v3/businessportal24_detailseite-tailwind.html b/dev/archive/frontend/tailwind_v3/businessportal24_detailseite-tailwind.html similarity index 100% rename from dev/frontend/tailwind_v3/businessportal24_detailseite-tailwind.html rename to dev/archive/frontend/tailwind_v3/businessportal24_detailseite-tailwind.html diff --git a/dev/frontend/tailwind_v3/businessportal24_detailseite-tailwind.png b/dev/archive/frontend/tailwind_v3/businessportal24_detailseite-tailwind.png similarity index 100% rename from dev/frontend/tailwind_v3/businessportal24_detailseite-tailwind.png rename to dev/archive/frontend/tailwind_v3/businessportal24_detailseite-tailwind.png diff --git a/dev/frontend/tailwind_v3/businessportal24_startseite-tailwind.html b/dev/archive/frontend/tailwind_v3/businessportal24_startseite-tailwind.html similarity index 100% rename from dev/frontend/tailwind_v3/businessportal24_startseite-tailwind.html rename to dev/archive/frontend/tailwind_v3/businessportal24_startseite-tailwind.html diff --git a/dev/frontend/tailwind_v3/businessportal24_startseite-tailwind.png b/dev/archive/frontend/tailwind_v3/businessportal24_startseite-tailwind.png similarity index 100% rename from dev/frontend/tailwind_v3/businessportal24_startseite-tailwind.png rename to dev/archive/frontend/tailwind_v3/businessportal24_startseite-tailwind.png diff --git a/dev/frontend/tailwind_v3/businessportal24_veroeffentlichen-tailwind.html b/dev/archive/frontend/tailwind_v3/businessportal24_veroeffentlichen-tailwind.html similarity index 100% rename from dev/frontend/tailwind_v3/businessportal24_veroeffentlichen-tailwind.html rename to dev/archive/frontend/tailwind_v3/businessportal24_veroeffentlichen-tailwind.html diff --git a/dev/frontend/tailwind_v3/businessportal24_veroeffentlichen-tailwind.png b/dev/archive/frontend/tailwind_v3/businessportal24_veroeffentlichen-tailwind.png similarity index 100% rename from dev/frontend/tailwind_v3/businessportal24_veroeffentlichen-tailwind.png rename to dev/archive/frontend/tailwind_v3/businessportal24_veroeffentlichen-tailwind.png diff --git a/dev/frontend/tailwind_v3/hub/Hub Landing pressekonto-2.html b/dev/archive/frontend/tailwind_v3/hub/Hub Landing pressekonto-2.html similarity index 100% rename from dev/frontend/tailwind_v3/hub/Hub Landing pressekonto-2.html rename to dev/archive/frontend/tailwind_v3/hub/Hub Landing pressekonto-2.html diff --git a/dev/frontend/tailwind_v3/hub/Login pressekonto A3 Tailwind.html b/dev/archive/frontend/tailwind_v3/hub/Login pressekonto A3 Tailwind.html similarity index 100% rename from dev/frontend/tailwind_v3/hub/Login pressekonto A3 Tailwind.html rename to dev/archive/frontend/tailwind_v3/hub/Login pressekonto A3 Tailwind.html diff --git a/dev/frontend/tailwind_v3/hub/User Dashboard presseportale Dark.html b/dev/archive/frontend/tailwind_v3/hub/User Dashboard presseportale Dark.html similarity index 100% rename from dev/frontend/tailwind_v3/hub/User Dashboard presseportale Dark.html rename to dev/archive/frontend/tailwind_v3/hub/User Dashboard presseportale Dark.html diff --git a/dev/frontend/tailwind_v3/hub/User Dashboard presseportale.html b/dev/archive/frontend/tailwind_v3/hub/User Dashboard presseportale.html similarity index 100% rename from dev/frontend/tailwind_v3/hub/User Dashboard presseportale.html rename to dev/archive/frontend/tailwind_v3/hub/User Dashboard presseportale.html diff --git a/dev/frontend/tailwind_v3/hub/User Firmen presseportale.html b/dev/archive/frontend/tailwind_v3/hub/User Firmen presseportale.html similarity index 100% rename from dev/frontend/tailwind_v3/hub/User Firmen presseportale.html rename to dev/archive/frontend/tailwind_v3/hub/User Firmen presseportale.html diff --git a/dev/frontend/tailwind_v3/hub/User Neue Mitteilung presseportale.html b/dev/archive/frontend/tailwind_v3/hub/User Neue Mitteilung presseportale.html similarity index 100% rename from dev/frontend/tailwind_v3/hub/User Neue Mitteilung presseportale.html rename to dev/archive/frontend/tailwind_v3/hub/User Neue Mitteilung presseportale.html diff --git a/dev/frontend/tailwind_v3/hub/User Pressemitteilungen presseportale.html b/dev/archive/frontend/tailwind_v3/hub/User Pressemitteilungen presseportale.html similarity index 100% rename from dev/frontend/tailwind_v3/hub/User Pressemitteilungen presseportale.html rename to dev/archive/frontend/tailwind_v3/hub/User Pressemitteilungen presseportale.html diff --git a/dev/frontend/tailwind_v3/presseecho_startseite-tailwind.html b/dev/archive/frontend/tailwind_v3/presseecho_startseite-tailwind.html similarity index 100% rename from dev/frontend/tailwind_v3/presseecho_startseite-tailwind.html rename to dev/archive/frontend/tailwind_v3/presseecho_startseite-tailwind.html diff --git a/dev/frontend/tailwind_v3/presseecho_startseite-tailwind.png b/dev/archive/frontend/tailwind_v3/presseecho_startseite-tailwind.png similarity index 100% rename from dev/frontend/tailwind_v3/presseecho_startseite-tailwind.png rename to dev/archive/frontend/tailwind_v3/presseecho_startseite-tailwind.png diff --git a/dev/legacy_logging/ENTWICKLUNGSPLAN.md b/dev/archive/legacy_logging/ENTWICKLUNGSPLAN.md similarity index 100% rename from dev/legacy_logging/ENTWICKLUNGSPLAN.md rename to dev/archive/legacy_logging/ENTWICKLUNGSPLAN.md diff --git a/dev/legacy_logging/UMSETZUNGSSTAND.md b/dev/archive/legacy_logging/UMSETZUNGSSTAND.md similarity index 100% rename from dev/legacy_logging/UMSETZUNGSSTAND.md rename to dev/archive/legacy_logging/UMSETZUNGSSTAND.md diff --git a/dev/legacy_performance/FTP-LIVE-DEPLOY.md b/dev/archive/legacy_performance/FTP-LIVE-DEPLOY.md similarity index 100% rename from dev/legacy_performance/FTP-LIVE-DEPLOY.md rename to dev/archive/legacy_performance/FTP-LIVE-DEPLOY.md diff --git a/dev/legacy_performance/UMSETZUNGSSTAND.md b/dev/archive/legacy_performance/UMSETZUNGSSTAND.md similarity index 100% rename from dev/legacy_performance/UMSETZUNGSSTAND.md rename to dev/archive/legacy_performance/UMSETZUNGSSTAND.md diff --git a/dev/legacy_performance/live-indexes.sql b/dev/archive/legacy_performance/live-indexes.sql similarity index 100% rename from dev/legacy_performance/live-indexes.sql rename to dev/archive/legacy_performance/live-indexes.sql diff --git a/dev/migration 2026/00-OVERVIEW.md b/dev/archive/migration-2026/00-OVERVIEW.md similarity index 100% rename from dev/migration 2026/00-OVERVIEW.md rename to dev/archive/migration-2026/00-OVERVIEW.md diff --git a/dev/migration 2026/01-LEGACY-ANALYSIS.md b/dev/archive/migration-2026/01-LEGACY-ANALYSIS.md similarity index 100% rename from dev/migration 2026/01-LEGACY-ANALYSIS.md rename to dev/archive/migration-2026/01-LEGACY-ANALYSIS.md diff --git a/dev/migration 2026/02-TARGET-ARCHITECTURE.md b/dev/archive/migration-2026/02-TARGET-ARCHITECTURE.md similarity index 100% rename from dev/migration 2026/02-TARGET-ARCHITECTURE.md rename to dev/archive/migration-2026/02-TARGET-ARCHITECTURE.md diff --git a/dev/migration 2026/03-MIGRATION-PLAN.md b/dev/archive/migration-2026/03-MIGRATION-PLAN.md similarity index 100% rename from dev/migration 2026/03-MIGRATION-PLAN.md rename to dev/archive/migration-2026/03-MIGRATION-PLAN.md diff --git a/dev/migration 2026/04-DATA-MODEL.md b/dev/archive/migration-2026/04-DATA-MODEL.md similarity index 100% rename from dev/migration 2026/04-DATA-MODEL.md rename to dev/archive/migration-2026/04-DATA-MODEL.md diff --git a/dev/migration 2026/05-DATABASE-MERGE.md b/dev/archive/migration-2026/05-DATABASE-MERGE.md similarity index 100% rename from dev/migration 2026/05-DATABASE-MERGE.md rename to dev/archive/migration-2026/05-DATABASE-MERGE.md diff --git a/dev/migration 2026/06-FEATURES-SCOPE.md b/dev/archive/migration-2026/06-FEATURES-SCOPE.md similarity index 100% rename from dev/migration 2026/06-FEATURES-SCOPE.md rename to dev/archive/migration-2026/06-FEATURES-SCOPE.md diff --git a/dev/migration 2026/07-API-MIGRATION.md b/dev/archive/migration-2026/07-API-MIGRATION.md similarity index 100% rename from dev/migration 2026/07-API-MIGRATION.md rename to dev/archive/migration-2026/07-API-MIGRATION.md diff --git a/dev/migration 2026/08-PROGRESS.md b/dev/archive/migration-2026/08-PROGRESS.md similarity index 100% rename from dev/migration 2026/08-PROGRESS.md rename to dev/archive/migration-2026/08-PROGRESS.md diff --git a/dev/migration 2026/09-REVIEW-QUALITAET.md b/dev/archive/migration-2026/09-REVIEW-QUALITAET.md similarity index 100% rename from dev/migration 2026/09-REVIEW-QUALITAET.md rename to dev/archive/migration-2026/09-REVIEW-QUALITAET.md diff --git a/dev/migration 2026/10-LEGACY-API-KUNDEN.md b/dev/archive/migration-2026/10-LEGACY-API-KUNDEN.md similarity index 100% rename from dev/migration 2026/10-LEGACY-API-KUNDEN.md rename to dev/archive/migration-2026/10-LEGACY-API-KUNDEN.md diff --git a/dev/migration 2026/11-NOCH-ZU-TUN-OPTIMIERUNGEN.md b/dev/archive/migration-2026/11-NOCH-ZU-TUN-OPTIMIERUNGEN.md similarity index 100% rename from dev/migration 2026/11-NOCH-ZU-TUN-OPTIMIERUNGEN.md rename to dev/archive/migration-2026/11-NOCH-ZU-TUN-OPTIMIERUNGEN.md diff --git a/dev/migration 2026/12-NAECHSTE-SCHRITTE.md b/dev/archive/migration-2026/12-NAECHSTE-SCHRITTE.md similarity index 100% rename from dev/migration 2026/12-NAECHSTE-SCHRITTE.md rename to dev/archive/migration-2026/12-NAECHSTE-SCHRITTE.md diff --git a/dev/migration 2026/MIGRATION-STEPS.md b/dev/archive/migration-2026/MIGRATION-STEPS.md similarity index 100% rename from dev/migration 2026/MIGRATION-STEPS.md rename to dev/archive/migration-2026/MIGRATION-STEPS.md diff --git a/dev/migration 2026/README.md b/dev/archive/migration-2026/README.md similarity index 100% rename from dev/migration 2026/README.md rename to dev/archive/migration-2026/README.md diff --git a/dev/optimize/cutover-runbook.md b/dev/archive/optimize/cutover-runbook.md similarity index 95% rename from dev/optimize/cutover-runbook.md rename to dev/archive/optimize/cutover-runbook.md index bbf91b7b..c07af424 100644 --- a/dev/optimize/cutover-runbook.md +++ b/dev/archive/optimize/cutover-runbook.md @@ -1,5 +1,12 @@ # Cutover-Runbook — Go-Live Pressekonto +> ✅ **ERLEDIGT — archiviert am 20.07.2026.** Die Migration ist vollständig +> durchgelaufen (`legacy:verify`: 0 failures, 0 warnings), die echten Domains +> sind live geschaltet, Stripe läuft im Live-Mode. Dieses Runbook bleibt als +> Referenz erhalten — z. B. für einen späteren `--since`-Delta-Lauf, falls +> das Alt-System doch noch einmal Daten liefern sollte (Abschnitt 3). +> Betriebs-Doku ab jetzt: `dev/betrieb/deploy-runbook.md`. + Stand: 2026-07-14 · Branch `fix/zeitzone-europe-berlin` Abhakbare Checkliste für die Umschaltung vom Alt-System auf Pressekonto. diff --git a/dev/optimize/entwicklungsplan.md b/dev/archive/optimize/entwicklungsplan.md similarity index 100% rename from dev/optimize/entwicklungsplan.md rename to dev/archive/optimize/entwicklungsplan.md diff --git a/dev/optimize/optimize-14-07-2026.md b/dev/archive/optimize/optimize-14-07-2026.md similarity index 100% rename from dev/optimize/optimize-14-07-2026.md rename to dev/archive/optimize/optimize-14-07-2026.md diff --git a/dev/optimize/system-optimierung-analyse-codex.md b/dev/archive/optimize/system-optimierung-analyse-codex.md similarity index 100% rename from dev/optimize/system-optimierung-analyse-codex.md rename to dev/archive/optimize/system-optimierung-analyse-codex.md diff --git a/dev/optimize/system-optimierungen-analyse-claude.md b/dev/archive/optimize/system-optimierungen-analyse-claude.md similarity index 100% rename from dev/optimize/system-optimierungen-analyse-claude.md rename to dev/archive/optimize/system-optimierungen-analyse-claude.md diff --git a/dev/release/boost-platzierung-offen.md b/dev/archive/release/boost-platzierung-offen.md similarity index 100% rename from dev/release/boost-platzierung-offen.md rename to dev/archive/release/boost-platzierung-offen.md diff --git a/dev/release/entwicklungsplan-release.md b/dev/archive/release/entwicklungsplan-release.md similarity index 100% rename from dev/release/entwicklungsplan-release.md rename to dev/archive/release/entwicklungsplan-release.md diff --git a/dev/release/qa-checkliste.md b/dev/archive/release/qa-checkliste.md similarity index 100% rename from dev/release/qa-checkliste.md rename to dev/archive/release/qa-checkliste.md diff --git a/dev/release/api-legacy-paritaet.md b/dev/betrieb/api-legacy-paritaet.md similarity index 100% rename from dev/release/api-legacy-paritaet.md rename to dev/betrieb/api-legacy-paritaet.md diff --git a/dev/release/deploy-runbook.md b/dev/betrieb/deploy-runbook.md similarity index 86% rename from dev/release/deploy-runbook.md rename to dev/betrieb/deploy-runbook.md index 529a1567..cecfd01c 100644 --- a/dev/release/deploy-runbook.md +++ b/dev/betrieb/deploy-runbook.md @@ -280,3 +280,41 @@ Newsroom-Übersicht, eine alte PM-Detailseite (lädt Bild + Anhang?), Firmenlogo (`config:cache` … `queue:restart`). - Migrationen sind additiv gehalten; kein automatisches `migrate:rollback` in Prod — im Fehlerfall DB-Backup einspielen (Backup **vor** jedem Deploy mit Migrationen!). + +## 10. Betrieb nach Go-Live (Stand 20.07.2026 — System ist LIVE) + +Live-Setup: Hetzner-Cloud-Server via **Ploi**, App unter `~/pressekonto.com`, +Deploys laufen per **SFTP-Datei-Upload** (kein Git-Deploy). Echte Domains +(pressekonto.com, presseecho.de, businessportal24.com) inkl. www-DNS geschaltet, +Stripe im Live-Mode, `legacy:verify` 0 failures. Migration/Cutover: erledigt, +Doku archiviert unter `dev/archive/optimize/cutover-runbook.md`. + +### SFTP-Deploy-Checkliste (jedes Mal) + +1. Geänderte Dateien hochladen. +2. `php artisan view:clear && php artisan view:cache` — **immer bei + Blade-/Volt-Änderungen** (auch Livewire-Komponenten sind Blade-Dateien). +3. `php artisan config:cache` — nur bei `.env`- oder `config/`-Änderungen. +4. `php artisan migrate --force` — nur wenn neue Migrationen dabei sind + (vorher DB-Backup). +5. `php artisan queue:restart` — **immer, wenn PHP-Dateien dabei waren.** + Der Worker ist ein Daemon und hält alten Code im Speicher; ohne Restart + laufen Jobs (KI-Prüfung, Mails) mit dem alten Stand. + +### Betriebs-Erkenntnisse aus der Go-Live-Woche + +- **Worker-Queues:** Der Worker MUSS `--queue=classification,default` fahren + (Abschnitt 4) — sonst bleiben die KI-Jobs liegen und eingereichte PMs + hängen unbemerkt in der Prüfung. +- **Nach MySQL-Neustarts** hängen Worker mitunter in kaputten Verbindungen → + Worker in Ploi neu starten, danach ggf. `php artisan queue:retry all`. +- **Öffentliche Seitendaten** laufen über Stale-while-revalidate-Caching + (`App\Support\WebPageCache`, `Cache::flexible`) — nach `cache:clear` ist der + jeweils erste Aufruf pro Seite langsam (Kaltaufbau), danach dauerhaft schnell. +- **www-Hosts** werden zweifach behandelt: `RedirectWwwToApex`-Middleware + (301 auf die Apex-Domain) plus Host-Normalisierung in `DomainAssetContext` + als Sicherheitsnetz. Ploi kann keine Host-Redirects (nur Pfad-Redirects). +- **Betriebsüberwachung:** Admin ▸ Reports ▸ Betriebsüberwachung (Queue-Worker, + Medien-Privatisierung u. a.) regelmäßig prüfen; Fehlerlog unter + `storage/logs/laravel.log`. +- Offene Punkte und nächste Entwicklungen: `dev/roadmap.md`. diff --git a/dev/release/umami.md b/dev/betrieb/umami.md similarity index 100% rename from dev/release/umami.md rename to dev/betrieb/umami.md diff --git a/dev/roadmap.md b/dev/roadmap.md new file mode 100644 index 00000000..84f7f257 --- /dev/null +++ b/dev/roadmap.md @@ -0,0 +1,50 @@ +# Roadmap / Offene Punkte + +Stand: 20.07.2026 (Go-Live-Tag). Kurzfristiges zuerst; Details zu erledigten +Phasen im Archiv (`dev/archive/`). + +## Nachlauf Go-Live (kurzfristig) + +- [ ] **Go-Live-Mails** an Bestandskunden: erst `php artisan + auth:send-go-live-mails --dry-run` (Anzahl prüfen), dann scharf. + Massenversand läuft über die Queue → Worker-Status vorher grün, + Betriebsüberwachung während des Versands im Blick. +- [ ] **API-Kunden-Mailing** (Connektar & Co.) mit Hinweis auf neue Doku + (`/docs/api/v1`) und Token-Migration — Texte [EXTERN]. +- [ ] **Git-Hygiene (R6.5):** `fix/zeitzone-europe-berlin` nach `main` mergen + + Release-Tag setzen; künftig Feature-Branches von `main`. +- [ ] **Stripe-Test-Artefakte bereinigen:** Test-`stripe_id` am Testuser, + Test-Subscription-Zeilen, STR-Testrechnungen — damit die + Rechnungsnummern-Sequenz sauber ist. +- [ ] **Monitoring scharf:** `MONITORING_ALERT_EMAIL` gesetzt? Cron/Scheduler + + Queue-Worker in Ploi überwacht? +- [ ] **Umami-Snippets** je Domain einbinden (`dev/betrieb/umami.md`). +- [ ] **Connektar-API-Keys rotieren** (mittelfristig — die Legacy-Keys sind + über diverse Test-Kanäle gelaufen; Rotation über `/customer/tokens`). +- [ ] **Alt-System endgültig abschalten**, sobald ein paar Tage stabil: + KAS-Hosting kündigen/stilllegen; vorher letztes Backup der Alt-DBs und + Alt-Uploads sichern. Danach kann auch `dev/migration/` (7 GB lokales + Medien-Staging) auf ein Backup-Medium und vom Arbeitsrechner runter. + +## Beobachten (erste Wochen) + +- [ ] Betriebsüberwachung täglich: failed_jobs, Worker, Medien-Privatisierung. +- [ ] `storage/logs/laravel.log` auf neue Fehlermuster. +- [ ] Search Console: Indexierung der neuen Domains + 301-Ketten der + Legacy-URLs (www-Redirects, .html-Redirects, presskit→Newsroom). +- [ ] MySQL-Auslastung (die Filesort-Spirale ist behoben; bei neuen + Slow-Queries → Slow-Query-Log). + +## Nächste Entwicklungen / Optimierungen (Ideen-Backlog) + +- [ ] Frontend-Audit-Reste aus `dev/archive/frontend-audits/ + frontend-optimize-protokoll.md` sichten — P2/P3-Punkte, die bewusst + liegen geblieben sind. +- [ ] Offene [EXTERN]-Entscheidungen aus dem Release-Plan prüfen + (`dev/archive/release/entwicklungsplan-release.md`): Preisfreigabe, + Refund-Policy. +- [ ] Cache-Warmer im Scheduler (Startseite + Top-Kategorien alle 5 Min + vorbauen), falls Kaltaufbauten nach Deploys stören — Option B aus der + Performance-Session vom 20.07.; aktuell nicht nötig. +- [ ] Redis als Cache-/Queue-Store erwägen, wenn die Last wächst + (aktuell `database`-Store, läuft stabil).