# 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 1. [Features](#funktionen) 2. [Installation & Einrichtung](#installation) 3. [Bedienungsanleitung](#bedienungsanleitung) * [Erste Schritte & Haushalte](#1-erste-schritte--haushalte) * [Ausrüstung verwalten (Artikel)](#2-ausrüstung-verwalten-artikel) * [Stammdaten (Kategorien, Orte, Hersteller)](#3-stammdaten-kategorien-orte-hersteller) * [Packlisten erstellen & bearbeiten](#4-packlisten-erstellen--bearbeiten) * [Drucken & Export](#5-drucken--export) * [Profil & Einstellungen](#6-profil--einstellungen) 4. [Technologie](#technologie) --- ## 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_rewrite` empfohlen, oder Nginx) * PHP 8.0 oder höher * MariaDB / MySQL Datenbank * PHP-Erweiterungen: `mysqli`, `gd` (für Bildbearbeitung) ### Neuinstallation 1. **Dateien hochladen:** Kopiere alle Dateien aus diesem Repository in das Web-Verzeichnis deines Servers (z.B. `/var/www/html/packliste`). 2. **Datenbank einrichten:** * Erstelle eine leere Datenbank (z.B. `packliste`). * Importiere `packliste.sql` und anschließend `mysql_update.sql` (für die neuesten Features). 3. **Konfiguration:** * Erstelle eine Datei `config.ini` **außerhalb** des öffentlichen Web-Verzeichnisses (z.B. ein Verzeichnis höher als `index.php`). * Inhalt der `config.ini`: ```ini servername = localhost username = dein_db_benutzer password = dein_db_passwort dbname = packliste ``` * *Hinweis:* Die Anwendung sucht standardmäßig unter `../config.ini`. ### Upgrade (Vorhandene Installation) 1. Führe das SQL-Skript `mysql_update.sql` auf deiner Datenbank aus. 2. Überschreibe die PHP-Dateien mit der neuesten Version. ### Docker Deployment Die Anwendung ist vollständig containerisiert ("Dockerized"). Du kannst sie direkt als Container starten und mit einer beliebigen externen MySQL/MariaDB-Datenbank verbinden. 1. **Image bauen:** ```bash docker build -t packliste-app . ``` 2. **Container starten:** (Ersetze die Platzhalter durch deine Datenbank-Zugangsdaten) ```bash docker run -d \ -p 8080:80 \ -e DB_HOST="deine-datenbank-ip" \ -e DB_USER="dein_db_user" \ -e DB_PASSWORD="dein_db_passwort" \ -e DB_NAME="packliste" \ --name packliste-container \ packliste-app ``` Die App ist anschließend unter `http://localhost:8080` erreichbar. --- ## 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. 1. Gehe zu **"Packlisten"** und erstelle eine neue Liste. 2. **Rucksack-Zuweisung:** Wähle direkt beim Erstellen (oder später unter "Details bearbeiten"), wer welchen Rucksack trägt. 3. Klicke in der Übersicht auf **"Artikel verwalten"** (das Box-Icon). #### 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).