🌿 Laravel Folder Structure
When you create a new Laravel project, it comes with a structured directory tree. Let’s break down the purpose of each folder and key files:
📁 1. app/
This is the core of your application — where the main business logic lives.
- Console/ – Contains custom Artisan commands.
- Exceptions/ – Handles application exceptions.
- Http/
- Controllers/ – Controllers that handle request logic.
- Middleware/ – Middleware for filtering requests (like authentication).
- Kernel.php – Registers middleware.
- Models/ – Eloquent models for DB interaction.
- Providers/ – Service providers to bootstrap services.
📁 2. bootstrap/
- app.php – Initializes Laravel and loads configuration.
- cache/ – Contains framework-generated files for performance.
📁 3. config/
Contains configuration files like app.php
, database.php
, mail.php
, etc.
📁 4. database/
- factories/ – For generating fake data.
- migrations/ – Define database table schema.
- seeders/ – Seed default data into DB.
📁 5. public/
The entry point of the application (index.php
). Stores static assets like images, CSS, and JS.
📁 6. resources/
- views/ – Blade templates go here.
- lang/ – Language files for localization.
- css/, js/, sass/ – Frontend assets and styles.
📁 7. routes/
- web.php – Web routes.
- api.php – API routes.
- console.php – Artisan command routes.
- channels.php – Broadcasting channels.
📁 8. storage/
- app/ – User-uploaded files.
- logs/ – Application log files.
- framework/ – Cache, sessions, compiled views.
📁 9. tests/
Contains test cases using PHPUnit.
- Feature/ – Tests for controllers and routes.
- Unit/ – Tests for individual components/models.
📁 10. vendor/
Contains Composer-managed packages and dependencies. Don’t edit manually!
📄 Key Files in Root Directory
File | Description |
---|---|
.env |
Environment settings like DB, mail, app name. |
.gitignore |
Tells Git what to ignore. |
artisan |
Laravel's CLI tool. |
composer.json |
Manages PHP dependencies. |
package.json |
Manages frontend assets/tools. |
vite.config.js |
Vite asset bundler configuration. |
phpunit.xml |
Testing config for PHPUnit. |
💡 Summary Table
Folder | Purpose |
---|---|
app/ | Application logic, controllers, models |
bootstrap/ | Bootstraps Laravel app |
config/ | Configuration files |
database/ | Migrations, seeders, factories |
public/ | Web entry point, assets |
resources/ | Blade views, assets, translations |
routes/ | Route definitions |
storage/ | Logs, cache, file uploads |
tests/ | Unit and feature tests |
vendor/ | Composer dependencies |
0 Comments