LaravelDaily/Laravel-Roadmap-Learning-Path

5,611

81 commits

updated Mar 31, 2024

See the code

README

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

TopicLearning Links
Routing and Controllers: Basics❓ Let's Test Your Laravel Routing Skills: Complete 12 Tasks
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
🎬 Laravel: Why You Need Route Names?
Route GroupsπŸ“– Route Groups
🎬 Laravel Route Grouping: Simple to Very Complex
🎬 More videos
Blade Basics❓ Let's Test Your Laravel Blade Skills: Complete 8 Tasks
🎬 9 Quick Tips about Laravel Blade
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❓ Test Your Laravel Auth Skills: Complete 7 Tasks
🎬 8 Tips & Tricks about Laravel Auth
Starter Kits: Breeze (Tailwind) or Laravel UI (Bootstrap)πŸ“– Laravel Breeze Official Documentation
πŸ“– Laravel UI: Official Github Page
🎬 Laravel 8 Auth: 5 "Latest" Things You Need to Know
More videos
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❓ Test Your Laravel Migrations Skills: Complete 10 Tasks
πŸ“– Database Migrations
🎬 Laravel Migrations: Table Created but Foreign Key Failed?
More videos
Basic Eloquent Model and MVC: Controller -> Model -> View❓ Test Your Eloquent Basic Skills: 11 Tasks to Complete
πŸ“– Eloquent: Getting Started
Eloquent Relationships: belongsTo / hasMany / belongsToMany❓ Test Your Eloquent Relationships Skills: 9 Tasks to Complete
πŸ“– Eloquent Relationships: One-to-One
πŸ“– Eloquent Relationships: One-to-Many
πŸ“– Eloquent Relationships: BelongsTo
πŸ“– Eloquent Relationships: Many-to-Many
🎬 How to Safely Change DB Relations in Live Laravel Project?
Eager Loading and N+1 Query ProblemπŸ“– Relationships: Eager Loading
🎬 Laravel N+1 Query Detector: Don't Forget Eager Loading
Full Simple CRUD
Route Resource and Resourceful ControllersπŸ“– Laravel Resource Controllers
πŸ“„ Simple Laravel CRUD with Resource Controllers [digitalocean.com]
🎬 Laravel Nested Resource Controllers: Two-Level Deep
🎬 More videos
Forms, Validation and Form Requests❓ Test Your Laravel Validation Skills: Complete 9 Tasks
πŸ“– Laravel Validation
🎬 New in Laravel 6.13: Format Validation Error Field Name 🎬 More videos
File Uploads and Storage Folder Basics❓ Test Your Laravel File Upload Skills: Complete 7 Tasks
πŸ“– Filesystem: File Uploads
🎬 Laravel: How to Upload File During User Registration
More videos
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

TopicLearning 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

TopicLearning 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

TopicLearning 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
πŸ“„ Design Patterns for Humans
Creational Design PatternsπŸ“„ Design Patterns: Creational
Structural Design PatternsπŸ“„ Design Patterns: Structural
Behavioral Design PatternsπŸ“„ Design Patterns: Behavioral
Well-written Code
SOLID CodeπŸ”  SOLID Code in Laravel
🎬 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πŸ”  Scaling Laravel
🎬 Enterprise Laravel by Matt Stauffer
πŸ“„ What the hell is scalable code anyway?
Maintainable CodeπŸ”  10+ Laravel Refactoring Examples
πŸ“„ How would you know if you've written readable and easily maintainable code? [forum thread]
πŸ“„ Crafting maintainable Laravel applications
πŸ“„ 7 Golden Rules of Clean, Simple and Maintainable Code
Best Practices and StandardsπŸ“„ Repository: alexeymezenin / laravel-best-practices
πŸ”  PHP: The Right Way
πŸ“„ Reddit: What are your Laravel best practices?
Large Datasets
Large Database StructuresπŸ”  How to Structure Databases in Laravel
πŸ”  GraphQL in Laravel From Scratch
NoSQL SolutionsπŸ“– MongoDB and Laravel Integration
πŸ“„ MongoDB + Laravel = Love β€” When to use NoSQL
Eloquent/SQL Query OptimizationπŸ”  Better Eloquent Performance
πŸ“„ 18 Tips to optimize laravel database queries
πŸ“„ Optimizing Laravel Part 2: Improving Query Performance with Database Indexing
πŸ”  Eloquent Performance Patterns
Scaling to Multiple DatabasesπŸ“„ Scaling Laravel App with Multiple Databases
πŸ“„ Multiple DB Connections in Laravel
Working with High-Traffic Projects
Stability and Zero-Downtime DeploymentsπŸ“– Laravel Deployer
πŸ“– Envoyer - Zero Downtime PHP Deployment
Performance Optimization and CachingπŸ”  Performant Laravel
πŸ“„ The Ultimate Performance Checklist For Laravel Apps
πŸ“„ How to Optimize PHP Laravel Web Application for High Performance?
Ensuring Code Quality
Writing Testable CodeπŸ“„ How to write testable code
πŸ“„ Refactoring towards testability
Continuous Integration and Continuous Delivery (CI/CD)πŸ“„ How to create a CI/CD for a Laravel application using GitHub Actions
πŸ“„ Configure Laravel 8 for CI/CD with Jenkins and GitHub β€” Part 1
πŸ“„ Build, Test, and Deploy Your Laravel Application With GitHub Actions

LaravelDaily/Laravel-Roadmap-Learning-Path

5,611

81 commits

updated Mar 31, 2024

See the code

README

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

