neonail-database/NEONAIL_PROJECT_PROMPT.md
2025-08-10 19:09:31 +02:00

484 lines
15 KiB
Markdown
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
```sql
-- 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
```env
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. ✅ Mail-System Problem behoben
**Status:** SMTP-Konfiguration korrigiert und getestet
- **SMTP-Server:** mail.selfhost.de:465 (SSL)
- **Credentials:** postmaster@hjzyyqdm.mail.selfhost.de / Ikmyra
- **From-Address:** neonail@vogt.de.com
- **Test:** Erfolgreich an oliver@vogt.de.com gesendet
- **Status:** User-Registrierung und Admin-Benachrichtigungen funktionieren
### 3. 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)
- ✅ Mail-System vollständig funktionsfähig
## 🔄 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)
9.**Mail-System** konfiguriert und getestet (SMTP funktioniert)
### Admin-User erstellen
```bash
php artisan tinker
```
```php
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
```php
// 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
- **Email:** admin@neonail.com
- **Passwort:** Muss noch gesetzt werden
### Middleware
- `auth` - Authentifizierung erforderlich
- `admin` - Nur für admin@neonail.com
- `guest` - Nur für nicht-eingeloggte User
## 📊 Datenbank-Beziehungen
### Datenbank-Beziehungen
```php
// 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
```sql
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
```bash
# Berechtigungen korrigieren
chmod -R 777 storage/
chmod -R 777 bootstrap/cache/
chmod 664 database.sqlite
chmod 644 .env
```
### deploy-manufacturer-feature.sh
```bash
# Hersteller-Feature Deployment
# - Migration-Reihenfolge korrigieren
# - Migrationen ausführen
# - Cache leeren
# - Autoload aktualisieren
# - Berechtigungen setzen
```
### fix-production-issues.sh
```bash
# Production-Issues Fix
# - Migration-Reihenfolge korrigieren
# - Migrationen ausführen
# - Cache leeren
# - Autoload aktualisieren
# - Berechtigungen setzen
```
### fix-webspace-production.sh
```bash
# Webspace Production Fix
# - Migration-Reset und Neuausführung
# - Cache komplett leeren
# - Autoload optimieren
# - Datenbank-Tabellen prüfen
```
### fix-black-screen.sh
```bash
# Schwarzer Bildschirm Fix
# - Debug temporär aktivieren
# - Cache komplett leeren
# - Autoload neu generieren
# - Datenbank-Verbindung testen
```
### fix-user-login.sh
```bash
# User Login Fix
# - is_admin Spalte hinzufügen
# - Admin-User erstellen
# - Cache leeren
```
### test-mail-connection.sh
```bash
# Mail Connection Test
# - SMTP-Verbindung testen
# - Test-Mail an oliver@vogt.de.com senden
# - Mail-Konfiguration prüfen
# - Fehler-Diagnose
```
### fix-mail-config.sh
```bash
# Mail Configuration Fix
# - Mail-Konfiguration auf log-Modus setzen
# - Backup der .env erstellen
# - Cache leeren
# - Test-Mail senden
```
### setup-webspace.sh
```bash
# Vollständiges Setup
# - .env erstellen
# - Berechtigungen setzen
# - Composer install
# - Laravel Setup
```
### deploy-sqlite.sh
```bash
# 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
### 10. "E-Mails werden nicht versendet"
**Lösung:** SMTP-Konfiguration in .env prüfen und `test-mail-connection.sh` ausführen
## 🌐 Production-Deployment
### Production-Einstellungen (.env)
```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
- `test-mail-connection.sh` - Mail-Verbindung testen
- `fix-mail-config.sh` - Mail-Konfiguration reparieren
### Manuelle Production-Fixes
```bash
# 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]);"
# Mail-System Problem
# .env korrekte SMTP-Daten:
MAIL_MAILER=smtp
MAIL_HOST=mail.selfhost.de
MAIL_PORT=465
MAIL_USERNAME=postmaster@hjzyyqdm.mail.selfhost.de
MAIL_PASSWORD=Ikmyra
MAIL_ENCRYPTION=SSL
MAIL_FROM_ADDRESS="neonail@vogt.de.com"
MAIL_FROM_NAME="${APP_NAME}"
# Cache leeren nach .env Änderung
php artisan config:clear
# Mail-Verbindung testen
php artisan tinker --execute="use Illuminate\Support\Facades\Mail; Mail::raw('Test-Mail von NeoNail DB - ' . now(), function(\$message) { \$message->to('oliver@vogt.de.com')->subject('NeoNail DB - SMTP Test')->from('neonail@vogt.de.com', 'NeoNail DB'); }); echo 'Test-Mail gesendet';"
```
## 📞 Support-Informationen
### Logs
- `storage/logs/laravel.log` - Laravel-Logs
- `storage/logs/` - Weitere Logs
### Debug-Modus
```env
APP_DEBUG=true # Für Fehlerdiagnose
```
### Test-Dateien
- `test.php` - PHP-Diagnose
- `laravel-test.php` - Laravel-spezifische Diagnose
- `test-mail-connection.sh` - Mail-Verbindung testen
- `smtp-mail-setup.md` - Mail-Konfiguration Anleitung
- `mail-configuration-fix.md` - Mail-Problem Lösung
## 🎯 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
- Vollständiges Mail-System (SMTP funktioniert)
- User-Registrierung mit E-Mail-Benachrichtigungen
- Admin-Benachrichtigungen bei neuen Usern
### 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. ✅ Mail-System vollständig funktionsfähig
6. User-Feedback sammeln
7. Weitere Features entwickeln
---
**Projekt-Status:** 100% abgeschlossen, Production-Ready
**Letzte Aktion:** Mail-System vollständig funktionsfähig, SMTP-Test erfolgreich
**Nächste Aktion:** User-Feedback sammeln und weitere Features entwickeln