neonail-database/NEONAIL_PROJECT_PROMPT.md
2025-08-10 18:39:02 +02:00

13 KiB
Executable File

🎨 NeoNail DB - Projekt Prompt

📋 Projekt-Übersicht

NeoNail DB ist eine Laravel-basierte Webanwendung zur Verwaltung von NeoNail-Nagellack-Sammlungen.

🎯 Hauptfunktionen

  • Kollaborative Nagellack-Datenbank
  • User können eigene Lacke hinzufügen (werden automatisch zum Hauptkatalog hinzugefügt)
  • Hersteller-Verwaltung für alle User (flexibel und kollaborativ)
  • Mobile-optimiert für Handy-Nutzung im Laden
  • Admin-Interface für User-Verwaltung
  • Bild-Upload mit automatischer Optimierung
  • Suchfunktion nach Name/Nummer
  • SQLite-Datenbank (einfach zu deployen)

🏗️ Technische Architektur

Framework & Versionen

  • Laravel 12.22.1 (PHP 8.4.11)
  • Bootstrap 5 (Responsive Design)
  • Intervention Image (Bildverarbeitung)
  • SQLite (Datenbank)

Datenbank-Schema

-- users (Laravel Standard + is_admin Spalte)
-- manufacturers (Name, Description, Website, Country)
-- nail_polishes (Name, Number, Manufacturer_ID, Image)
-- user_nail_polishes (Pivot-Tabelle für User-Sammlungen)

Wichtige Models

  • User - Benutzer mit nailPolishes() Relationship
  • Manufacturer - Hersteller mit nailPolishes() Relationship
  • NailPolish - Nagellacke mit users() und manufacturer() Relationship

🔧 Aktuelle Deployment-Situation

Webspace-Status

  • URL: http://192.168.30.81/
  • Struktur: Direkt im HTML-Verzeichnis
  • Status: Neue .env Datei erstellt, Setup bereit

Datei-Struktur auf Webspace

/html/ (oder /var/www/html/)
├── .htaccess              ← Umleitung auf public/
├── index.php              ← Fallback-Umleitung
├── .env                   ← Konfiguration (neu erstellt)
├── database.sqlite        ← SQLite-Datenbank im Hauptverzeichnis
├── public/                ← Laravel Document Root
├── app/                   ← Laravel App
├── bootstrap/             ← Laravel Bootstrap
├── config/                ← Laravel Config
├── database/              ← Migrationen
├── resources/             ← Views, Assets
├── routes/                ← Routen
├── storage/               ← Speicher (777 Berechtigungen)
├── vendor/                ← Composer Dependencies
├── test.php               ← PHP-Diagnose
├── laravel-test.php       ← Laravel-Diagnose
├── fix-permissions.sh     ← Berechtigungs-Script
├── setup-html-directory.sh ← Neues Setup-Script
└── env-production-example.txt ← Neue .env Vorlage

Aktuelle .env Konfiguration

APP_NAME="NeoNail DB"
APP_ENV=production
APP_KEY=base64:+LTZYPKjkZ+O3iFTgU2sS+9bNvxxvG8Kw8JSEPiG7Rs=
APP_DEBUG=false
APP_URL=http://192.168.30.81

DB_CONNECTION=sqlite
DB_DATABASE=database.sqlite  # ✅ Korrekt - Datenbank im Hauptverzeichnis

# Weitere Standard-Laravel-Einstellungen...

🚨 Offene Probleme

1. DB_DATABASE Pfad geklärt

Status: Datenbank liegt im Hauptverzeichnis

  • Pfad: /html/database.sqlite (oder /var/www/html/database.sqlite)
  • Konfiguration: DB_DATABASE=database.sqlite

2. Deployment-Status

  • Berechtigungen korrigiert (777 für storage/, bootstrap/cache/)
  • APP_KEY generiert und gesetzt
  • .htaccess Umleitung funktioniert
  • SQLite-Datenbank-Pfad geklärt
  • Composer install ausgeführt
  • Migrationen ausgeführt (inkl. Hersteller-Feature)
  • is_admin Spalte zur users Tabelle hinzugefügt
  • Admin-User erstellt (admin@neonail.com / admin123)
  • Hersteller-Feature vollständig implementiert und deployed
  • Production-Probleme behoben (schwarzer Bildschirm, Login)

🔄 Nächste Schritte

Sofortige Aktionen

  1. DB_DATABASE Pfad geklärt - Datenbank im Hauptverzeichnis
  2. Composer install ausgeführt
  3. Migrationen ausgeführt: php artisan migrate --force
  4. is_admin Spalte zur users Tabelle hinzugefügt
  5. Admin-User erstellt (admin@neonail.com / admin123)
  6. Anwendung getestet - Hersteller-Feature funktioniert
  7. HTTPS-Sicherheit für alle Hersteller-Forms implementiert
  8. Production-Probleme behoben (schwarzer Bildschirm, Login)

Admin-User erstellen