TopicLearning Links
Routing and Controllers: Basics❓ Let's Test Your Laravel Routing Skills: Complete 12 Tasks
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
🎬 Laravel: Why You Need Route Names?
Route GroupsπŸ“– Route Groups
🎬 Laravel Route Grouping: Simple to Very Complex
🎬 More videos
Blade Basics❓ Let's Test Your Laravel Blade Skills: Complete 8 Tasks
🎬 9 Quick Tips about Laravel Blade
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❓ Test Your Laravel Auth Skills: Complete 7 Tasks
🎬 8 Tips & Tricks about Laravel Auth
Starter Kits: Breeze (Tailwind) or Laravel UI (Bootstrap)πŸ“– Laravel Breeze Official Documentation
πŸ“– Laravel UI: Official Github Page
🎬 Laravel 8 Auth: 5 "Latest" Things You Need to Know
More videos
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❓ Test Your Laravel Migrations Skills: Complete 10 Tasks
πŸ“– Database Migrations
🎬 Laravel Migrations: Table Created but Foreign Key Failed?
More videos
Basic Eloquent Model and MVC: Controller -> Model -> View❓ Test Your Eloquent Basic Skills: 11 Tasks to Complete
πŸ“– Eloquent: Getting Started
Eloquent Relationships: belongsTo / hasMany / belongsToMany❓ Test Your Eloquent Relationships Skills: 9 Tasks to Complete
πŸ“– Eloquent Relationships: One-to-One
πŸ“– Eloquent Relationships: One-to-Many
πŸ“– Eloquent Relationships: BelongsTo
πŸ“– Eloquent Relationships: Many-to-Many
🎬 How to Safely Change DB Relations in Live Laravel Project?
Eager Loading and N+1 Query ProblemπŸ“– Relationships: Eager Loading
🎬 Laravel N+1 Query Detector: Don't Forget Eager Loading
Full Simple CRUD
Route Resource and Resourceful ControllersπŸ“– Laravel Resource Controllers
πŸ“„ Simple Laravel CRUD with Resource Controllers [digitalocean.com]
🎬 Laravel Nested Resource Controllers: Two-Level Deep
🎬 More videos
Forms, Validation and Form Requests❓ Test Your Laravel Validation Skills: Complete 9 Tasks
πŸ“– Laravel Validation
🎬 New in Laravel 6.13: Format Validation Error Field Name 🎬 More videos
File Uploads and Storage Folder Basics❓ Test Your Laravel File Upload Skills: Complete 7 Tasks
πŸ“– Filesystem: File Uploads
🎬 Laravel: How to Upload File During User Registration
More videos
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

TopicLearning 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

TopicLearning 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

TopicLearning 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
πŸ“„ Design Patterns for Humans
Creational Design PatternsπŸ“„ Design Patterns: Creational
Structural Design PatternsπŸ“„ Design Patterns: Structural
Behavioral Design PatternsπŸ“„ Design Patterns: Behavioral
Well-written Code
SOLID CodeπŸ”  SOLID Code in Laravel
🎬 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πŸ”  Scaling Laravel
🎬 Enterprise Laravel by Matt Stauffer
πŸ“„ What the hell is scalable code anyway?
Maintainable CodeπŸ”  10+ Laravel Refactoring Examples
πŸ“„ How would you know if you've written readable and easily maintainable code? [forum thread]
πŸ“„ Crafting maintainable Laravel applications
πŸ“„ 7 Golden Rules of Clean, Simple and Maintainable Code
Best Practices and StandardsπŸ“„ Repository: alexeymezenin / laravel-best-practices
πŸ”  PHP: The Right Way
πŸ“„ Reddit: What are your Laravel best practices?
Large Datasets
Large Database StructuresπŸ”  How to Structure Databases in Laravel
πŸ”  GraphQL in Laravel From Scratch
NoSQL SolutionsπŸ“– MongoDB and Laravel Integration
πŸ“„ MongoDB + Laravel = Love β€” When to use NoSQL
Eloquent/SQL Query OptimizationπŸ”  Better Eloquent Performance
πŸ“„ 18 Tips to optimize laravel database queries
πŸ“„ Optimizing Laravel Part 2: Improving Query Performance with Database Indexing
πŸ”  Eloquent Performance Patterns
Scaling to Multiple DatabasesπŸ“„ Scaling Laravel App with Multiple Databases
πŸ“„ Multiple DB Connections in Laravel
Working with High-Traffic Projects
Stability and Zero-Downtime DeploymentsπŸ“– Laravel Deployer
πŸ“– Envoyer - Zero Downtime PHP Deployment
Performance Optimization and CachingπŸ”  Performant Laravel
πŸ“„ The Ultimate Performance Checklist For Laravel Apps
πŸ“„ How to Optimize PHP Laravel Web Application for High Performance?
Ensuring Code Quality
Writing Testable CodeπŸ“„ How to write testable code
πŸ“„ Refactoring towards testability
Continuous Integration and Continuous Delivery (CI/CD)πŸ“„ How to create a CI/CD for a Laravel application using GitHub Actions
πŸ“„ Configure Laravel 8 for CI/CD with Jenkins and GitHub β€” Part 1
πŸ“„ Build, Test, and Deploy Your Laravel Application With GitHub Actions

Significant stargazers

Bobby Iliev

1,186 followers Β· starred Jan 2022

Pavan Nambi

37 followers Β· starred Sep 2022

Travis Peters

29 followers Β· starred Aug 2021

Sudheer Tripathi

48 followers Β· starred Dec 2021