LaravelDaily / Laravel-Roadmap-Learning-Path

Laravel-Roadmap-Learning-Path's ContributorsAugSepOctNovDecJanFebMarAprMayJunJulAugSunMonTueWedThuFriSat

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 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.


Beginner Level

Create your very first simple Laravel project

Link icons: πŸ“– Official Docs 🎬 Video πŸ“„ Article πŸ”  Course

Topic Learning Links
Routing and Controllers: Basics
Callback Functions and Route::view() πŸ“– Basic Routing
πŸ“– View Routes
Routing to a Single Controller Method πŸ“– Basic Controllers with Routes
Route Parameters πŸ“– Route Parameters
Route Naming πŸ“– Names Routes
Route Groups πŸ“– Route Groups
Blade Basics
Displaying Variables in Blade πŸ“– Blade: Displaying Data
Blade If-Else and Loop Structures πŸ“– Blade: If-Statements
πŸ“– Blade Loops
Layout: @include, @extends, @section, @yield πŸ“– Blade: Layout Using Template Inheritance
Blade Components πŸ“– Blade Components
🎬 Laravel Blade Components: Two Examples - Laravel Breeze/UI
Auth Basics
Starter Kits: Breeze (Tailwind) or Laravel UI (Bootstrap) πŸ“– Laravel Breeze Official Documentation
πŸ“– Laravel UI: Official Github Page
Default Auth Model and Access its Fields from Anywhere πŸ“– Retrieving the Authenticated User
Check Auth in Controller / Blade πŸ“– Determining If The Current User Is Authenticated
πŸ“– Blade: Authentication Directives
Auth Middleware πŸ“– Protecting Routes
Database Basics
Database Migrations πŸ“– Database Migrations
Basic Eloquent Model and MVC: Controller -> Model -> View πŸ“– Eloquent: Getting Started
Eloquent Relationships: belongsTo / hasMany / belongsToMany πŸ“– Eloquent Relationships: One-to-Many
πŸ“– Eloquent Relationships: BelongsTo
πŸ“– Eloquent Relationships: Many-to-Many
Eager Loading and N+1 Query Problem πŸ“– Relationships: Eager Loading
Full Simple CRUD
Route Resource and Resourceful Controllers πŸ“– Laravel Resource Controllers
πŸ“„ Simple Laravel CRUD with Resource Controllers [digitalocean.com]
Forms, Validation and Form Requests πŸ“– Laravel Validation
File Uploads and Storage Folder Basics πŸ“– Filesystem: File Uploads
Table Pagination πŸ“– Database Pagination

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
Route Model Binding πŸ“– Route Model Binding
🎬 Laravel Route Model Binding: All You Need To Know
Route Redirect πŸ“– Redirect Routes
Middleware
Create Custom Middleware Class πŸ“– Defining Middleware
Database Advanced
Database Seeders and Factories πŸ“– Database: Seeding
πŸ“– Defining Model Factories
Eloquent Query Scopes πŸ“– Eloquent: Query Scopes
Polymorphic relationships πŸ“– Polymorphic Relationships
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
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
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
API Basics πŸ”  How to Create Laravel API
API Routes and Controllers πŸ“– API Resource Routes
πŸ“– Default Route Files
Working with API Clients: Postman or Alternatives πŸ“– Postman API Client
API Eloquent Resources πŸ“– Eloquent: API Resources
API Auth with Sanctum πŸ“– Laravel Sanctum
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
(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
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
Automated Testing with PHPUnit
"Smoke" Tests to Check if Pages are Loading πŸ“– Testing: Getting Started
πŸ”  Laravel: PHPUnit Testing for Beginners
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
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

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
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]
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

Senior Level

Responsibility for architecture decisions on large projects

Link icons: πŸ“– Official Docs 🎬 Video πŸ“„ Article πŸ”  Course

Topic Learning Links
PHP/Laravel Design Patterns 🎬 Laravel Design Patterns - Bobby Bouwmann - Laracon EU 2018 Amsterdam
πŸ”  Laracasts: Design Patterns in PHP
🎬 Colin Decarlo - Design Patterns with Laravel [Laracon 2018]
🎬 Matt Stauffer - Patterns That Pay Off [Laracon 2018]
πŸ”  Design Patterns in PHP
Creational Design Patterns πŸ“„ Design Patterns PHP: Creational
Structural Design Patterns πŸ“„ Design Patterns PHP: Structural
Behavioral Design Patterns πŸ“„ Design Patterns PHP: Behavioral
Well-written Code
SOLID Code 🎬 Becoming a better developer by using the SOLID design principles by Katerina Trajchevska
πŸ“„ Writing Maintainable Code: SOLID Principles Explained in PHP (Laravel)
πŸ”  Laracasts: SOLID Principles in PHP
🎬 PHP Solid Principles [Playlist]
Scalable Code
Maintainable Code
Reusable Code
Best Practices and Standards
Large Datasets
Large Database Structures
NoSQL Solutions
SQL Query Optimization
Scaling to Multiple Databases
Working with High-Traffic Projects
Stability and Zero-Downtime Deployments
Performance Optimization and Caching
Ensuring Code Quality
Writing Testable Code
Automated Testing: Process Optimization
Continuous Integration and Continuous Delivery (CI/CD)

About