php artisan tinker
use App\Models\User;
User::create([
    'name' => 'Admin',
    'email' => 'admin@neonail.com',
    'password' => bcrypt('admin123'),
    'is_admin' => true
]);

Standard-Login-Daten

Email: admin@neonail.com
Passwort: admin123

📱 Anwendungs-Features

User-Features

  • Meine Sammlung - Eigene Lacke anzeigen/verwalten
  • Verfügbare Lacke - Alle Lacke aus Hauptkatalog
  • Neuen Lack hinzufügen - Erstellt Lack im Hauptkatalog + fügt zur eigenen Sammlung hinzu
  • Hersteller verwalten - Hersteller erstellen, bearbeiten, löschen (für alle User)
  • Bild-Upload - Handykamera-Unterstützung, automatische Optimierung
  • Suche - Nach Name oder Nummer

Admin-Features

  • Dashboard - Übersicht über User, Lacke und Hersteller
  • User-Verwaltung - User erstellen, bearbeiten, löschen
  • Nagellack-Verwaltung - Alle Lacke verwalten
  • Hersteller-Verwaltung - Alle Hersteller verwalten
  • Statistiken - Anwendungs-Statistiken inkl. Hersteller
  • User-Sammlungen - Sammlungen anderer User einsehen

🛠️ Wichtige Dateien

Controllers

  • UserNailPolishController - User-Sammlungen verwalten (erweitert um Hersteller)
  • NailPolishController - Admin-Nagellack-Verwaltung
  • ManufacturerController - Hersteller-Verwaltung für alle User
  • AdminController - Admin-Dashboard und User-Verwaltung (erweitert um Hersteller-Statistiken)
  • LoginController - Authentifizierung

Views

  • user-nail-polishes/ - User-Sammlungs-Views (erweitert um Hersteller-Anzeige)
  • nail-polishes/ - Admin-Nagellack-Views (erweitert um Hersteller-Anzeige)
  • manufacturers/ - Hersteller-Verwaltungs-Views (index, create, edit, show)
  • admin/ - Admin-Interface-Views
  • auth/ - Login-Views

Routes

// User-Routes
/my-collection          - Eigene Sammlung
/available              - Verfügbare Lacke
/create-nail-polish     - Neuen Lack erstellen
/add-to-collection/{id} - Lack zur Sammlung hinzufügen
/remove-from-collection/{id} - Lack aus Sammlung entfernen

// Hersteller-Routes (für alle User)
/manufacturers          - Hersteller-Übersicht
/manufacturers/create   - Neuen Hersteller erstellen
/manufacturers/{id}     - Hersteller anzeigen
/manufacturers/{id}/edit - Hersteller bearbeiten
/manufacturers-search   - AJAX-Suche nach Herstellern

// Admin-Routes
/admin/dashboard        - Admin-Dashboard
/admin/users            - User-Verwaltung
/nail-polishes          - Nagellack-Verwaltung
/admin/statistics       - Statistiken

🔒 Sicherheit

Admin-Zugang

Middleware

  • auth - Authentifizierung erforderlich
  • admin - Nur für admin@neonail.com
  • guest - Nur für nicht-eingeloggte User

📊 Datenbank-Beziehungen

Datenbank-Beziehungen

// User Model
public function nailPolishes() {
    return $this->belongsToMany(NailPolish::class, 'user_nail_polishes');
}

// Manufacturer Model
public function nailPolishes() {
    return $this->hasMany(NailPolish::class);
}

// NailPolish Model
public function users() {
    return $this->belongsToMany(User::class, 'user_nail_polishes');
}

public function manufacturer() {
    return $this->belongsTo(Manufacturer::class);
}

Pivot-Tabelle

user_nail_polishes (user_id, nail_polish_id, timestamps)

Hersteller-Feature

  • Flexibilität: Jeder User kann neue Hersteller erstellen
  • Eindeutigkeit: Hersteller-Namen müssen eindeutig sein
  • Globale Verfügbarkeit: Alle User können alle Hersteller nutzen
  • Automatische Erstellung: Beim Nagellack-Erstellen falls nicht vorhanden
  • Referentielle Integrität: Hersteller können nicht gelöscht werden, wenn Nagellacke zugeordnet sind

🎨 UI/UX Features

Mobile-Optimierung

  • Responsive Bootstrap 5 Design
  • Touch-freundliche Buttons
  • Handykamera-Integration (capture="environment")
  • Optimierte Bildgrößen (400x400px)
  • Intelligente Hersteller-Auswahl mit JavaScript

Design-Elemente

  • Gradient-Hintergrund
  • Glassmorphism-Effekte
  • Font Awesome Icons
  • Bootstrap Cards und Grid-System

🔧 Deployment-Scripts

fix-permissions.sh

# Berechtigungen korrigieren
chmod -R 777 storage/
chmod -R 777 bootstrap/cache/
chmod 664 database.sqlite
chmod 644 .env

deploy-manufacturer-feature.sh

