alex-kassel/laravel-domains

Laravel helper to create/manage local domain packages under /domains

v1.0.0 2025-08-14 11:43 UTC

This package is auto-updated.

Last update: 2025-08-14 11:57:35 UTC


README

PHP Version Laravel Version License

Ein Laravel-Helfer zur einfachen Erstellung und Verwaltung lokaler Domain-Pakete unter dem /domains Verzeichnis. Ermöglicht modulare Entwicklung mit automatischer Composer-Integration und Symlink-Erstellung. Perfekt für Entwickler, die ihre Anwendungen in Domains strukturieren und diese bei Bedarf zu echten Laravel-Paketen auf Packagist veröffentlichen möchten.

🚀 Features

  • Einfache Domain-Erstellung: Erstellen Sie neue Domain-Pakete mit einem einzigen Befehl
  • Automatische Composer-Integration: Repository-Einträge werden automatisch zu Ihrer composer.json hinzugefügt
  • Symlink-Erstellung: Automatische Verknüpfungen für einfache Entwicklung
  • Vollständige Paket-Struktur: Vorlagen für Models, Controller, Views, Routes, Tests und mehr
  • Git-Integration: Optionale Git-Initialisierung für neue Domains
  • Bulk-Installation: Installieren Sie alle Domains auf einmal
  • Modulare Struktur: Ersetzen Sie Laravels /app Verzeichnis durch strukturierte Domains
  • Packagist-Ready: Domains können einfach zu echten Laravel-Paketen werden

📋 Voraussetzungen

  • PHP >= 8.1
  • Laravel ^10.0|^11.0|^12.0
  • Composer

🔧 Installation

1. Paket installieren

composer require alex-kassel/laravel-domains

2. Stubs veröffentlichen (optional)

php artisan vendor:publish --provider="AlexKassel\LaravelDomains\LaravelDomainsServiceProvider" --tag=laravel-domains-stubs

Die Stubs werden standardmäßig nach stubs/alex-kassel/laravel-domains/domain kopiert, wo Sie sie nach Ihren Bedürfnissen anpassen können.

🎯 Verwendung

Neue Domain erstellen

# Basis-Domain erstellen
php artisan domains:make vendor/package-name

# Mit Git-Initialisierung
php artisan domains:make vendor/package-name --git

# Mit automatischer Installation
php artisan domains:make vendor/package-name --install

# Alle Optionen kombinieren
php artisan domains:make vendor/package-name --git --install

Domain installieren

# Einzelne Domain installieren
php artisan domains:install vendor/package-name

# Alle Domains installieren
php artisan domains:install --all

📁 Verzeichnisstruktur

Nach der Erstellung einer Domain wird folgende Struktur erstellt:

domains/
└── vendor/
    └── package-name/
        ├── config/
        ├── database/
        │   └── migrations/
        ├── resources/
        │   └── views/
        ├── routes/
        ├── src/
        │   ├── Models/
        │   ├── Controllers/
        │   └── Providers/
        ├── tests/
        ├── composer.json
        ├── LICENSE
        └── README.md

🔄 Workflow

1. Domain erstellen

php artisan domains:make mycompany/user-management

2. Domain anpassen

Bearbeiten Sie die generierten Dateien nach Ihren Bedürfnissen:

  • Models in src/Models/
  • Controller in src/Controllers/
  • Views in resources/views/
  • Routes in routes/web.php
  • Konfiguration in config/

3. Domain installieren

php artisan domains:install mycompany/user-management

Dieser Befehl:

  • Fügt das Repository zu Ihrer composer.json hinzu
  • Installiert das Paket via Composer
  • Erstellt Symlinks für einfache Entwicklung

4. In Ihrer Anwendung verwenden

// Routes sind automatisch verfügbar
Route::get('/users', [UserController::class, 'index']);

// Views mit Namespace
return view('user-management::users.index');

// Models
use MyCompany\UserManagement\Models\User;

5. Optional: Zu echten Paketen werden

# Domain in separates Repository kopieren
cp -r domains/mycompany/user-management /path/to/separate/repo

# Composer.json anpassen (Name, Description, etc.)
# Auf GitHub/GitLab hochladen
# Bei Packagist registrieren

⚙️ Konfiguration

Composer Repository

Das Paket fügt automatisch einen Path-Repository-Eintrag hinzu:

{
  "repositories": [
    {
      "type": "path",
      "url": "domains/vendor/package-name",
      "options": {
        "symlink": true
      }
    }
  ]
}

Service Provider

Jede Domain bringt einen eigenen Service Provider mit, der automatisch geladen wird.

Verzeichnisstruktur der Anwendung

Mit diesem Paket können Sie Laravels Standard-/app Verzeichnis durch eine modulare Domain-Struktur ersetzen:

