Shop Projekt - Dokumentation

Changelog: Version 0.1 – Der erste Meilenstein

Vor ein paar Monaten ging der allererste Prototyp online. Seitdem ist viel passiert – Code ist gewachsen, Strukturen haben sich geformt, und aus einer Idee wird langsam ein richtiges System.

Diese Dokumentation ist nicht nur für mich, sondern auch für den Fall gedacht, dass ich irgendwann nicht mehr alleine arbeite – oder externe Unterstützung dazukommt. Sie soll einen schnellen, effizienten Einblick ermöglichen, ohne sich durch tausend Fragezeichen kämpfen zu müssen.

📦 Aktueller Stand: Core-System läuft | 👥 Rollen: Gast, User, Admin | 🌍 Mehrsprachig: DE/EN/FR/JP | 🏗️ Nächste Schritte: Artikel-Verwaltung finalisieren

🗺️ Stufe 0 | 📚 Eröffnet | 📟 2026 06 15 | 📍 Steuerung

Auf einen Blick: Was Version 0.1 bereits kann

Bevor wir ins Detail gehen – hier das große Ganze. Der Shop ist als MVP konzipiert: Er funktioniert, ist mehrsprachig, und man kann Artikel einstellen und durchstöbern. Die Hausaufgaben (Validierung, Sicherheit, Struktur) sind gemacht, jetzt geht es ans Feintuning.

Aktuelle (Juni 2026) Kernfunktionen im Überblick:

  • 🏗️ Core-System: MVC-Architektur mit Router, Dispatcher und App-Lebenszyklus
  • 🔐 Sicherheit & Zugriff: Rollenbasiertes System (Gast, User, Admin) mit Session-Management
  • 🌍 Mehrsprachigkeit: Labelsystem mit Deutsch/Englisch, erweiterbar
  • 🧭 Navigation: Komplexes Menüsystem mit mehrsprachiger Unterstützung
  • 📦 Marktplatz:Artikel erstellen, Artikel auflisten, Detailansichten
  • 👤 Benutzerverwaltung: Registrierung, Login, E-Mail-Bestätigung (PHPMailer)
  • 🗄️ Datenbank: 8 stabile Kernbereiche (User, Produkte, Versand, Support, Tracking, etc.)

💡 Warum dieser Changelog? Damit ich (und ev. andere) nachvollziehen kann, was wann passiert ist – und warum bestimmte Entscheidungen so getroffen wurden. Transparenz schafft Vertrauen, auch im eigenen Code.

🗺️ Roadmap: Auf der Roadmap habe ich gerade mal die Stufe 0.1.7 abgeschlossen. Dennoch hat das Projekt bereits einen großen Umfang, da viele Hintergrundarbeiten bereits auf ein gutem Niveau abgeschlossen wurden.

1. Changelog dieses Projekt (Version 0.1 Prototyp)

Neu: Web Dokumentation

Umsetzung: Da ich selbst nicht mehr durch die ganzen Dateien und Codezeilen durchblicke, habe ich mich entschieden, eine Web-Dokumentation zu erstellen. Hier werden alle wichtigen Informationen, Entscheidungen und Änderungen festgehalten – damit ich (und ev. andere) jederzeit einen klaren Überblick haben.

Modularer JS-Stream-Pfad

Neu: Modularer JS-Stream-Pfad

Umsetzung: Der neue Primärpfad ist aktiv (`dom.js` + `stream.js` + `ajax.php?action=streamModule`). Seitenlogik wird modular über `app/JS/modules/` geladen.

Geändert: Front-Back-Orchestrierung vereinheitlicht

Umsetzung: Route-Manifest, Modul-Lifecycle (`init/mount/cleanup`) und Fehlerpfade wurden auf einen konsistenten Ablauf zusammengeführt.

Veraltet: Legacy-JS-Generatorpfad

Beschreibung: Der frühere Adapterpfad über `dom.php`/`main.js.php` wurde während der Migration als Altpfad geführt und danach vollständig abgelöst.

