Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Starter Laravel Package

laravel-ddd/starter

Composer starter kit that turns a fresh Laravel 12/13 app into a Domain-Driven Design structure. Includes base Entity/ValueObject/Repository/Service classes, 12 generators, interactive installer (auth, docs, tests, sample module), API-ready routes, and optional AI context.

View on GitHub
Deep Wiki
Context7

Registrando Rutas de Dominios

Una vez que crees módulos con ddd:make-routes, necesitas registrar las rutas en tus archivos de rutas principales.

Opción 1: routes/api.php

Si trabajas con una API, incluye los archivos de rutas en routes/api.php:

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::get('/user', function (Request $request) {
    return $request->user();
})->middleware('auth:sanctum');

// Registrar rutas de dominios
require app_path('Domains/Users/Routes/Users.php');
require app_path('Domains/Posts/Routes/Posts.php');
require app_path('Domains/Orders/Routes/Orders.php');

Opción 2: routes/web.php

Para rutas web tradicionales:

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return view('welcome');
});

// Registrar rutas de dominios
require app_path('Domains/Users/Routes/Users.php');
require app_path('Domains/Products/Routes/Products.php');

Opción 3: Crear un Route Loader

Para proyectos grandes, puedes crear un helper que cargue automáticamente todas las rutas:

<?php

// app/Support/RouteLoader.php

namespace App\Support;

use Illuminate\Support\Facades\File;

class RouteLoader
{
    public static function loadDomainRoutes(): void
    {
        $domainsPath = app_path('Domains');
        
        if (!File::exists($domainsPath)) {
            return;
        }
        
        $directories = File::directories($domainsPath);
        
        foreach ($directories as $domainPath) {
            $routesPath = $domainPath . '/Routes';
            
            if (!File::exists($routesPath)) {
                continue;
            }
            
            $routeFiles = File::glob($routesPath . '/*.php');
            
            foreach ($routeFiles as $routeFile) {
                require $routeFile;
            }
        }
    }
}

Luego en routes/api.php:

<?php

use App\Support\RouteLoader;

Route::middleware('api')->group(function () {
    RouteLoader::loadDomainRoutes();
});

Estructura de Rutas

Las rutas generadas por ddd:make-routes siguen este patrón:

<?php

use App\Domains\Users\Http\Controllers\UsersController;
use Illuminate\Support\Facades\Route;

Route::middleware('api')->group(function () {
    Route::resource('users', UsersController::class);
});

Esto crea automáticamente los siguientes endpoints:

Método Ruta Acción
GET /api/users index
POST /api/users store
GET /api/users/{user} show
PUT /api/users/{user} update
DELETE /api/users/{user} destroy

Personalizar Rutas

Después de generar las rutas, puedes editarlas según tus necesidades:

<?php

use App\Domains\Users\Http\Controllers\UsersController;
use Illuminate\Support\Facades\Route;

Route::middleware('api')->group(function () {
    // Rutas custom
    Route::post('/users/email-exists', [UsersController::class, 'checkEmail']);
    Route::post('/users/verify-email', [UsersController::class, 'verifyEmail']);
    
    // Rutas RESTful estándar
    Route::resource('users', UsersController::class)
        ->only(['index', 'show', 'store', 'update', 'destroy']);
});

Parámetros Route Model Binding

Para usar Route Model Binding, asegúrate de que tu modelo está configurado:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    public function getRouteKeyName(): string
    {
        return 'id';
    }
}

Luego puedes usar el binding en tus controladores:

public function show(User $user): JsonResponse
{
    return response()->json(['data' => $user]);
}
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
besmartand-pro/php-quality-config
sentix/ai-chatbot
codifyo/ts-generator-bundle
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor