LMIV-SNACKAUTOMAT/README.md

6.6 KiB

LMIV Snackautomat Management System

Ein Laravel-basiertes Web-Management-System für Snackautomaten mit vollständiger LMIV-Konformität (Lebensmittelinformationsverordnung).

Neue Features

🔐 Backend-Authentifizierung

  • Sicheres Admin-Backend mit Login-System
  • Benutzerregistrierung und -verwaltung
  • Session-basierte Authentifizierung

🔗 Direkte Automaten-URLs

  • Automaten können direkt über URL aufgerufen werden
  • Format: http://ihre-domain/machine/{id}
  • Ideal für QR-Codes oder Direktlinks

🗄️ MySQL-Unterstützung

  • Vollständige MySQL-Datenbankunterstützung
  • Einfache Migration von SQLite zu MySQL
  • Netzwerk-fähige Datenbank für mehrere Clients

Features

🍫 Produktkatalog mit LMIV-Daten

  • Vollständige Nährwertangaben pro 100g
  • Zutatenlisten und Allergen-Informationen
  • Hersteller- und Herkunftsangaben
  • Aufbewahrungshinweise und Verwendungsempfehlungen
  • Produktbilder

🏪 Automatenverwaltung

  • Verwaltung mehrerer Snackautomaten
  • Standortinformationen
  • Status-Verwaltung (aktiv/inaktiv)

📦 Fachverwaltung

  • Konfiguration der Automatenfächer mit Fachnummern
  • Kapazitätsverwaltung
  • Produkt-zu-Fach-Zuordnung
  • Bestandsverwaltung

🖥️ Öffentliche Anzeige

  • Benutzerfreundliche Auswahl nach Fachnummer
  • Produktinformationen gemäß LMIV auf Knopfdruck
  • Responsive Design für Touch-Displays
  • Übersichtliche Darstellung verfügbarer Produkte

👨‍💼 Admin-Backend

  • Komplette Produktverwaltung
  • Automatenkonfiguration
  • Fach- und Bestandsverwaltung
  • Dashboard mit Übersicht

Technische Anforderungen

  • PHP 8.1 oder höher
  • Composer
  • SQLite/MySQL/PostgreSQL
  • Node.js (optional, für Asset-Kompilierung)

Installation

1. Repository klonen/herunterladen

# Falls Git verwendet wird
git clone <repository-url>
cd LMIV-Snackautomat

# Oder das Projekt direkt verwenden wenn bereits vorhanden
cd d:\Entwicklung\LMIV-Snackautomat

2. Abhängigkeiten installieren

composer install

3. Umgebung konfigurieren

# .env-Datei erstellen (falls nicht vorhanden)
cp .env.example .env

# Application Key generieren (falls noch nicht geschehen)
php artisan key:generate

4. Datenbank einrichten

# Migrationen ausführen
php artisan migrate

# Beispieldaten laden (optional)
php artisan db:seed --class=ProductSeeder

# Storage-Link erstellen für Produktbilder
php artisan storage:link

5. Server starten

# Für lokale Entwicklung
php artisan serve

# Für Netzwerkzugriff (alle Geräte im Netzwerk)
php artisan serve --host=0.0.0.0 --port=8001

Die Anwendung ist dann unter http://localhost:8000 (lokal) oder http://ihre-ip:8001 (Netzwerk) erreichbar.

Verwendung

Öffentliche Anzeige

  • Hauptseite: http://localhost:8001
  • Direkte Automatenwahl: http://localhost:8001/machine/{id}
  • Zeigt alle verfügbaren Produkte mit Fachnummern
  • Klick auf Produkt zeigt LMIV-Informationen

Admin-Bereich (Login erforderlich)

  • Admin Login: http://localhost:8001/login
  • Admin Dashboard: http://localhost:8001/admin
  • Produktverwaltung: http://localhost:8001/admin/products
  • Automatenverwaltung: http://localhost:8001/admin/vending-machines
  • Fachverwaltung: http://localhost:8001/admin/slots

Standard-Anmeldedaten

⚠️ WICHTIG: Ändern Sie diese Passwörter nach dem ersten Login!

Projektstruktur

app/
├── Http/Controllers/
│   ├── ProductController.php          # Produktverwaltung
│   ├── VendingMachineController.php   # Automatenverwaltung
│   ├── SlotController.php             # Fachverwaltung
│   └── VendingDisplayController.php   # Öffentliche Anzeige
├── Models/
│   ├── Product.php                    # Produkt-Model mit LMIV-Daten
│   ├── VendingMachine.php             # Automat-Model
│   ├── Slot.php                       # Fach-Model
│   └── SlotProduct.php                # Zuordnung Fach-Produkt
database/
├── migrations/                        # Datenbankstruktur
└── seeders/
    └── ProductSeeder.php              # Beispieldaten
resources/views/
├── layouts/
│   └── app.blade.php                  # Haupt-Layout
├── vending/                           # Öffentliche Anzeige
│   ├── index.blade.php               # Hauptseite
│   └── product-details.blade.php     # LMIV-Detailansicht
└── admin/                            # Admin-Bereich
    ├── dashboard.blade.php           # Admin-Dashboard
    └── products/                     # Produktverwaltung

LMIV-Konformität

Das System unterstützt alle relevanten Angaben gemäß der EU-Lebensmittelinformationsverordnung:

  • Nährwerte: Brennwert (kJ/kcal), Fett, gesättigte Fettsäuren, Kohlenhydrate, Zucker, Eiweiß, Salz
  • Zutaten: Vollständige Zutatenliste
  • Allergene: Kennzeichnung allergener Stoffe
  • Herkunft: Herkunftsangaben
  • Hersteller: Herstellerinformationen
  • Aufbewahrung: Lagerungshinweise
  • Mindesthaltbarkeit: Haltbarkeitsinformationen

MySQL-Einrichtung

Für die Verwendung mit MySQL folgen Sie der Anleitung in MYSQL_SETUP.md:

  1. MySQL-Datenbank erstellen
  2. Benutzer anlegen
  3. .env für MySQL konfigurieren
  4. Migrationen ausführen
# Nach MySQL-Setup
php artisan migrate
php artisan db:seed --class=AdminUserSeeder
php artisan db:seed --class=ProductSeeder

Design anpassen

  • CSS-Framework: Tailwind CSS
  • Layout-Datei: resources/views/layouts/app.blade.php
  • Farbschema in Tailwind-Klassen anpassbar

Weitere Felder hinzufügen

  1. Migration erstellen: php artisan make:migration add_field_to_products_table
  2. Model erweitern: app/Models/Product.php - $fillable Array
  3. Controller anpassen: Validierung in ProductController.php
  4. Views erweitern: Formulare und Anzeigen

Mehrsprachigkeit

  • Laravel Localization kann nachträglich integriert werden
  • Views sind bereits strukturiert für einfache Übersetzung

Support & Wartung

Backup

# Datenbank-Backup
php artisan backup:run

# Produktbilder: storage/app/public/products/

Updates

# Abhängigkeiten aktualisieren
composer update

# Cache leeren nach Updates
php artisan cache:clear
php artisan config:clear
php artisan view:clear

Lizenz

Dieses Projekt steht unter der MIT-Lizenz. Weitere Details in der LICENSE-Datei.

Entwickelt für

  • Betreiber von Snackautomaten
  • Catering-Unternehmen
  • Büro- und Industriekomplexe
  • Bildungseinrichtungen
  • Jeder, der LMIV-konforme Produktinformationen bereitstellen muss