Entfernt: Alte JS-Struktur im Produktivpfad

Beschreibung: `public/dom.php`, `app/JS/main.js.php`, `app/JS/base.js.php` sowie der Legacy-Ordner `app/JS/page/` wurden aus dem produktiven Refactor-Pfad entfernt.

Behoben: Instabile SPA-Übergänge

Beschreibung: Navigation, CSS-Synchronisierung und Modul-Cleanup wurden stabilisiert, damit Routenwechsel ohne Full-Reload konsistent laufen.

Sicherheit: Endpoint-Gates und Logging vereinheitlicht

Beschreibung: Methodenprüfung, CSRF-Regeln, Rollen-Gates und zentrales Client-Logging wurden im API-Kern konsistent umgesetzt.

Coding-Convention + Optimierungs-Etappen

Abgeschlossen: Coding-Convention-Zyklen 01-14

Umsetzung: Die Bereiche Config, Public, app/model, app/service, app/control, app/helper, app/view, docweb, app/core, app/security, app/bootstrap, app/JS, app/css und dev wurden nacheinander standardisiert. Fokus war: klare Verantwortungen, konsistente Nomenklatur, einheitliche Kommentarregeln und Crash-First ohne stille Fallback-Pfade.

Abgeschlossen: Etappe 15 (public/dev Entknotung)

Umsetzung: Der Dev-Einstieg wurde auf eine saubere 4-Endpunkt-Struktur konsolidiert. Ziel war ein robuster, nachvollziehbarer Entwicklerpfad ohne Legacy-Kreuzkopplungen.

Abgeschlossen: Etappe 16 (Performance + Monitoring)

Umsetzung: Navigation und SPA-Rendering wurden stabilisiert (weniger Flackern, konsistente CSS-Synchronisierung, harte Timeout-Grenzen). Gleichzeitig wurden reproduzierbare Messpunkte und Monitoring-Hooks etabliert.

Abgeschlossen: Etappe 17 (Logging-Neustruktur Backend/Frontend)

Umsetzung: Das Logging wurde in drei klare Ebenen getrennt: error (System-/Programmierfehler), trace (auffällige Anomalien/Ablaufhinweise) und debug (lokales Frontend-Debug). Frontend-Debug bleibt lokal, während trace/error zentral im Backend protokolliert werden.

Abgeschlossen: Roadmap 0.1 (Artikel-Lifecycle)

Umsetzung: Die letzten offenen 0.1-Punkte sind abgeschlossen. Eigene Artikel können im Marketplace und in der Detailansicht bearbeitet sowie mit Bestätigungsdialog gelöscht werden. Der Editor nutzt den bestehenden Bearbeitungsmodus, und die End-to-End-Checks für Edit/Delete sind erfolgreich dokumentiert.

Status: Version 0.1 ist im definierten Scope technisch und dokumentarisch abgeschlossen. Der nächste Schritt ist die fachliche Erweiterung ab 0.2 mit neuen Nutzer- und Handelsfunktionen.

Roadmap 0.1 abgeschlossen: Artikel-Lifecycle

Neu: Owner-Aktionen in Marketplace und Detailansicht

Umsetzung: Berechtigte Nutzer erhalten für eigene Artikel funktionale Bearbeiten- und Löschen-Aktionen. Die Detailansicht verwendet denselben Aktionsblock wie die Marketplace-Kacheln; das Löschen verlangt eine Bestätigung.

Geändert: Artikel bearbeiten über den bestehenden Editor

Umsetzung: Der Einstieg erfolgt über `edit_id`; der vorhandene Editor wird mit den Artikeldaten vorbelegt. Der Backend-Handler prüft Eigentum und Eingaben, speichert die Metadaten und führt anschließend konsistent zur Artikelliste zurück.

Geändert: Artikel löschen über einen eindeutigen Controller-Pfad