laravel-project/
├── domains/                    # Hier entwickeln Sie Ihre Module
│   ├── privat/
│   │   ├── sandbox/           # Persönliche Experimente
│   │   ├── homepage/          # Eigene Homepage
│   │   └── calc/              # Taschenrechner-App
│   ├── mycompany/
│   │   ├── user-management/   # Benutzerverwaltung
│   │   └── ecommerce/         # Online-Shop
│   └── github-vendor/
│       └── package-1/          # Paket-Entwicklung
├── app/                        # Kann leer bleiben oder für globale Logik
├── routes/                     # Haupt-Routen
└── resources/                  # Globale Ressourcen

🧪 Tests

Tests können direkt in der Domain ausgeführt werden:

cd domains/vendor/package-name
./vendor/bin/phpunit

🔧 Anpassung der Stubs

Nach dem Veröffentlichen der Stubs können Sie diese unter stubs/laravel-domains/domain anpassen:

php artisan vendor:publish --provider="AlexKassel\LaravelDomains\LaravelDomainsServiceProvider" --tag=laravel-domains-stubs

📚 Beispiele

Private Domains für lokale Entwicklung

# Persönliche Projekte
php artisan domains:make privat/sandbox
php artisan domains:make privat/homepage
php artisan domains:make privat/calc

# GitHub-basierte Paketentwicklung
php artisan domains:make github-vendor/package-1
php artisan domains:make github-vendor/package-2

Geschäftliche Domains

# E-Commerce Domain
php artisan domains:make mycompany/ecommerce

# Blog Domain
php artisan domains:make mycompany/blog --git --install

# API Domain
php artisan domains:make mycompany/api

🚨 Fehlerbehebung

Domain existiert bereits

Domain package already exists: /path/to/domains/vendor/package

Löschen Sie das bestehende Verzeichnis oder verwenden Sie einen anderen Namen.

Kein /domains Verzeichnis

No /domains directory found.

Das Verzeichnis wird automatisch erstellt, wenn Sie Ihre erste Domain erstellen.

Composer-Fehler

Falls Composer-Update fehlschlägt, führen Sie manuell aus:

composer update

Namespace-Probleme

Falls es zu Namespace-Konflikten kommt, überprüfen Sie:

  • PSR-4 Autoloading in der Domain-composer.json
  • Service Provider Namespaces
  • Model- und Controller-Namespaces

🤝 Beitragen

Wir freuen uns über Beiträge! Hier ist der Workflow:

  1. Fork das Repository
  2. Erstellen Sie einen Feature-Branch (git checkout -b feature/amazing-feature)
  3. Committen Sie Ihre Änderungen (git commit -m 'Add amazing feature')
  4. Pushen Sie den Branch (git push origin feature/amazing-feature)
  5. Öffnen Sie einen Pull Request

Entwicklungsumgebung einrichten

# Repository klonen
git clone https://github.com/your-username/laravel-domains.git
cd laravel-domains

# Dependencies installieren
composer install

# Tests ausführen
./vendor/bin/phpunit

Was wir suchen

  • 🐛 Bug-Fixes
  • ✨ Neue Features
  • 📚 Verbesserte Dokumentation
  • 🧪 Zusätzliche Tests
  • 🔧 Stub-Verbesserungen

📄 Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert - siehe LICENSE Datei für Details.

🙏 Danksagungen

  • Laravel Team für das großartige Framework
  • Alle Mitwirkenden und Benutzer

📞 Support

Bei Fragen oder Problemen:

  • GitHub Issues: Erstellen Sie ein Issue für Bugs oder Feature-Requests
  • Diskussionen: Nutzen Sie GitHub Discussions für Fragen und Ideen
  • Maintainer: Kontaktieren Sie den Maintainer direkt

🌟 Warum Laravel Domains?

Vorteile gegenüber anderen Lösungen

  • Einfachheit: Keine komplexe Konfiguration, funktioniert sofort
  • Flexibilität: Domains können lokal bleiben oder zu echten Paketen werden
  • Laravel-Native: Nutzt Laravels Standard-Mechanismen
  • Entwicklung: Perfekt für die Entwicklung in einer einzigen Laravel-Installation
  • Deployment: Ein /laravel12 Ordner auf dem Server, alle Domains inklusive

Anwendungsfälle

  • Modulare Anwendungen: Strukturieren Sie große Laravel-Apps in Domains
  • Paket-Entwicklung: Entwickeln Sie Laravel-Pakete in einer echten Anwendungsumgebung
  • Experimente: Testen Sie neue Features in separaten Domains
  • Team-Entwicklung: Jeder Entwickler arbeitet in seiner eigenen Domain

Entwickelt mit ❤️ für die Laravel-Community