Contents
- Why Understanding Laravel Folder Structure Matters
- Root Directory Overview
- The app/ Folder (Core Application Logic)
- The bootstrap/ Folder
- The config/ Folder
- The database/ Folder
- The public/ Folder
- The resources/ Folder
- The routes/ Folder
- The storage/ Folder
- The tests/ Folder
- The vendor/ Folder
- How It All Connects (Simple Flow)
- Tips for Beginners
- Final Thoughts
If you’re just getting started with Laravel 12, one of the first things that might confuse you is its folder structure. At first glance, it can look overwhelming—but once you understand what each folder does, everything starts to make sense.
In this beginner-friendly guide, we’ll break down the Laravel 12 folder structure in a simple, clear way so you can confidently navigate your projects and write cleaner code.
Why Understanding Laravel Folder Structure Matters
Before diving into the folders, here’s why this matters:
- Helps you find files quickly
- Makes debugging easier
- Improves project organization
- Essential for scaling applications
Laravel follows the MVC (Model-View-Controller) pattern, and its structure is designed to support that clean separation.
Root Directory Overview
When you install Laravel 12, you’ll see several folders and files in the root directory. Here are the most important ones:
app/
bootstrap/
config/
database/
public/
resources/
routes/
storage/
tests/
vendor/
Let’s go through each one in detail.
The app/ Folder (Core Application Logic)
This is where most of your application code lives.
Key subfolders:
- Http/ – Contains controllers, middleware, and requests
- Models/ – Your database models
- Providers/ – Service providers that bootstrap your app
👉 Think of app/ as the brain of your application.
The bootstrap/ Folder
This folder is responsible for bootstrapping the framework.
- app.php – Initializes the Laravel application
- cache/ – Stores cached framework files
👉 You usually won’t need to modify this often.
The config/ Folder
Contains all configuration files for your app.
Examples:
app.php– General app settingsdatabase.php– Database configurationmail.php– Email settings
👉 If you want to change how Laravel behaves, this is where you go.
The database/ Folder
Handles everything related to your database.
Includes:
- migrations/ – Structure of your database tables
- seeders/ – Sample/test data
- factories/ – Model factories for testing
👉 Perfect for version-controlling your database structure.
The public/ Folder
This is the entry point of your application.
- Contains
index.php(front controller) - Stores publicly accessible assets like images, CSS, JS
👉 Only this folder should be accessible from the browser.
The resources/ Folder
Holds your front-end files.
Includes:
- views/ – Blade templates
- css/ and js/ – Frontend assets
👉 This is where you design what users see.
The routes/ Folder
Defines all your application routes.
Important files:
web.php– Web routesapi.php– API routesconsole.php– Artisan commands
👉 Routes connect URLs to controllers.
The storage/ Folder
Used for storing generated files.
Contains:
- Logs
- Cache
- File uploads
👉 This folder needs proper permissions to work correctly.
The tests/ Folder
Where you write automated tests.
- Unit tests
- Feature tests
👉 Helps ensure your app works as expected.
The vendor/ Folder
Contains all Composer dependencies.
👉 Never edit this manually—it’s auto-generated.
How It All Connects (Simple Flow)
Here’s a simplified flow of how Laravel works:
- User visits a URL
- Route handles the request (
routes/) - Controller processes logic (
app/Http/Controllers) - Model interacts with database (
app/Models) - View displays output (
resources/views)
Tips for Beginners
- Don’t try to memorize everything—learn as you build
- Focus first on
routes,controllers, andviews - Use naming conventions consistently
- Keep your folders clean and organized
Final Thoughts
Laravel 12’s folder structure may look complex at first, but it’s actually designed to make development smoother and more organized.
Once you understand where things belong, you’ll write code faster, debug easier, and build better applications.