# Hersteller-Feature Deployment
# - Migration-Reihenfolge korrigieren
# - Migrationen ausführen
# - Cache leeren
# - Autoload aktualisieren
# - Berechtigungen setzen

fix-production-issues.sh

# Production-Issues Fix
# - Migration-Reihenfolge korrigieren
# - Migrationen ausführen
# - Cache leeren
# - Autoload aktualisieren
# - Berechtigungen setzen

fix-webspace-production.sh

# Webspace Production Fix
# - Migration-Reset und Neuausführung
# - Cache komplett leeren
# - Autoload optimieren
# - Datenbank-Tabellen prüfen

fix-black-screen.sh

# Schwarzer Bildschirm Fix
# - Debug temporär aktivieren
# - Cache komplett leeren
# - Autoload neu generieren
# - Datenbank-Verbindung testen

fix-user-login.sh

# User Login Fix
# - is_admin Spalte hinzufügen
# - Admin-User erstellen
# - Cache leeren

setup-webspace.sh

# Vollständiges Setup
# - .env erstellen
# - Berechtigungen setzen
# - Composer install
# - Laravel Setup

deploy-sqlite.sh

# SQLite-spezifisches Deployment
# - SQLite-Datenbank erstellen
# - Optimierte Einstellungen

🐛 Bekannte Probleme & Lösungen

1. "Permission denied" Fehler

Lösung: chmod -R 777 storage/ bootstrap/cache/

2. "APP_KEY" Fehler

Lösung: php artisan key:generate oder manueller Key

3. "Database connection failed"

Lösung: SQLite-Datei erstellen, Berechtigungen prüfen

4. "Class not found"

Lösung: composer install oder composer dump-autoload

5. "Images not displayed"

Lösung: php artisan storage:link

6. "no such table: manufacturers"

Lösung: Migrationen ausführen: php artisan migrate --force

7. "Migration-Reihenfolge Fehler"

Lösung: Migration add_manufacturer_id_to_nail_polishes_table nach create_nail_polishes_table verschieben

8. "Schwarzer Bildschirm in Production"

Lösung: fix-black-screen.sh ausführen oder manuell Debug aktivieren und Cache leeren

9. "User-Login funktioniert nicht nach Migrationen"

Lösung: is_admin Spalte zur users Tabelle hinzufügen und Admin-User erstellen

🌐 Production-Deployment

Production-Einstellungen (.env)

APP_ENV=production
APP_DEBUG=false
APP_URL=https://neonail.vogt.de.com

Standard-Login-Daten

Email: admin@neonail.com
Passwort: admin123

Production-Fix Scripts

  • fix-production-issues.sh - Allgemeine Production-Probleme
  • fix-webspace-production.sh - Webspace-spezifische Probleme
  • fix-black-screen.sh - Schwarzer Bildschirm Problem
  • fix-user-login.sh - User-Login Problem

Manuelle Production-Fixes

# Schwarzer Bildschirm
sed -i 's/APP_DEBUG=false/APP_DEBUG=true/' .env
php artisan config:clear
# Cache leeren, Fehler beheben, dann APP_DEBUG=false setzen

# User-Login Problem
php artisan tinker --execute="use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; Schema::table('users', function (Blueprint \$table) { \$table->boolean('is_admin')->default(false)->after('password'); });"
php artisan tinker --execute="use App\Models\User; use Illuminate\Support\Facades\Hash; User::create(['name' => 'Admin', 'email' => 'admin@neonail.com', 'password' => Hash::make('admin123'), 'is_admin' => true]);"

📞 Support-Informationen

Logs

  • storage/logs/laravel.log - Laravel-Logs
  • storage/logs/ - Weitere Logs

Debug-Modus

APP_DEBUG=true  # Für Fehlerdiagnose

Test-Dateien

  • test.php - PHP-Diagnose
  • laravel-test.php - Laravel-spezifische Diagnose

🎯 Projekt-Ziele

Erreicht

  • Kollaborative Datenbank
  • Mobile-Optimierung
  • Admin-Interface
  • Bild-Upload
  • Suchfunktion
  • SQLite-Deployment
  • Hersteller-Verwaltung für alle User
  • HTTPS-Sicherheit für alle Forms
  • Intelligente Hersteller-Auswahl
  • Production-Ready Deployment
  • Vollständige User-Authentifizierung
  • Fehlerbehebung für alle Production-Probleme

Nächste Schritte 🚀

  1. Webspace-Deployment abgeschlossen
  2. Admin-User erstellt (admin@neonail.com / admin123)
  3. Anwendung getestet (inkl. Hersteller-Feature)
  4. Production-Probleme behoben
  5. User-Feedback sammeln
  6. Weitere Features entwickeln

Projekt-Status: 100% abgeschlossen, Production-Ready Letzte Aktion: Alle Production-Probleme behoben, User-Login funktioniert Nächste Aktion: User-Feedback sammeln und weitere Features entwickeln