# Sterntours Laravel Projekt - Initialisierung & Setup Diese Dokumentation beschreibt die Initialisierung und Einrichtung des Sterntours Laravel-Projekts. ## 📋 Inhaltsverzeichnis 1. [Voraussetzungen](#voraussetzungen) 2. [Schnellstart](#schnellstart) 3. [Manuelle Installation](#manuelle-installation) 4. [Projekt-Struktur](#projekt-struktur) 5. [Umgebungskonfiguration](#umgebungskonfiguration) 6. [Datenbanken](#datenbanken) 7. [Domains & Routing](#domains--routing) 8. [Häufige Befehle](#häufige-befehle) 9. [Fehlerbehebung](#fehlerbehebung) --- ## Voraussetzungen Bevor du das Projekt initialisierst, stelle sicher, dass folgende Software installiert ist: - **Docker Desktop** (Version 20.10+) - [Download für macOS](https://www.docker.com/products/docker-desktop) - [Download für Windows](https://www.docker.com/products/docker-desktop) - [Download für Linux](https://docs.docker.com/engine/install/) - **Composer** (Version 2.0+) - [Installation Guide](https://getcomposer.org/download/) - **Node.js & NPM** (Version 16+ empfohlen) - [Download](https://nodejs.org/) - **Git** (für Versionskontrolle) - [Download](https://git-scm.com/) --- ## Schnellstart Das Projekt kann mit einem einzigen Befehl initialisiert werden: ```bash bash init.sh ``` Das Script führt automatisch alle notwendigen Schritte aus: 1. ✓ Prüft Docker-Installation 2. ✓ Erstellt `.env` Datei 3. ✓ Installiert Composer-Dependencies 4. ✓ Installiert NPM-Dependencies 5. ✓ Generiert Application Key 6. ✓ Erstellt Docker-Netzwerke 7. ✓ Startet Docker-Container 8. ✓ Führt Datenbank-Migrationen aus 9. ✓ Erstellt Storage-Links 10. ✓ Optimiert die Application --- ## Manuelle Installation Falls du das Projekt manuell einrichten möchtest: ### 1. Repository klonen ```bash git clone sterntours cd sterntours ``` ### 2. Umgebungsvariablen konfigurieren ```bash cp .env.example .env ``` Bearbeite die `.env` Datei nach Bedarf (siehe [Umgebungskonfiguration](#umgebungskonfiguration)). ### 3. Dependencies installieren ```bash # Composer Dependencies composer install # NPM Dependencies npm install ``` ### 4. Application Key generieren ```bash php artisan key:generate ``` ### 5. Docker Proxy-Netzwerk erstellen ```bash docker network create proxy ``` ### 6. Docker Container starten (Laravel Sail) ```bash ./vendor/bin/sail up -d ``` ### 7. Datenbank migrieren ```bash ./vendor/bin/sail artisan migrate ``` ### 8. Storage Links erstellen ```bash ./vendor/bin/sail artisan storage:link ``` ### 9. Cache optimieren ```bash ./vendor/bin/sail artisan config:cache ./vendor/bin/sail artisan route:cache ./vendor/bin/sail artisan view:cache ``` --- ## Projekt-Struktur ``` sterntours/ ├── app/ # Application Code │ ├── Console/ # Artisan Commands │ ├── Http/ # Controllers, Middleware │ ├── Models/ # Eloquent Models │ ├── Services/ # Business Logic │ └── Repositories/ # Data Access Layer ├── config/ # Konfigurationsdateien ├── database/ # Migrations, Seeds, Factories ├── public/ # Öffentliche Assets ├── resources/ # Views, Assets (Sass, JS) ├── routes/ # Route Definitionen ├── storage/ # Logs, Cache, Uploads ├── tests/ # Unit & Feature Tests ├── docker-compose.yml # Docker Setup ├── init.sh # Initialisierungsskript └── INIT.md # Diese Datei ``` --- ## Umgebungskonfiguration ### Wichtige .env Variablen #### Haupt-Datenbank (CRM) ```env DB_CONNECTION=mysql DB_HOST=mysql DB_PORT=3306 DB_DATABASE=stern_crm DB_USERNAME=sail DB_PASSWORD=password ``` #### Stern-Datenbank (Legacy) ```env DB_CONNECTION_STERN=mysql DB_HOST_STERN=mysql-stern DB_PORT_STERN=3306 DB_DATABASE_STERN=stern_db DB_USERNAME_STERN=sail DB_PASSWORD_STERN=password ``` #### Mail-Konfiguration (Mailpit) ```env MAIL_MAILER=smtp MAIL_HOST=mailpit MAIL_PORT=1025 MAIL_ENCRYPTION=null ``` #### Redis Cache ```env REDIS_HOST=redis REDIS_PASSWORD=null REDIS_PORT=6379 ``` --- ## Datenbanken Das Projekt verwendet **zwei separate MySQL-Datenbanken**: ### 1. stern_crm (Haupt-CRM) - **Port:** 33064 - **Verwendung:** Haupt-Application, Kundenverwaltung - **Host in Container:** mysql ### 2. stern_db (Legacy Datenbank) - **Port:** 33065 - **Verwendung:** Alte Stern-Tours Daten - **Host in Container:** mysql-stern ### Datenbankzugriff von außen ```bash # CRM Datenbank mysql -h 127.0.0.1 -P 33064 -u sail -p stern_crm # Stern Datenbank mysql -h 127.0.0.1 -P 33065 -u sail -p stern_db ``` --- ## Domains & Routing Das Projekt verwendet **Traefik** als Reverse Proxy und ist über folgende Domains erreichbar: | Domain | Zweck | Port | |--------|-------|------| | `https://mein.sterntours.test` | Haupt-Application | 443 | | `https://sterntours.test` | Alternative URL | 443 | | `https://assets.sterntours.test` | Vite Dev-Server | 5173 | | `https://sterntours-mail.test` | Mailpit Dashboard | 8025 | ### Hosts-Datei konfigurieren Füge folgende Einträge zu deiner `/etc/hosts` (Linux/Mac) oder `C:\Windows\System32\drivers\etc\hosts` (Windows) hinzu: ``` 127.0.0.1 mein.sterntours.test 127.0.0.1 sterntours.test 127.0.0.1 assets.sterntours.test 127.0.0.1 sterntours-mail.test ``` --- ## Häufige Befehle ### Docker Container ```bash # Container starten ./vendor/bin/sail up -d # Container stoppen ./vendor/bin/sail down # Container neu bauen ./vendor/bin/sail build --no-cache # Logs anzeigen ./vendor/bin/sail logs -f # Spezifischen Service anzeigen ./vendor/bin/sail logs mysql -f ``` ### Artisan Befehle ```bash # Migrationen ausführen ./vendor/bin/sail artisan migrate # Migrationen zurücksetzen ./vendor/bin/sail artisan migrate:rollback # Seeds ausführen ./vendor/bin/sail artisan db:seed # Cache leeren ./vendor/bin/sail artisan cache:clear ./vendor/bin/sail artisan config:clear ./vendor/bin/sail artisan route:clear ./vendor/bin/sail artisan view:clear # Cache optimieren ./vendor/bin/sail artisan config:cache ./vendor/bin/sail artisan route:cache ./vendor/bin/sail artisan view:cache ``` ### Composer ```bash # Packages installieren ./vendor/bin/sail composer install # Package hinzufügen ./vendor/bin/sail composer require # Package entfernen ./vendor/bin/sail composer remove # Autoload aktualisieren ./vendor/bin/sail composer dump-autoload ``` ### NPM / Assets ```bash # Dependencies installieren npm install # Development Build npm run dev # Production Build npm run prod # Watch Mode npm run watch ``` ### Tests ```bash # Alle Tests ausführen ./vendor/bin/sail test # Spezifische Test-Datei ./vendor/bin/sail test tests/Feature/ExampleTest.php # Mit Coverage ./vendor/bin/sail test --coverage ``` ### Shell / SSH ```bash # Shell im Container öffnen ./vendor/bin/sail shell # Root Shell ./vendor/bin/sail root-shell # MySQL Shell ./vendor/bin/sail mysql # Redis CLI ./vendor/bin/sail redis ``` --- ## Fehlerbehebung ### Problem: "Docker is not running" **Lösung:** Starte Docker Desktop und warte, bis es vollständig gestartet ist. ```bash # macOS/Linux sudo systemctl start docker # Windows Starte Docker Desktop über das Startmenü ``` ### Problem: "Port already in use" **Lösung:** Prüfe, welche Ports belegt sind und ändere sie in der `.env` Datei: ```bash # Ports prüfen lsof -i :33064 lsof -i :33065 # In .env ändern FORWARD_DB_PORT=33064 FORWARD_DB_PORT_STERN=33065 ``` ### Problem: "Network proxy not found" **Lösung:** Erstelle das Traefik Proxy-Netzwerk manuell: ```bash docker network create proxy ``` ### Problem: "Permission denied" beim init.sh **Lösung:** Mache das Script ausführbar: ```bash chmod +x init.sh ./init.sh ``` ### Problem: "Class not found" **Lösung:** Regeneriere Composer Autoload: ```bash ./vendor/bin/sail composer dump-autoload ./vendor/bin/sail artisan clear-compiled ``` ### Problem: "Migration failed" **Lösung:** Prüfe Datenbankverbindung und setze zurück: ```bash # Verbindung testen ./vendor/bin/sail artisan tinker >>> DB::connection()->getPdo(); # Migrationen zurücksetzen ./vendor/bin/sail artisan migrate:fresh ``` ### Problem: "Vite/Assets nicht geladen" **Lösung:** Starte den Dev-Server: ```bash npm run dev # oder npm run watch ``` --- ## Support & Kontakt Bei Fragen oder Problemen: 1. Prüfe die [Fehlerbehebung](#fehlerbehebung) 2. Prüfe die [Laravel Dokumentation](https://laravel.com/docs) 3. Prüfe die [Laravel Sail Dokumentation](https://laravel.com/docs/sail) --- ## Changelog ### Version 1.0.0 (2025-11-07) - ✓ Initiales Setup-Script erstellt - ✓ Dokumentation erstellt - ✓ Docker Compose Konfiguration - ✓ Dual-Datenbank Setup - ✓ Traefik Routing konfiguriert --- **Viel Erfolg mit dem Projekt! 🚀**