This website uses cookies to enhance the user experience

Directory Structure

Share:

In the world of web development, Laravel is a well-known PHP framework that offers well-structured and maintainable code, assisting developers in their quest to create comprehensive and dynamic web applications. A core feature of Laravel that lends to its success and usability is its highly organized and intuitive directory structure. Throughout this tutorial, we will delve into the depths of the Laravel directory structure, unraveling each folder and its respective files along the way. Our exploration will be aided by familiar examples of movie features or characters.

Let's start our exploration by opening the project root directory. This is the primary location that contains sub-directories such as app, bootstrap, config, database, public, resources, routes, storage, tests, and vendor, as well as several files like .env, .gitignore, composer.json, and composer.lock.

/my_laravel_project
    .env
    .gitignore
    app/
    bootstrap/
    config/
    database/
    public/
    resources/
    routes/
    storage/
    tests/
    vendor/
    composer.json
    composer.lock

The App Directory

This directory can be equated to the main character in a movie—due to the pivotal role it plays in the Laravel framework. It contains several subdirectories for various elements of your application including Http, Providers, Console and so on, which encapsulate the primary logic of your application.

/app
    Console/
    Exceptions/
    Http/
    Providers/
    User.php

The Controllers, Middleware, Requests, and numerous other elements reside within the Http directory. An important note is the Kernel.php file which manages the HTTP middleware stack of your application.

The Bootstrap Directory

Imagine the ‘Bootstrap’ directory as the director of a movie. It does not appear on screen but without it, the movie would fall into chaos. The bootstrap directory includes a few scripts that bootstrap the Laravel framework by setting up error handling, configuring logging, and other tasks that need to be done before the request handling by your application code.

/bootstrap
    cache/
    app.php

The Config Directory

The 'config' directory is akin to the movie’s script. As the name suggests, it contains all the configuration files for your application. Here, you have a granular control over numerous aspects of Laravel's behavior, such as database connection settings, cache drivers, and more.

/config
    app.php
    auth.php
    broadcasting.php
    cache.php
    database.php
    //...

The Database Directory

The ‘Database’ directory can be compared to the props used in a movie. This is where your database migrations, seeds, and factories are stored. Migrations provide a way to version control your database tables and their respective schemas.

/database
    factories/
    migrations/
    seeds/

The Public Directory

The public directory is like the billboard of a movie. It is the front-facing part of your application that is publicly accessible. It contains the index.php file, which is the entry point for your all requests entering your application and configures autoloading.

/public
    .htaccess
    css/
    js/
    index.php

The Resources Directory

The 'Resources' directory is where you store all the non-PHP files like views, raw assets(JS, CSS, SASS files), language files, and configuration files for tasks that compile your assets. It can be thought of as your movie's wardrobe department.

/resources
    lang/
    views/
    sass/
    js/

The Routes Directory

The routes directory contains the route definitions for your web application. Each file within this directory corresponds to a particular set of routes: web.php for routes accessible via web, api.php for the API routes, and console.php for defining Artisan commands.

/routes
    api.php
    channels.php
    console.php
    web.php

The Storage Directory

The 'Storage' directory is like a backstage area storing everything needed for functioning of a movie. It's a folder for compiled Blade templates, file-based sessions, file caches, and other files generated by the framework.

/storage
    app/
    framework/
    logs/

The Tests Directory

This directory holds all your automated tests. An ExampleTest.php file is provided to aid in getting you started with testing.

/tests
    Feature/
    Unit/
    CreatesApplication.php
    TestCase.php

The Vendor Directory

The vendor directory is like a movie's production company - it funds and provides resources for the creation of the movie. It contains Composer dependencies, including Laravel itself and other libraries maintained by the community.

To wrap up, Laravel offers an incredibly well-structured and organized directory structure. Each directory has a clearly defined role within your application and breaking down the structure can help us understand the part they play. By understanding this layout, you can efficiently manage and maintain your project – exactly what Laravel intends to do.

0 Comment


Sign up or Log in to leave a comment


Recent job openings

United States, Clearwater, FL

Remote

Full-time

posted 6 days ago

United States, New Jersey, NJ

Remote

Full-time

Python

Python

Java

Java

posted 6 days ago

United States, Santa Clara, CA

Remote

Rust

Rust

posted 6 days ago

Spain, Barcelona, Catalonia

Remote

Full-time

Python

Python

TypeScript

TypeScript

posted 6 days ago

Malaysia, Federal Territory of Kuala Lumpur

Remote

Full-time

posted 7 days ago