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
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.