IMPORTANT: March 2022
It's horrible to see what is happening now in Ukraine, as Russian army is bombarding houses, hospitals and kindergartens.
Please check out supportukrainenow.org for the ways how you can help people there. Spread the word.
And if you are from Russia and you are against this war, please express your protest in some way. I know you can get punished for this, but you are one of the hopes of those innocent people.
Laravel Learning Path
This repository contains the ordered list of Laravel topics to learn, step-by-step, with related links.
If you want to add a topic, link, or any other suggestion, please open Issues or Pull Requests.
Notice: This content was filled into an adminpanel generated with our QuickAdminPanel - here's a video demo of that process on Youtube. By purchasing QuickAdminPanel, you support my free initiatives, like this Roadmap.
Beginner Level
Create your very first simple Laravel project
Link icons: π Official Docs π¬ Video π Article π Course β Test
Beginner Demo-Project: Personal Blog
To achieve this Beginner level, you would need to practice by creating something like this personal blog project.
Inside of the repository above, you will find all the details of the task, with a few example solutions.
Advanced Beginner Level
The goal of this level is to find the first job or freelance gig
Link icons: π Official Docs π¬ Video π Article π Course
| Topic | Learning Links |
|---|
| Routing Advanced | π¬ Laravel: 8 Tips for Advanced Routing π¬ More videos
|
| Route Model Binding | π Route Model Binding π¬ Laravel Route Model Binding: All You Need To Know π¬ More videos |
| Route Redirect | π Redirect Routes
|
| Middleware | |
| Create Custom Middleware Class | π Defining Middleware
|
| Database Advanced | |
| Database Seeders and Factories | π Database: Seeding π Defining Model Factories π¬ Laravel Factories: Generate and Re-use Fake Records π¬ More videos |
| Eloquent Query Scopes | π Eloquent: Query Scopes π¬ Same Eloquent Where Condition? Refactor into Local Scopes
|
| Polymorphic relationships | π Polymorphic Relationships π¬ Laravel.io Portal: Polymorphic Relations Example
|
| Eloquent Accessors and Mutators | π Accessors & Mutators
|
| Eloquent Collections | π Eloquent Collections π General Laravel Collections
|
| Soft Deletes | π Soft Deleting
|
| Auth Advanced | |
| Authorization: Roles/Permissions, Gates, Policies | π Authorization π¬ Laravel Roles and Permissions: All CORE Things You Need To Know More videos |
| Authorization: Extra Packages - Spatie Permission, Bouncer, etc | π¬ Spatie Laravel Permission: Example Project Review π Two Best Laravel Packages to Manage Roles/Permissions π spatie/laravel-permission π JosephSilber/bouncer
|
| Authentication: Email Verification | π Email Verification π¬ How to Translate/Customize Laravel Auth Default Emails |
| File Uploads Advanced | π File Uploads in Laravel
|
| Drivers and Disks, Example of Amazon S3 | π File Storage π¬ Laravel: How to Upload Files to Amazon S3
|
| Extra Packages: Spatie Medialibrary, Intervention Image, etc | π spatie/laravel-medialibrary π intervention/image π¬ Spatie Media Library Pro: Laravel File Uploads with Great UX [REVIEW] π¬ More videos
|
| API Basics | π How to Create Laravel API π¬ Create Model with API Controller - in one Artisan Command Laravel API: Be Careful When Doing Changes
|
| API Routes and Controllers | π API Resource Routes π Default Route Files π¬ Junior Code Review: Simple Laravel API - in 5 Different Ways
|
| Working with API Clients: Postman or Alternatives | π Postman API Client
|
| API Eloquent Resources | π Eloquent: API Resources π¬ Laravel API Result: Add Fields with Map or Appends
|
| API Auth with Sanctum | π Laravel Sanctum π¬ Laravel API Auth with Sanctum and API Tokens π¬ More videos
|
| API Error Handling and Status Codes | π¬ Laravel API 404 Error: Customize Exception Message π HTTP Status Codes
|
| Debugging Errors | |
| Log Files in Laravel | π Logging
|
| Try-Catch and Laravel Exceptions | π Error Handling π¬ Exceptions in Laravel: Why/How to Use and Create Your Own
|
| Local Debugging Tools: Debugbar, Telescope, Ray | π barryvdh/laravel-debugbar π Laravel Telescope π Spatie Ray (Premium Tool) π¬ Debug Eloquent Queries from API: Laravel Telescope π¬ Spatie Ray: Laravel Debugging with Pleasure
|
| Customizing Error Pages and Messages | π Custom HTTP Error Pages π¬ Laravel Error Pages: Change Text or Customize Layouts π¬ New in Laravel 8.26: Override 404 Page with Route Missing
|
| (optional) Third Party Bug Trackers: Bugsnag, Flare, Sentry, Rollbar | π Bugsnag Laravel π Flare Homepage π Sentry Laravel π Rollbar Laravel π¬ Bug Tracking in Laravel: Bugsnag vs Flare [Demo/Review]
|
| Sending Email | π¬ Laravel: 3 Ways to Send a Welcome Email (Controller vs Observer vs Events) |
| Mailables and Mail Facade | π Mail & Mailables
|
| Configure Drivers/Services: Mailgun, Mailtrap, etc | π How to Send Email From Laravel, and Why We Need 3rd Party Providers For It π Mail: Drivers Prerequisites
|
| Notifications System: Email, SMS, Slack, etc. | π Notifications π¬ Laravel Notifications: "Database" Driver - Demo Project |
| Automated Testing with PHPUnit | π¬ PHPUnit in Laravel: Simple Example of Why/How to Test
|
| "Smoke" Tests to Check if Pages are Loading | π Testing: Getting Started π Testing Laravel: Course by Spatie π My Course: Laravel Testing For Beginners: PHPUnit, Pest, TDD π¬ Laravel TDD in "Live" Mode: Checkout Code Review |
| Configure Testing Database and Test CRUD Operations | π Database Testing
|
| Deployment and Version Control | |
| Git Version Control | π Git π¬ Git in Laravel. Part 1 - Branches: Main, Develop and Feature π¬ More videos |
| Deployment on Live Servers | π Deployment π How to Deploy Laravel Projects to Live Server: The Ultimate Guide π What Server is Needed to Deploy Laravel Projects π¬ How we Deploy Laravel: Branches, Staging Servers, Forge and Envoyer
|
Advanced Beginner Demo-Project: Simple CRM
To achieve this Advanced Beginner level, you would need to practice by creating something like this simple CRM project.
Inside of the repository above, you will find all the details of the task, with an example solution.
Mid Level
Master all Laravel features with 3-5 years of practical experience
Link icons: π Official Docs π¬ Video π Article π Course
| Topic | Learning Links |
|---|
| Routing Extra Features | |
| Route Caching | π Route Caching
|
| Rate Limiting | π Rate Limiting π¬ Laravel: Create Public API with Cache and Rate Limits
|
| Invokable controllers | π Single Action Controllers
|
| Database/Eloquent Extra Features | |
| Model Observers | π Eloquent Observers π¬ Laravel Model: Check if Any Field Was Changed π¬ Eloquent Observers or Events Listeners? Which is Better?
|
| Raw Database Queries | π Query Builder: Raw Expressions
|
| All Eloquent Features | π All About Eloquent π Eloquent: Expert Level π 20 Laravel Eloquent Tips and Tricks π¬ Laravel Collections: 5 Methods with Real Examples More videos
|
| Various Extra Laravel Features | |
| Custom Blade Directives | π Extending Blade
|
| Events and Listeners | π Events and Listeners π¬ Laravel: 3 Ways to Send a Welcome Email (Controller vs Observer vs Events) π¬ Laravel: Why Observers and Event Listeners are "Risky"
|
| Laravel HTTP Client and Guzzle | π HTTP Client π¬ Laravel and External APIs: Get Data with HTTP Client
|
| Login with X: Laravel Socialite | π Laravel Socialite
|
| Creating Artisan Commands | π Writing Artisan Commands π¬ How to Create Artisan Commands in Laravel
|
| Task Scheduling | π Task Scheduling π¬ Laravel Task Scheduling: Run Artisan Command Hourly
|
| Caching | π Cache π¬ Cache Eloquent Query Results to Load Pages Instantly
|
| Real-time: Broadcasting, Echo and Pusher | π Broadcasting
|
| Jobs and Queues | π Queues in Laravel
|
| Queueable Classes and Jobs | π Creating Jobs π Queueing Notifications π Queued Event Listeners π Queueing Mail π¬ Laravel Queues 101: Example with Sending Emails
|
| Job Dispatching, Batching and Chaining | π Dispatching Jobs
|
| Processing Failed Jobs | π Dealing with Failed Jobs
|
| Configuring Queues: Drivers, Redis, Supervisor | π Running the Queue Worker π Configuring Supervisor
|
| Laravel Horizon (optional, if you use Redis) | π Laravel Horizon
|
| API Advanced | |
| Upload Files via API | π Laravel API: How to Upload File from Vue.js
|
| Generate API Documentation | π Laravel API Documentation with OpenAPI/Swagger π¬ Scribe: New Package for Laravel API Documentation
|
| API Versioning | π Versioning your REST API with Laravel π¬ Versioning your API: from V1 to V2 and Beyond [video from my course]
|
| API with OAuth and Laravel Passport | π Laravel Passport π¬ Laravel API Auth Demo: Passport, oAuth and Sanctum |
| Only-API Projects with Front-end like Vue.js / React.js | π Vue.js 3 + Laravel 9 SPA: CRUD with Auth π React.js + Laravel: SPA CRUD with Auth
|
| Only-API Projects with Mobile Apps | π Flutter Mobile App with Laravel API π Using Sanctum to authenticate a mobile app
|
| (optional) Starter Kits: Laravel Jetstream and Fortify | |
| Laravel Jetstream (requires Livewire/Inertia knowledge) | π Laravel Jetstream π Laravel Jetstream+Livewire: Real Mini-Project π¬ Laravel Jetstream: How it Works and Example How to Customize
|
| Laravel Fortify | π Laravel Fortify π¬ Laravel Fortify: Four Auth Things to Customize
|
| Payments | |
| Laravel Cashier with Stripe/Paddle | π Laravel Cashier (Stripe) π Laravel Cashier (Paddle)
|
| Custom Payment Providers: PayPal, Mollie, etc | π Subscription billing with Laravel Cashier for Mollie π How To Integrate Paypal Payment Gateway In Laravel
|
| Automated Testing Advanced | |
| TDD: Test-Driven Development | π Build A Laravel App With TDD π TDD With Laravel
|
| Mocking | π Mocking
|
| (optional) Laravel Dusk | π Laravel Dusk
|
| Full-Text Search | |
| Laravel Scout | π Laravel Scout
|
| Drivers: ElasticSearch, Algolia or MeiliSearch | π ElasticSearch Driver for Laravel Scout π Algolia: Scout Extended π Full-Text Search with MeiliSearch and Laravel Scout
|
| Laravel Packages | |
| Contributing to Packages, making Pull Requests | π¬ How to Contribute to Laravel Docs (or any open-source repository)
|
| Create Laravel Packages | π Package Development π Laravel Package Development
|
Senior Level
Responsibility for architecture decisions on large projects
Link icons: π Official Docs π¬ Video π Article π Course