Umsetzung: Das Delete-Formular sendet per POST an den `article_editor`-Pfad, der die zentrale Verarbeitung übernimmt. Vor dem Datenbank-Delete werden Eigentum, Ziel-ID und Bildbereinigung geprüft; der Rücksprung wird über den erlaubten Zielknoten gesteuert.

Behoben: Validierung, Rechteprüfung und Sprach-ID-Fehler

Sicherheit und Stabilität: Edit/Delete verwenden zentrale CSRF- und Owner-Prüfungen. Ein Fatal-Fehler durch die Übergabe eines Sprachkürzels statt einer numerischen Sprach-ID wurde behoben; Platzhalter-Links und inkonsistente Sonderpfade wurden entfernt.

Geprüft: End-to-End-Abnahme des Artikel-Lifecycles

Nachweis: Abbrechen lässt einen Artikel unverändert; bestätigtes Löschen entfernt ihn und aktualisiert das Grid. Bearbeiten speichert eine sichtbare Änderung, wurde im Marketplace geprüft und anschließend auf den Ursprungswert zurückgesetzt. Lint-, Fehler- und Navigationsprüfungen verliefen ohne neue Fehler oder Regressionen.

Status: Version 0.1 im definierten Umfang abgeschlossen

Die offenen 0.1-Restpunkte „Artikel bearbeiten“ und „Artikel löschen“ sind technisch und dokumentarisch abgeschlossen. Verbleibende Ausbau-Themen gehören in die folgenden Versionen ab 0.2 und blockieren diesen Meilenstein nicht.

Abschluss: Stabilisierung, Sicherheit und Datenintegrität

Abgeschlossen: Shell-, Content- und Item-Trennung

Umsetzung: Der fragmentierte Ladeprozess ist produktiv aktiv. `index.php` besitzt den Initialload und die Shell, `content.php` liefert Navigationsinhalte, und `item.php` verarbeitet kleine Interaktionen mit klaren JSON-Verträgen. SPA-Navigation läuft ohne zusätzlichen Dokument-Reload; Module werden erst nach erfolgreichem Content-Laden aktiviert.

Abgeschlossen: Artikel bearbeiten und löschen

Umsetzung: Eigentümer können eigene Artikel im Marketplace und in der Detailansicht bearbeiten oder mit Bestätigung löschen. Owner-Prüfungen, Validierung, Redirects, Bildreihenfolge und physische Bildbereinigung wurden end-to-end geprüft.

Behoben: Kategorie-CRUD an aktives Schema angepasst

Umsetzung: Der Kategorie-Editor verwendet jetzt die realen Tabellen- und Spaltenstrukturen. Elternbeziehungen werden über `tb_cat_hierarchy` gepflegt, Namen über das zentrale Labelsystem verwaltet, und Löschungen werden bei Kindern oder zugeordneten Artikeln sichtbar blockiert.

Behoben: Benutzerlöschung mit Artikelbildern

Umsetzung: Artikelbilder werden vor der Benutzerlöschung physisch entfernt und als abhängige Kinddaten in der Löschkaskade berücksichtigt. Die vollständige Löschung eines Testbenutzers mit Artikel und Bild wurde ohne Fremdschlüssel-Fehler verifiziert.

Sicherheit: Unity- und Negativtests abgeschlossen

Nachweis: CSRF-, Rollen-, Fremdobjekt-, ID-, Upload-, Token-, Rate-Limit- und Doppel-Submit-Fälle wurden mit realen HTTP- oder Datenbankprüfungen getestet. Session-Cookies verwenden `HttpOnly` und `SameSite=Lax`; Testdaten und Testuploads wurden nach den Läufen bereinigt.

Offen: SMTP-Produktionsprüfung

Status: Der lokale Mailversand ist wegen absichtlich leerer SMTP-Konfiguration nicht abschließend prüfbar. Der echte Versandtest mit Produktionszugangsdaten und Testempfänger bleibt ein separater Host-Check.