- Set volume to external: true in docker-compose.yml to attach to original user uploads volume. - Fixed PHP Fatal error by preventing literal pass-by-reference in bind_param. - Made JSON null parsing for carrier_id more robust. - Added error logging to api_error.log for future debugging.
Trekking Packliste
Eine moderne, webbasierte Anwendung zur Verwaltung von Packlisten für Wanderungen, Trekking-Touren und Reisen. Die Anwendung hilft dir, deine Ausrüstung zu organisieren, das Gewicht zu optimieren und nichts Wichtiges zu vergessen. Besonderer Fokus liegt auf der Zusammenarbeit in Haushalten und einer hierarchischen Packstruktur (z.B. Inhalt im Kulturbeutel im Rucksack).
Inhaltsverzeichnis
Funktionen
- Artikeldatenbank: Erfasse deine gesamte Ausrüstung mit Bild, Gewicht, Hersteller und Kategorie.
- Rucksack-Management: Definiere deine Rucksäcke inkl. Fächern (Deckelfach, Bodenfach, etc.).
- Intelligente Packlisten:
- Drag & Drop Editor: Ziehe Artikel einfach aus deinem Bestand in die Liste.
- Container-Logik: Weise Trägern Rucksäcke zu. Die Fächer erscheinen automatisch als Ordner, in die du packen kannst.
- Verschachtelung (Nesting): Organisiere deine Liste logisch (z.B. Erste-Hilfe-Set im Deckelfach).
- Haushalts-Modus: Teile deinen Artikelbestand und deine Listen mit Familie oder Freunden.
- Gewichtskalkulation: Sieh sofort, wie schwer dein Rucksack ist und wie viel Gewicht auf welche Kategorie (z.B. "Kochen", "Schlafen") entfällt.
- Druck-Optimierung: Generiere eine übersichtliche PDF/Druckansicht zum Abhaken.
- Modernes UI: Responsive Oberfläche mit Dark-Glass-Effekten.
Installation
Voraussetzungen
- Webserver (Apache mit
mod_rewriteempfohlen, oder Nginx) - PHP 8.0 oder höher
- MariaDB / MySQL Datenbank
- PHP-Erweiterungen:
mysqli,gd(für Bildbearbeitung)
Neuinstallation
-
Dateien hochladen: Kopiere alle Dateien aus diesem Repository in das Web-Verzeichnis deines Servers (z.B.
/var/www/html/packliste). -
Datenbank einrichten:
- Erstelle eine leere Datenbank (z.B.
packliste). - Importiere die Datei
packliste.sqlin diese Datenbank (z.B. via phpMyAdmin oder Konsole).
- Erstelle eine leere Datenbank (z.B.
-
Konfiguration:
- Erstelle eine Datei
config.iniaußerhalb des öffentlichen Web-Verzeichnisses (z.B. ein Verzeichnis höher alsindex.php). - Inhalt der
config.ini:servername = localhost username = dein_db_benutzer password = dein_db_passwort dbname = packliste - Hinweis: Die Anwendung sucht standardmäßig unter
../config.ini.
- Erstelle eine Datei
Docker Deployment (Empfohlen)
Die Anwendung wird bei jedem Push ins Git automatisch gebaut und in der internen Registry 172.30.1.213 als Docker-Image zur Verfügung gestellt. Du kannst sie ganz bequem per Docker Compose bereitstellen.
-
Konfigurieren: Kopiere die beiliegende
.env.examplezu.envund trage dort deine Datenbank-Zugangsdaten ein:cp .env.example .env nano .env -
Starten: Führe im Verzeichnis den folgenden Befehl aus:
docker compose up -d -
Update (Aktualisierung): Wenn ein neues Update verfügbar ist, reicht dieser Einzeiler:
docker compose pull && docker compose up -d(Die alten Container werden automatisch ersetzt, das Volume mit den hochgeladenen Bildern bleibt erhalten.)
Bedienungsanleitung
1. Erste Schritte & Haushalte
Nach der Registrierung landest du auf dem Dashboard. Die App ist darauf ausgelegt, dass man Ausrüstung teilen kann.
- Haushalt gründen: Unter dem Menüpunkt "Haushalt" kannst du einen neuen Haushalt erstellen (z.B. "WG Müller" oder "Familie Schmidt").
- Mitglieder einladen: Als Admin des Haushalts kannst du andere registrierte Benutzer per Benutzernamen einladen. Diese sehen nach dem Login eine Einladung, die sie annehmen können.
- Vorteil: Alle Artikel, die als "Für Haushalt freigegeben" markiert sind, können von allen Mitgliedern in deren Packlisten verwendet werden.
2. Ausrüstung verwalten (Artikel & Rucksäcke)
- Artikel: Pfleg deinen Bestand unter "Artikel". Du kannst Bilder hochladen, eine URL angeben oder Bilder per Copy & Paste einfügen.
- Rucksäcke: Unter "Rucksäcke" legst du deine Transportmittel an. Definiere hier auch die Fächer (z.B. Hauptfach, Deckelfach, Hüftgurt). Diese dienen später als Container in deinen Listen.
3. Packlisten erstellen & bearbeiten
Dies ist das Herzstück der Anwendung.
- Gehe zu "Packlisten" und erstelle eine neue Liste.
- Rucksack-Zuweisung: Wähle direkt beim Erstellen (oder später unter "Details bearbeiten"), wer welchen Rucksack trägt.
- Vorlagen nutzen: Wähle optional eine Vorlage aus, um deine Liste mit vordefinierten Artikeln und Strukturen zu starten.
- Klicke in der Übersicht auf "Artikel verwalten" (das Box-Icon).
Packlisten-Vorlagen (Templates)
Du kannst jede existierende Packliste als Vorlage speichern, um sie später wiederzuverwenden.
- Vorlage erstellen: Klicke in der Übersicht "Packlisten" bei einer deiner Listen auf das gelbe "Speichern"-Icon ("Als Vorlage speichern").
- Vorlagen verwalten: Wechsle in der Übersicht oben auf den Tab "Vorlagen". Hier kannst du deine Vorlagen bearbeiten oder löschen.
- Liste aus Vorlage: Beim Erstellen einer neuen Packliste kannst du im Dropdown "Vorlage verwenden" eine deiner gespeicherten Vorlagen auswählen. Der gesamte Inhalt (Artikel, Fächer, Träger) wird in die neue Liste kopiert.
Der Packlisten-Editor (Drag & Drop)
Der Editor ist zweigeteilt:
- Links: Dein verfügbarer Artikelbestand (filterbar).
- Rechts: Deine Packliste, gruppiert nach Trägern und deren Rucksäcken/Fächern.
Bedienung:
- Packen: Ziehe Artikel in die entsprechenden Fächer deines Rucksacks.
- Verschachteln: Du kannst Artikel auch in andere Artikel ziehen (z.B. "Socken" in "Packbeutel").
- Sortieren: Ziehe Artikel nach oben oder unten, um die Reihenfolge zu ändern.
4. Drucken & Export
Klicke in der Packlisten-Übersicht auf "Details ansehen" (Augen-Icon).
- Ansicht: Du siehst eine hierarchische Baumstruktur deiner Liste. Rucksäcke sind grün hinterlegt.
- Drucken: Klicke auf "Drucken". Die Ansicht ist speziell für Papier optimiert (fettgedruckte Fächer, Checkboxen für Artikel).
5. Profil & Einstellungen
Unter "Profil" kannst du dein Passwort ändern und App-Einstellungen vornehmen.
Technologie
Das Projekt basiert auf bewährten Web-Standards:
- Backend: PHP 8.2 (Natives PHP, keine schweren Frameworks)
- Frontend: HTML5, CSS3 (Custom Theme), Bootstrap 5
- Datenbank: MariaDB / MySQL
- JavaScript: Vanilla JS + Sortable.js (für Drag & Drop) + Chart.js (für Diagramme).
Changelog
08.12.2025
- Feature: Packlisten-Templates
- Neue Funktion zum Speichern von Packlisten als Vorlagen.
- Separater Tab "Vorlagen" in der Übersicht.
- Erstellen von neuen Listen auf Basis von Vorlagen (kopiert Artikel, Hierarchie und Trägerzuordnung).
- Zentrale Kopier-Logik implementiert (Fix für
duplicate_packing_list.php: Rucksäcke werden nun korrekt mitkopiert).
06.12.2025
- Rucksäcke:
- Neues Feld für Hersteller-Link (Product URL) hinzugefügt.
- "Info"-Button in der Übersicht öffnet den hinterlegten Link (Design angepasst auf Grün).
- Fix: Eingabefeld für neue Hersteller erscheint nun zuverlässig.
- Artikel:
- Komfort-Funktion: Auswahl aus den letzten 24 hochgeladenen Bildern beim Erstellen neuer Artikel hinzugefügt.
- Packlisten:
- Editor: Filter-Optionen ("Alle Kategorien", "Alle Hersteller") korrigiert und erweitert.
- Erstellung:
- Validierung hinzugefügt, die verhindert, dass ein Rucksack mehrfach zugewiesen wird.
- Critical Fix: Browser-Freeze durch Endlosschleife bei der Validierung behoben.
- Details:
- Design-Update: Diagramme verwenden nun kontrastreiche Grüntöne passend zum Thema (ohne weiße Rahmen).
- Statistik: Klickbare Trägernamen öffnen ein Modal mit detaillierten Gewichtsstatistiken pro Kategorie.
- Modulare Rucksack-Erweiterung:
- Fächer können nun direkt mit Artikeln verknüpft werden (z.B. "Hüftgurttasche").
- Diese "Zusatztaschen" werden in der Packliste automatisch als Container angelegt.
- Das Gewicht der Zusatztaschen wird automatisch zum Rucksack-Gesamtgewicht addiert.
- Rucksack-Kategorie: Rucksäcke können nun einer Kategorie (z.B. "Transport") zugewiesen werden, damit sie in der Statistik korrekt auftauchen.
- Fixes:
- Datenbank-Selbstheilung (
Auto-Migration) inbackpacks.phpundedit_backpack.phpintegriert. packliste.sqlaktualisiert.- Anzeige-Probleme bei Dropdowns behoben.
- SQL-Fehler in der Statistik-Berechnung korrigiert.
- Datenbank-Selbstheilung (
11.05.2026
- Fixes:
- Fehler bei der Artikelanzahl behoben: Wenn ein Artikel mehrfach im Bestand vorhanden ist (z.B. 5 Stück), verschwindet er nicht mehr aus der Auswahlliste, nachdem das erste Stück in einen Rucksack gezogen wurde.
- Bugfix für Session-Timeouts ("Headers already sent"): Die PHP-Sitzung wird nun korrekt überprüft und verarbeitet, bevor HTML-Header gesendet werden (z.B. in
backpacks.php). - Session Timeout (Ausloggen) auf 24 Stunden verlängert (per
.htaccess).