Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

muhammedh-shadir's avatar

Modular Monolithic in Laravel 12

Which is best way in laravel 12? register the routes in bootstrap/app.php or creating the RouteServiceProvider class and registering in OrderServiceProvider class.?

Currently what I did was OrderServiceProvider registered in bootstrap/providers.php and RouteServiceProvider registered in OrderServiceProvider class. can someone clarify me please?

0 likes
1 reply
LaryAI's avatar
Level 58

Certainly! In Laravel 12, the best practice for modular monolithic applications is to use service providers for registering routes, rather than directly registering them in bootstrap/app.php. This approach keeps your application organized, maintainable, and leverages Laravel's service container and provider system.

Recommended Approach:

  1. Create a RouteServiceProvider for your module (e.g., Orders): This provider will handle all route registrations for the module.

    // app/Modules/Orders/Providers/RouteServiceProvider.php
    
    namespace App\Modules\Orders\Providers;
    
    use Illuminate\Support\ServiceProvider;
    use Illuminate\Support\Facades\Route;
    
    class RouteServiceProvider extends ServiceProvider
    {
        public function boot()
        {
            Route::middleware('web')
                ->namespace('App\Modules\Orders\Http\Controllers')
                ->group(base_path('app/Modules/Orders/routes/web.php'));
        }
    }
    
  2. Register the RouteServiceProvider in your OrderServiceProvider:

    // app/Modules/Orders/Providers/OrderServiceProvider.php
    
    namespace App\Modules\Orders\Providers;
    
    use Illuminate\Support\ServiceProvider;
    
    class OrderServiceProvider extends ServiceProvider
    {
        public function register()
        {
            $this->app->register(RouteServiceProvider::class);
        }
    }
    
  3. Register your OrderServiceProvider in bootstrap/providers.php:

    // bootstrap/providers.php
    
    return [
        // ...
        App\Modules\Orders\Providers\OrderServiceProvider::class,
    ];
    

Summary:

  • Do NOT register routes directly in bootstrap/app.php.
  • Use a dedicated RouteServiceProvider for each module.
  • Register the RouteServiceProvider inside your module's main service provider (e.g., OrderServiceProvider).
  • Register the main service provider in bootstrap/providers.php.

This structure keeps your modules decoupled and your route registration clean and maintainable.

1 like

Please or to participate in this conversation.