mein-sterntours/INIT.md
2026-01-23 17:34:40 +01:00

455 lines
8.8 KiB
Markdown

# 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 <repository-url> 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>
# Package entfernen
./vendor/bin/sail composer remove <package>
# 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! 🚀**