---
title: "Laravel 11: Guía práctica de Inicio"
excerpt: "Descubre lo nuevo que llega hoy a Laravel en su versión 11. Una estructura más compacta y simple, no estás obligado a adoptarlo de inmediato; todas las aplicaciones existentes construidas sobre la estructura de Laravel 10 seguirán funcionando sin problemas."
date: "2024-03-12T05:43:00.000Z"
category: "Laravel"
seo_title: "Laravel 11: guía de inicio rápido con Breeze y SQLite"
seo_description: "Guía práctica para comenzar un proyecto en Laravel 11. Nueva estructura de directorios, instalación con Breeze, configuración de middlewares en bootstrap/app.php y SQLite por defecto."
author:
  name: "angel cruz"
  picture: "https://angelcruzdevcdn.nyc3.cdn.digitaloceanspaces.com/images/me/angel-cruz.png"
ogImage:
  url: "/images/open-graph/laravel-opengraph-image.png"
---

Hoy es el dia de lanzamiento de Laravel 11 y con este articulo repasaremos lo basico que necesitas para empezar un proyecto nuevo.

## Instalación

Teniendo el instalador de Laravel el cual se instala previamente de esta forma:

```bash
composer global require laravel/installer
```


solo basta correr el siguiente comando para inicializar nuestro nuevo proyecto:

```bash
laravel new <project-name>
```


Despues de eso nos encontraremos con el siguiente prompt:

```bash
   _                               _
  | |                             | |
  | |     __ _ _ __ __ ___   _____| |
  | |    / _` | '__/ _` \ \ / / _ \ |
  | |___| (_| | | | (_| |\ V /  __/ |
  |______\__,_|_|  \__,_| \_/ \___|_|


 ┌ Would you like to install a starter kit? ────────────────────┐
 │ › ● No starter kit                                           │
 │   ○ Laravel Breeze                                           │
 │   ○ Laravel Jetstream                                        │
 └──────────────────────────────────────────────────────────────┘
```

Aca podremos seleccionar el starter kit que usaremos en nuestro proyecto, para este ejemplo seleccionaré breeze.

Al seleccionarlo nos preguntaria cual stack vamos a usar:

```bash
 ┌ Which Breeze stack would you like to install? ───────────────┐
 │ › ● Blade with Alpine                                      │ │
 │   ○ Livewire (Volt Class API) with Alpine                  │ │
 │   ○ Livewire (Volt Functional API) with Alpine             │ │
 │   ○ React with Inertia                                     │ │
 │   ○ Vue with Inertia                                       │ │
 │   ○ API only                                               ┃ │
 └──────────────────────────────────────────────────────────────┘
```

```blade +parse
<x-front.flash type="warning" :show=true>
Por simplicidad seleccionaré `Blade with Alpine`
</x-front.flash>
```

Luego de esa selección otro promt más preguntando si queremos soporte a `dark mode`


```bash
 ┌ Would you like dark mode support? ───────────────────────────┐
 │ ○ Yes / ● No                                                 │
 └──────────────────────────────────────────────────────────────┘
```

Luego de la instalación de los paquetes y todo eso nos preguntaría el motor a base de datos a usar, selecionaré `SQLite`

```bash
 ┌ Which database will your application use? ───────────────────┐
 │   ○ MySQL                                                    │
 │   ○ MariaDB                                                  │
 │   ○ PostgreSQL                                               │
 │ › ● SQLite                                                   │
 │   ○ SQL Server                                               │
 └──────────────────────────────────────────────────────────────┘
```

Luego esperamos un momento a que termine todo el proceso de instalación e iremos a ver a nuestra nueva página de inicio:

![página de inicio de Laravel 11](https://cdn.angelcruz.dev/article/kpxLfv7e45bDroEibkOC05qrU0SpJvzE3BddaIyD.png)

## Estructura de directorios

Laravel 11 se caracteriza por tener una estructura más reducida a nivel de archivos como se puede ver aquí en este ejemplo:

```bash
├── app
│   ├── Http
│   │   └── Controllers
│   │       └── Controller.php
│   ├── Models
│   │   └── User.php
│   └── Providers
│       └── AppServiceProvider.php
```

## Una mejor organizacion para los middlewares, servicios, excepciones


Ahora, dentro del directorio `bootstrap/app.php` se podrá configurar los middlewares que usaremos dentro de nuestra aplicación ya que tendrá una estructura de esta forma:

```php
<?php

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        //
    })
    ->withExceptions(function (Exceptions $exceptions) {
        //
    })->create();

```

## Un simple AppServiceProvider

Laravel 11 consolida múltiples `Service Providers` en uno solo, reduciendo el código repetitivo y mejorando la eficiencia de construcción de nuestra aplicación.

## Sistema de rutas más simples

El directorio `routes` ahora cuenta solamente con el siguiente par de archivos:

```bash
├── routes
│   ├── console.php
│   └── web.php
```

lo que hace opcional la instalacion / publicación del archivo `api.php` en el directorio `routes` por medio del comando:

```bash
php artisan install:api
```

El cual al momento de usarlo procederá a la instalación de `laravel/sanctum` y tambien va a proceder a preguntar si deseas correr la migración pendiente:

```bash
 One new database migration has been published. 
 Would you like to run all pending database migrations? (yes/no) [yes]:
```


Al igual que el archivo `channels.php` luego de usar el comando:

```bash
php artisan install:broadcasting
```

Realizaria la instalación del archivo de configuración y preguntaría que si quieres instalar `Laravel Reverb`

```bash
   INFO  Published 'broadcasting' configuration file.  

   INFO  Published 'channels' route file.  

 ┌ Would you like to install Laravel Reverb? ───────────────────┐
 │ ● Yes / ○ No                                                 │
 └──────────────────────────────────────────────────────────────┘
```

## Controladores

Ahora es mucho más simple incluir lo que necesitemos en nuestros controladores.

En comparación a Laravel 10, ahora nuestrio archivo `Controller` es una clase abstracta lo que nos permite incluir lo que quisieramos en cada uno de nuestros controladores de la aplicación.

```php
<?php

namespace App\Http\Controllers;

abstract class Controller
{
    //
}
```

## SQLite por defecto (?)

Laravel 11 viene con SQLite como la base de datos predeterminada, lo que permite un inicio rápido sin configuraciones adicionales.

Aunque esto levantó un poco de movida dentro de la comunidad ya que no todos estan de acuerdo sobre este cambio.

En lo personal este cambio es indiferente, siempre he configurado `mysql` para trabajar en local así que...

![YOLO](https://c.tenor.com/UhomREc1gGwAAAAC/tenor.gif)

---

## Sitemap

Índice completo del sitio: [/sitemap.md](https://angelcruz.dev/sitemap.md)

Canónico HTML: [https://angelcruz.dev/post/laravel-11-guia-inicio](https://angelcruz.dev/post/laravel-11-guia-inicio)
