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 1 : The same table below is also available as a database, so you would be able to transform it to any other format you want - PDF, chart, etc. See file roadmap.sql
Notice 2 : 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.
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.
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
🎬 Why People (Don't) Write Automated Tests?
"Smoke" Tests to Check if Pages are Loading
📖 Testing: Getting Started 🔠 Laravel: PHPUnit Testing for Beginners 🎬 PHPUnit in Laravel: Simple Example of Why/How to Test
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.
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
🔠 Vue.js + Laravel: CRUD with SPA
Only-API Projects with Mobile Apps
📄 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
Responsibility for architecture decisions on large projects
Link icons: 📖 Official Docs 🎬 Video 📄 Article 🔠 Course