Laravel Tutorial for Beginners

Laravel Folder Structure Overview

 When you install a Laravel application, the project folder comes with many subfolders and files that organize the framework’s components. Below is a breakdown of the key folders and what they do:



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

Detailed Explanation:

1. app/

This folder contains the core application logic, including Models, Controllers, and Middleware. It’s where most of your code lives.

  • Http/: Contains controllers, middleware, and requests.
    • Controllers: Handle user requests (like submitting a form).
    • Middleware: Filters incoming requests (e.g., checking if a user is logged in).
  • Models/: Represents the data structure (e.g., User, Post) and interacts with the database.
  • Console/: Contains custom Artisan commands.
  • Events/ and Listeners/: Handle event-driven programming in Laravel.

2. bootstrap/

This folder handles the bootstrapping process, which sets up the Laravel framework. The most important file here is app.php, which initializes the application.

3. config/

Contains all the configuration files for your application (e.g., database.php, mail.php). These files allow you to set up things like database connections, mail drivers, etc.

4. database/

This folder deals with database-related aspects:

  • migrations/: Defines the structure of database tables.
  • factories/: Defines how fake data is generated for testing.
  • seeds/: Used to insert dummy data into the database.

5. public/

This is the folder where your application's publicly accessible files (CSS, JavaScript, images) are stored. This is also where the main entry point for your app, index.php, lives. It handles routing all requests into the Laravel application.

6. resources/

This folder contains all the views (front-end templates), raw assets, and language files.

  • views/: Contains Blade templates (e.g., welcome.blade.php) that render HTML pages.
  • lang/: Stores language files for localization.
  • assets/: Used for raw, uncompiled assets like SASS, JavaScript, and images.

7. routes/

This folder contains the route definitions for your application. It defines how URLs are mapped to specific functions in your app.

  • web.php: Handles routes for web-based requests.
  • api.php: Handles routes for API requests.
  • console.php: Defines all the custom Artisan commands.
  • channels.php: Handles real-time communication channels.

8. storage/

This folder contains all the files that the application generates or stores, like logs and cached files.

  • app/: Stores user-uploaded files or other data.
  • framework/: Stores framework-generated files (cache, sessions).
  • logs/: Contains log files for debugging.

9. tests/

This folder contains automated tests for your application. It’s where you write tests to ensure your app is working correctly.

  • Feature/: Contains tests for large pieces of your app’s functionality.
  • Unit/: Contains tests for small, isolated pieces of your application (e.g., individual functions).

10. vendor/

This folder is where all the packages and dependencies installed via Composer are stored. You shouldn't modify this folder manually.

Key Files:

  • .env: The environment configuration file where sensitive information like database credentials, API keys, and app configurations are stored.
  • artisan: The command-line tool for Laravel that helps with various tasks like running migrations or creating controllers.
  • composer.json: Defines the dependencies and versions required for your Laravel app.
  • package.json: Used by Node.js to manage front-end dependencies.

Comments