- Implemented clean MVC architecture with Router, Controller, and Model base classes - Created database migrations for users, bands, bookings, reviews, and availability - Set up Tailwind CSS with yellow color scheme and modern design - Added Alpine.js for reactive JavaScript components - Configured Vite for asset building and hot module replacement - Created authentication and role-based middleware - Implemented helper functions and configuration system - Added comprehensive README with setup instructions - Configured Apache with proper rewrite rules and security headers - Set up Composer and npm package management with modern dependencies
🎸 GetYourBand - Bandvermittlungsplattform
Eine moderne, professionelle Plattform für die Vermittlung von Live-Bands in der Schweiz.
🚀 Features
- ✨ Moderne MVC-Architektur - Saubere Trennung von Logik, Daten und Präsentation
- 🎨 Tailwind CSS - Modernes, responsives Design mit gelben Farbtönen
- ⚡ Alpine.js - Leichtgewichtige JavaScript-Interaktivität
- 🔐 Authentifizierung - Login, Registrierung, E-Mail-Verifizierung
- 👥 Mehrere Rollen - Admin, Band, Kunde
- 🔍 Erweiterte Suche - Nach Genre, Ort, Preis filtern
- ⭐ Bewertungssystem - Nur nach Buchung möglich
- 📅 Verfügbarkeitskalender - Bands können Verfügbarkeit verwalten
- 💳 PayPal-Integration - Optional aktivierbare Zahlungen
- 📧 E-Mail-Benachrichtigungen - Automatische Updates
- 🛡️ DSGVO-konform - Cookie-Banner, Datenschutz
- 📱 Mobile-First - Optimiert für alle Geräte
📋 Voraussetzungen
- PHP 8.3 oder höher
- MySQL 5.7+ oder MariaDB 10.3+
- Apache mit mod_rewrite
- Composer
- Node.js & npm (für Frontend-Build)
🔧 Installation
1. Repository klonen
git clone <repository-url>
cd ai_playgroud
2. PHP-Abhängigkeiten installieren
composer install
3. Frontend-Abhängigkeiten installieren
npm install
4. Umgebungskonfiguration
cp .env.example .env
Passe die .env-Datei an:
# Datenbank
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=getyourband
DB_USERNAME=root
DB_PASSWORD=dein_passwort
# Mail (SMTP)
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=deine@email.ch
MAIL_PASSWORD=dein_passwort
# Optional: PayPal
PAYPAL_CLIENT_ID=deine_client_id
PAYPAL_SECRET=dein_secret
PAYMENT_ENABLED=true
5. Datenbank erstellen
mysql -u root -p -e "CREATE DATABASE getyourband CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
6. Migrationen ausführen
php migrate.php
7. Frontend-Assets kompilieren
Entwicklung:
npm run dev
Produktion:
npm run build
8. Berechtigungen setzen
chmod -R 755 storage
chmod -R 755 public/uploads
🌐 Entwicklungsserver
Option 1: PHP Built-in Server
cd public
php -S localhost:8000
Öffne: http://localhost:8000
Option 2: Apache/XAMPP
- Erstelle einen Virtual Host oder nutze htdocs
- Stelle sicher, dass
mod_rewriteaktiviert ist - DocumentRoot sollte auf das Hauptverzeichnis zeigen (nicht /public!)
📁 Projektstruktur
.
├── app/
│ ├── Controllers/ # Controller-Klassen
│ ├── Models/ # Datenmodelle
│ ├── Views/ # View-Templates
│ ├── Middleware/ # Middleware (Auth, etc.)
│ ├── Core/ # Kern-Framework (Router, Controller, Model)
│ └── helpers.php # Helper-Funktionen
├── config/ # Konfigurationsdateien
├── database/
│ ├── migrations/ # SQL-Migrationen
│ └── Database.php # Datenbankverbindung
├── public/ # Öffentliches Verzeichnis (DocumentRoot)
│ ├── index.php # Entry Point
│ ├── .htaccess # Apache-Konfiguration
│ ├── css/ # Kompilierte CSS
│ ├── js/ # Kompilierte JS
│ └── uploads/ # User-Uploads
├── resources/
│ ├── css/ # Quell-CSS (Tailwind)
│ └── js/ # Quell-JavaScript
├── routes/
│ └── web.php # Route-Definitionen
├── storage/ # Temporäre Dateien, Logs, Cache
├── .env # Umgebungsvariablen (nicht committen!)
├── composer.json # PHP-Abhängigkeiten
├── package.json # Frontend-Abhängigkeiten
├── tailwind.config.js # Tailwind-Konfiguration
└── vite.config.js # Vite-Build-Konfiguration
🎨 Design & Farben
Das Projekt nutzt ein modernes gelbes Farbschema:
- Primary: Gelb-Orange-Töne (#fbbf24 - #f59e0b)
- Accent: Helles Gelb (#eab308 - #facc15)
- Schrift: Inter (Body), Poppins (Headlines)
🔐 Standard-Admin erstellen
Nach der Migration kannst du einen Admin-Account manuell in der Datenbank erstellen:
INSERT INTO users (email, password, name, role, email_verified_at, is_active)
VALUES (
'admin@getyourband.ch',
'$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', -- "password"
'Admin',
'admin',
NOW(),
1
);
Login: admin@getyourband.ch Passwort: password
⚠️ Wichtig: Ändere das Passwort nach dem ersten Login!
📝 Routen-Übersicht
Öffentlich
GET /- HomepageGET /bands- Band-ListeGET /bands/{slug}- Band-DetailGET /login- Login-FormularPOST /login- Login-VerarbeitungGET /register- Registrierungs-FormularPOST /register- Registrierung
Geschützt (Authentifiziert)
GET /profile- User-ProfilPOST /profile/update- Profil aktualisierenPOST /bookings/create- Buchung erstellenGET /my-bookings- Meine Buchungen
Band-Bereich
GET /band/manage- Band-VerwaltungPOST /band/update- Band aktualisierenGET /band/bookings- Eingehende Buchungsanfragen
Admin-Bereich
GET /admin- Admin-DashboardGET /admin/bands- Band-VerwaltungPOST /admin/bands/{id}/approve- Band freischaltenGET /admin/reviews- Bewertungen moderieren
🧪 Entwicklung
Tailwind-Klassen neu kompilieren
npm run watch
Dies startet einen Watch-Modus, der bei Änderungen automatisch neu kompiliert.
Neue Migration erstellen
Erstelle eine neue SQL-Datei in database/migrations/:
touch database/migrations/007_create_new_table.sql
Führe sie aus:
php migrate.php
Neuen Controller erstellen
<?php
namespace App\Controllers;
use App\Core\Controller;
class MyController extends Controller
{
public function index(): void
{
$this->view('my-view', [
'data' => 'value'
]);
}
}
Neues Model erstellen
<?php
namespace App\Models;
use App\Core\Model;
class MyModel extends Model
{
protected string $table = 'my_table';
protected array $fillable = [
'column1',
'column2',
];
}
🐛 Debugging
Debug-Modus aktivieren in .env:
APP_DEBUG=true
Im Debug-Modus werden ausführliche Fehler angezeigt.
Nützliche Helper-Funktionen
dd($variable); // Dump & Die
config('app.name'); // Konfiguration abrufen
env('DB_HOST'); // Umgebungsvariable
old('field_name'); // Vorheriger Formular-Wert
error('field_name'); // Validierungsfehler
📦 Deployment
Produktion vorbereiten
-
Assets kompilieren:
npm run build -
Composer optimieren:
composer install --optimize-autoloader --no-dev -
Environment:
APP_ENV=production APP_DEBUG=false -
Berechtigungen:
chmod -R 755 storage chmod -R 755 public/uploads -
Apache-Konfiguration:
- DocumentRoot auf Hauptverzeichnis setzen (nicht /public!)
mod_rewriteaktivieren.htaccessermöglichen
🤝 Contributing
- Fork das Projekt
- Feature-Branch erstellen (
git checkout -b feature/AmazingFeature) - Änderungen committen (
git commit -m 'Add some AmazingFeature') - Branch pushen (
git push origin feature/AmazingFeature) - Pull Request öffnen
📄 Lizenz
Proprietary - Alle Rechte vorbehalten
👤 Kontakt
GetYourBand - info@getyourband.ch
🙏 Credits
- Tailwind CSS - https://tailwindcss.com
- Alpine.js - https://alpinejs.dev
- Vite - https://vitejs.dev
- PHP - https://php.net
Made with ❤️ and 🎸 in Switzerland