Advertisement — Top

Responsive Advertisement

Explain Laravel's directory structure.

 Difficulty: Beginner → Intermediate

A typical Laravel project contains directories such as:

app/
bootstrap/
config/
database/
public/
resources/
routes/
storage/
tests/
vendor/

app/

Contains application code.

Common areas include:

app/
├── Http/
├── Models/
├── Console/
├── Providers/
└── ...

Models:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
}

routes/

Contains route definitions.

For example:

Route::get('/products', [
    ProductController::class,
    'index'
]);

Depending on the application and Laravel version/configuration, routes may be separated into web, API, console and other route files.


resources/

Contains frontend resources.

For example:

resources/
├── views/
├── css/
└── js/

Blade templates:

resources/views/products/index.blade.php

database/

Contains:

migrations
factories
seeders

Migration:

Schema::create('products', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->decimal('price', 10, 2);
    $table->timestamps();
});

public/

Contains publicly accessible files and the application's entry point.

Typical contents include:

public/
├── index.php
├── images/
├── css/
└── js/

storage/

Used for application-generated files.

Examples:

logs
cache
uploaded files
framework-generated files

config/

Contains configuration files.

Examples:

app.php
database.php
cache.php
mail.php
queue.php
filesystems.php

Configuration frequently references environment variables.

For example:

'driver' => env('DB_CONNECTION', 'sqlite'),

.env

Contains environment-specific configuration such as:

APP_ENV=local
APP_DEBUG=true

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=myapp
DB_USERNAME=root
DB_PASSWORD=

Sensitive production credentials should not be committed to source control.

Post a Comment

0 Comments