# IMPORTANT: March 2022
It's horrible to see what is happening now in Ukraine, as Russian army is
[bombarding houses, hospitals and
kindergartens]([Link]
Please [check out [Link]]([Link] 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]([Link]
utm_source=github&utm_campaign=roadmap) - here's a [video demo of that process on
Youtube]([Link] By purchasing
QuickAdminPanel, you support my free initiatives, like this Roadmap.
---
## Beginner Level
Create your very first simple Laravel project
__Link icons: :book: Official Docs :clapper: Video :page_facing_up:
Article :capital_abcd: Course :question: Test__
| Topic | Learning Links |
| ----- | ----- |
| **Routing and Controllers: Basics** | :question: [Let's Test Your Laravel Routing
Skills: Complete 12 Tasks]([Link] |
| Callback Functions and Route::view() |:book: [Basic
Routing]([Link] <br>:book: [View Routes]
([Link] <br>|
| Routing to a Single Controller Method |:book: [Basic Controllers with Routes]
([Link] <br>|
| Route Parameters |:book: [Route
Parameters]([Link] <br>|
| Route Naming |:book: [Names Routes]([Link]
routes) <br> :clapper: [Laravel: Why You Need Route
Names?]([Link] <br>|
| Route Groups |:book: [Route Groups]([Link]
groups) <br> :clapper: [Laravel Route Grouping: Simple to Very
Complex]([Link] <br> :clapper: [More videos]
(videos/[Link]) |
| **Blade Basics** | :question: [Let's Test Your Laravel Blade Skills: Complete 8
Tasks]([Link] [9 Quick Tips
about Laravel Blade]([Link] <br>|
| Displaying Variables in Blade |:book: [Blade: Displaying
Data]([Link] <br>|
| Blade If-Else and Loop Structures |:book: [Blade:
If-Statements]([Link] <br>:book: [Blade
Loops]([Link] <br>|
| Layout: @include, @extends, @section, @yield |:book: [Blade: Layout Using
Template Inheritance]([Link]
inheritance) <br>|
| Blade Components |:book: [Blade
Components]([Link] <br>:clapper: [Laravel Blade
Components: Two Examples - Laravel Breeze/UI]([Link]
v=HybWBINeXMw) <br>|
| **Auth Basics** | :question: [Test Your Laravel Auth Skills: Complete 7 Tasks]
([Link] [8 Tips & Tricks about
Laravel Auth]([Link] <br> |
| Starter Kits: Breeze (Tailwind) or Laravel UI (Bootstrap) |:book: [Laravel Breeze
Official Documentation]([Link]
<br>:book: [Laravel UI: Official Github Page]([Link]
<br> :clapper: [Laravel 8 Auth: 5 "Latest" Things You Need to
Know]([Link] <br> [More videos](videos/auth-
[Link])<br>|
| Default Auth Model and Access its Fields from Anywhere |:book: [Retrieving the
Authenticated User]([Link]
authenticated-user) <br>|
| Check Auth in Controller / Blade |:book: [Determining If The Current User Is
Authenticated]([Link]
user-is-authenticated) <br>:book: [Blade: Authentication
Directives]([Link] <br>|
| Auth Middleware |:book: [Protecting
Routes]([Link] <br>|
| **Database Basics** ||
| Database Migrations |:question: [Test Your Laravel Migrations Skills: Complete 10
Tasks]([Link] [Database Migrations]
([Link] <br> :clapper: [Laravel Migrations: Table
Created but Foreign Key Failed?]([Link] <br>
[More videos](videos/[Link]) |
| Basic Eloquent Model and MVC: Controller -> Model -> View |:question: [Test Your
Eloquent Basic Skills: 11 Tasks to Complete]([Link]
v=AmvLs9sRSH8)<br>:book: [Eloquent: Getting
Started]([Link] <br>|
| Eloquent Relationships: belongsTo / hasMany / belongsToMany |:question: [Test
Your Eloquent Relationships Skills: 9 Tasks to
Complete]([Link] [Eloquent
Relationships: One-to-One]([Link]
one) <br>:book: [Eloquent Relationships:
One-to-Many]([Link]
<br>:book: [Eloquent Relationships: BelongsTo]([Link]
relationships#one-to-many-inverse) <br>:book: [Eloquent Relationships: Many-to-
Many]([Link] <br> :clapper:
[How to Safely Change DB Relations in Live Laravel
Project?]([Link] |
| Eager Loading and N+1 Query Problem |:book: [Relationships: Eager Loading]
([Link] <br> :clapper:
[Laravel N+1 Query Detector: Don't Forget Eager
Loading]([Link] <br>|
| **Full Simple CRUD** ||
| Route Resource and Resourceful Controllers |:book: [Laravel Resource Controllers]
([Link] <br>:page_facing_up:
[Simple Laravel CRUD with Resource Controllers
[[Link]]]([Link]
laravel-crud-with-resource-controllers) <br> :clapper: [Laravel Nested Resource
Controllers: Two-Level Deep]([Link]
<br> :clapper: [More videos](videos/[Link])
<br>|
| Forms, Validation and Form Requests |:question: [Test Your Laravel Validation
Skills: Complete 9 Tasks]([Link]
[Laravel Validation]([Link] <br> :clapper: [New in
Laravel 6.13: Format Validation Error Field Name]([Link]
v=KD1SqLO58eE) :clapper: [More videos](videos/[Link]) |
| File Uploads and Storage Folder Basics |:question: [Test Your Laravel File Upload
Skills: Complete 7 Tasks]([Link]
[Filesystem: File Uploads]([Link]
<br> :clapper: [Laravel: How to Upload File During User
Registration]([Link] <br> [More videos]
(videos/[Link]) <br> |
| Table Pagination |:book: [Database
Pagination]([Link] <br>|
### Beginner Demo-Project: Personal Blog
To achieve this Beginner level, you would need to practice by creating something
like [this personal blog project]([Link]
Beginner-Challenge).
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: :book: Official Docs :clapper: Video :page_facing_up:
Article :capital_abcd: Course__
| Topic | Learning Links |
| ----- | ----- |
| **Routing Advanced** | :clapper: [Laravel: 8 Tips for Advanced
Routing]([Link] <br> :clapper: [More videos]
(videos/[Link]) <br> |
| Route Model Binding |:book: [Route Model
Binding]([Link] <br>:clapper:
[Laravel Route Model Binding: All You Need To Know]([Link]
v=6dEfxGLgevM) <br> :clapper: [More videos](videos/[Link])|
| Route Redirect |:book: [Redirect
Routes]([Link] <br>|
| **Middleware** ||
| Create Custom Middleware Class |:book: [Defining
Middleware]([Link] <br>|
| **Database Advanced** ||
| Database Seeders and Factories |:book: [Database:
Seeding]([Link] <br>:book: [Defining Model Factories]
([Link]
<br> :clapper: [Laravel Factories: Generate and Re-use Fake
Records]([Link] <br> :clapper: [More videos]
(videos/[Link])|
| Eloquent Query Scopes |:book: [Eloquent: Query
Scopes]([Link] <br> :clapper: [Same
Eloquent Where Condition? Refactor into Local
Scopes]([Link] <br>|
| Polymorphic relationships |:book: [Polymorphic
Relationships]([Link]
relationships) <br> :clapper: [[Link] Portal: Polymorphic Relations Example]
([Link] <br>|
| Eloquent Accessors and Mutators |:book: [Accessors &
Mutators]([Link] <br>|
| Eloquent Collections |:book: [Eloquent
Collections]([Link] <br>:book: [General
Laravel Collections]([Link] <br>|
| Soft Deletes |:book: [Soft Deleting]([Link]
deleting) <br>|
| **Auth Advanced** ||
| Authorization: Roles/Permissions, Gates, Policies |:book: [Authorization]
([Link] <br>:clapper: [Laravel Roles and
Permissions: All CORE Things You Need To Know]([Link]
v=kZOgH3-0Bko) <br> [More videos](videos/authorization-roles-permissions-gates-
[Link])|
| Authorization: Extra Packages - Spatie Permission, Bouncer, etc |:clapper:
[Spatie Laravel Permission: Example Project Review]([Link]
v=NgToi0uiMNQ) <br>:page_facing_up: [Two Best Laravel Packages to Manage
Roles/Permissions]([Link]
<br>:book: [spatie/laravel-permission]([Link]
permission) <br>:book:
[JosephSilber/bouncer]([Link] <br>|
| Authentication: Email Verification |:book: [Email
Verification]([Link] <br> :clapper: [How to
Translate/Customize Laravel Auth Default Emails]([Link]
v=c01k5Zo_CuI) |
| **File Uploads Advanced** |:capital_abcd: [File Uploads in
Laravel]([Link]
utm_source=github&utm_campaign=roadmap) <br>|
| Drivers and Disks, Example of Amazon S3 |:book: [File
Storage]([Link] <br>:clapper: [Laravel: How to Upload
Files to Amazon S3]([Link] <br>|
| Extra Packages: Spatie Medialibrary, Intervention Image, etc |:book:
[spatie/laravel-medialibrary]([Link]
<br>:book: [intervention/image]([Link]
<br> :clapper: [Spatie Media Library Pro: Laravel File Uploads with Great UX
[REVIEW]]([Link] <br> :clapper: [More videos]
(videos/[Link]) <br>|
| **API Basics** |:capital_abcd: [How to Create Laravel
API]([Link]
utm_source=github&utm_campaign=roadmap) <br> :clapper: [Create Model with API
Controller - in one Artisan Command]([Link]
<br> [Laravel API: Be Careful When Doing Changes]([Link]
v=yXnIW4DkuHQ) <br>|
| API Routes and Controllers |:book: [API Resource
Routes]([Link] <br>:book:
[Default Route Files]([Link]
<br> :clapper: [Junior Code Review: Simple Laravel API - in 5 Different Ways]
([Link] <br>|
| Working with API Clients: Postman or Alternatives |:book: [Postman API Client]
([Link] <br>|
| API Eloquent Resources |:book: [Eloquent: API
Resources]([Link] <br> :clapper: [Laravel API
Result: Add Fields with Map or Appends]([Link]
v=FNU3gYgiEgQ) <br>|
| API Auth with Sanctum |:book: [Laravel Sanctum]([Link]
<br> :clapper: [Laravel API Auth with Sanctum and API
Tokens]([Link] :clapper: [More videos]
(videos/[Link])<br>|
| API Error Handling and Status Codes |:clapper: [Laravel API 404 Error: Customize
Exception Message]([Link]
<br>:page_facing_up: [HTTP Status Codes]([Link] <br>|
| **Debugging Errors** ||
| Log Files in Laravel |:book: [Logging]([Link] <br>|
| Try-Catch and Laravel Exceptions |:book: [Error
Handling]([Link] <br>:clapper: [Exceptions in Laravel:
Why/How to Use and Create Your Own]([Link]
<br>|
| Local Debugging Tools: Debugbar, Telescope, Ray |:book: [barryvdh/laravel-
debugbar]([Link] <br>:book: [Laravel
Telescope]([Link] <br>:book: [Spatie Ray (Premium
Tool)]([Link] <br>:clapper: [Debug Eloquent Queries from API: Laravel
Telescope]([Link] <br>:clapper: [Spatie Ray:
Laravel Debugging with Pleasure]([Link] <br>|
| Customizing Error Pages and Messages |:book: [Custom HTTP Error
Pages]([Link] <br>:clapper:
[Laravel Error Pages: Change Text or Customize
Layouts]([Link] <br> :clapper: [New in
Laravel 8.26: Override 404 Page with Route Missing]([Link]
v=nvDCQDkcjN0) <br>|
| (optional) Third Party Bug Trackers: Bugsnag, Flare, Sentry, Rollbar |:book:
[Bugsnag Laravel]([Link] <br>:book:
[Flare Homepage]([Link] <br>:book: [Sentry
Laravel]([Link] <br>:book: [Rollbar
Laravel]([Link] <br>:clapper: [Bug Tracking in
Laravel: Bugsnag vs Flare [Demo/Review]]([Link]
v=88UqUXhWwGA) <br>|
| **Sending Email** | :clapper: [Laravel: 3 Ways to Send a Welcome Email
(Controller vs Observer vs Events)]([Link] |
| Mailables and Mail Facade |:book: [Mail &
Mailables]([Link] <br>|
| Configure Drivers/Services: Mailgun, Mailtrap, etc |:page_facing_up: [How to Send
Email From Laravel, and Why We Need 3rd Party Providers For
It]([Link]
party-providers-for-it/) <br>:book: [Mail: Drivers
Prerequisites]([Link] <br>|
| Notifications System: Email, SMS, Slack, etc. |:book:
[Notifications]([Link] <br> :clapper: [Laravel
Notifications: "Database" Driver - Demo Project]([Link]
v=5DREuAvFnps)|
| **Automated Testing with PHPUnit** | :clapper: [PHPUnit in Laravel: Simple
Example of Why/How to Test]([Link] <br>|
| "Smoke" Tests to Check if Pages are Loading |:book: [Testing: Getting Started]
([Link] <br>:capital_abcd: [Testing Laravel: Course by
Spatie]([Link] <br>:capital_abcd: [My Course:
Laravel Testing For Beginners: PHPUnit, Pest,
TDD]([Link]
utm_source=github&utm_campaign=roadmap) <br> :clapper: [Laravel TDD in "Live" Mode:
Checkout Code Review]([Link] |
| Configure Testing Database and Test CRUD Operations |:book: [Database Testing]
([Link] <br>|
| **Deployment and Version Control** ||
| Git Version Control |:book: [Git]([Link] <br>:clapper: [Git in
Laravel. Part 1 - Branches: Main, Develop and
Feature]([Link] <br> :clapper: [More videos]
(videos/[Link])|
| Deployment on Live Servers |:book:
[Deployment]([Link] <br>:page_facing_up: [How to
Deploy Laravel Projects to Live Server: The Ultimate
Guide]([Link]
ultimate-guide/) <br>:page_facing_up: [What Server is Needed to Deploy Laravel
Projects]([Link]
projects/) <br>:clapper: [How we Deploy Laravel: Branches, Staging Servers, Forge
and Envoyer]([Link] <br>|
### 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]([Link]
Roadmap-Advanced-Beginner-Challenge).
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: :book: Official Docs :clapper: Video :page_facing_up:
Article :capital_abcd: Course__
| Topic | Learning Links |
| ----- | ----- |
| **Routing Extra Features** ||
| Route Caching |:book: [Route Caching]([Link]
caching) <br>|
| Rate Limiting |:book: [Rate Limiting]([Link]
limiting) <br>:clapper: [Laravel: Create Public API with Cache and Rate Limits]
([Link] <br>|
| Invokable controllers |:book: [Single Action
Controllers]([Link] <br>|
| **Database/Eloquent Extra Features** ||
| Model Observers |:book: [Eloquent
Observers]([Link] <br>:clapper: [Laravel
Model: Check if Any Field Was Changed]([Link]
<br>:clapper: [Eloquent Observers or Events Listeners? Which is
Better?]([Link] <br>|
| Raw Database Queries |:book: [Query Builder: Raw
Expressions]([Link] <br>|
| All Eloquent Features |:book: [All About
Eloquent]([Link] <br>:capital_abcd: [Eloquent: Expert
Level]([Link]
utm_source=github&utm_campaign=roadmap) <br>:page_facing_up: [20 Laravel Eloquent
Tips and Tricks]([Link] <br> :clapper:
[Laravel Collections: 5 Methods with Real Examples]([Link]
v=isAz2GduuA0) <br> [More videos](videos/[Link]) <br>|
| **Various Extra Laravel Features** ||
| Custom Blade Directives |:book: [Extending
Blade]([Link] <br>|
| Events and Listeners |:book: [Events and
Listeners]([Link] <br>:clapper: [Laravel: 3 Ways to Send
a Welcome Email (Controller vs Observer vs Events)]([Link]
v=ZWzH6SOzjhI) <br>:clapper: [Laravel: Why Observers and Event Listeners are
"Risky"]([Link] <br>|
| Laravel HTTP Client and Guzzle |:book: [HTTP
Client]([Link] <br>:clapper: [Laravel and External
APIs: Get Data with HTTP Client]([Link] <br>|
| Login with X: Laravel Socialite |:book: [Laravel
Socialite]([Link] <br>|
| Creating Artisan Commands |:book: [Writing Artisan
Commands]([Link] <br>:clapper: [How to
Create Artisan Commands in Laravel]([Link]
<br>|
| Task Scheduling |:book: [Task Scheduling]([Link]
<br>:clapper: [Laravel Task Scheduling: Run Artisan Command
Hourly]([Link] <br>|
| Caching |:book: [Cache]([Link] <br>:clapper: [Cache
Eloquent Query Results to Load Pages Instantly]([Link]
v=JhKngeE0XJA) <br>|
| Real-time: Broadcasting, Echo and Pusher |:book:
[Broadcasting]([Link] <br>|
| **Jobs and Queues** |:capital_abcd: [Queues in
Laravel]([Link]
utm_source=github&utm_campaign=roadmap) <br>|
| Queueable Classes and Jobs |:book: [Creating
Jobs]([Link] <br>:book: [Queueing
Notifications]([Link]
<br>:book: [Queued Event Listeners]([Link]
listeners) <br>:book: [Queueing Mail]([Link]
<br>:clapper: [Laravel Queues 101: Example with Sending
Emails]([Link] <br>|
| Job Dispatching, Batching and Chaining |:book: [Dispatching
Jobs]([Link] <br>|
| Processing Failed Jobs |:book: [Dealing with Failed
Jobs]([Link] <br>|
| Configuring Queues: Drivers, Redis, Supervisor |:book: [Running the Queue Worker]
([Link] <br>:book: [Configuring
Supervisor]([Link] <br>|
| Laravel Horizon (optional, if you use Redis) |:book: [Laravel
Horizon]([Link] <br>|
| **API Advanced** ||
| Upload Files via API |:page_facing_up: [Laravel API: How to Upload File from
[Link]]([Link]
js/) <br>|
| Generate API Documentation |:page_facing_up: [Laravel API Documentation with
OpenAPI/Swagger]([Link]
openapiswagger/) <br>:clapper: [Scribe: New Package for Laravel API Documentation]
([Link] <br>|
| API Versioning |:page_facing_up: [Versioning your REST API with Laravel]
([Link]
<br>:clapper: [Versioning your API: from V1 to V2 and Beyond [video from my
course]]([Link]
utm_source=github&utm_campaign=roadmap) <br>|
| API with OAuth and Laravel Passport |:book: [Laravel
Passport]([Link] <br> :clapper: [Laravel API Auth Demo:
Passport, oAuth and Sanctum]([Link]
| Only-API Projects with Front-end like [Link] / [Link] |:capital_abcd: [[Link] 3
+ Laravel 9 SPA: CRUD with Auth]([Link]
utm_source=github&utm_campaign=roadmap) <br>:capital_abcd: [[Link] + Laravel: SPA
CRUD with Auth]([Link]
utm_source=github&utm_campaign=roadmap) <br>|
| Only-API Projects with Mobile Apps |:capital_abcd: [Flutter Mobile App with
Laravel API]([Link]
utm_source=github&utm_campaign=roadmap) <br>:page_facing_up: [Using Sanctum to
authenticate a mobile app]([Link]
a-mobile-app) <br>|
| **(optional) Starter Kits: Laravel Jetstream and Fortify** ||
| Laravel Jetstream (requires Livewire/Inertia knowledge) |:book: [Laravel
Jetstream]([Link] <br>:capital_abcd: [Laravel
Jetstream+Livewire: Real
Mini-Project]([Link]
project?utm_source=github&utm_campaign=roadmap) <br>:clapper: [Laravel Jetstream:
How it Works and Example How to Customize]([Link]
v=d8YgWApHMfA) <br>|
| Laravel Fortify |:book: [Laravel Fortify]([Link]
<br>:clapper: [Laravel Fortify: Four Auth Things to
Customize]([Link] <br>|
| **Payments** ||
| Laravel Cashier with Stripe/Paddle |:book: [Laravel Cashier
(Stripe)]([Link] <br>:book: [Laravel Cashier (Paddle)]
([Link] <br>|
| Custom Payment Providers: PayPal, Mollie, etc |:page_facing_up: [Subscription
billing with Laravel Cashier for Mollie]([Link]
<br>:page_facing_up: [How To Integrate Paypal Payment Gateway In
Laravel]([Link]
in-laravel) <br>|
| **Automated Testing Advanced** ||
| TDD: Test-Driven Development |:capital_abcd: [Build A Laravel App With TDD]
([Link] <br>:capital_abcd: [TDD
With Laravel]([Link] <br>|
| Mocking |:book: [Mocking]([Link] <br>|
| (optional) Laravel Dusk |:book: [Laravel Dusk]([Link]
<br>|
| **Full-Text Search** ||
| Laravel Scout |:book: [Laravel Scout]([Link] <br>|
| Drivers: ElasticSearch, Algolia or MeiliSearch |:page_facing_up: [ElasticSearch
Driver for Laravel Scout]([Link] <br>:book: [Algolia:
Scout Extended]([Link]
started/introduction-to-scout-extended/?client=php) <br>:page_facing_up: [Full-Text
Search with MeiliSearch and Laravel Scout]([Link]
search-with-meilisearch-and-scout/) <br>|
| **Laravel Packages** ||
| Contributing to Packages, making Pull Requests |:clapper: [How to Contribute to
Laravel Docs (or any open-source repository)]([Link]
v=vEcT6JIFji0) <br>|
| Create Laravel Packages |:book: [Package
Development]([Link] <br>:capital_abcd: [Laravel Package
Development]([Link] <br>|
## Senior Level
Responsibility for architecture decisions on large projects
__Link icons: :book: Official Docs :clapper: Video :page_facing_up:
Article :capital_abcd: Course__
| Topic | Learning Links |
| ----- | ----- |
| **PHP/Laravel Design Patterns** |:clapper: [Laravel Design Patterns - Bobby
Bouwmann - Laracon EU 2018 Amsterdam]([Link]
<br>:capital_abcd: [Laracasts: Design Patterns in
PHP]([Link] <br>:clapper: [Colin
Decarlo - Design Patterns with Laravel [Laracon
2018]]([Link] <br>:clapper: [Matt Stauffer -
Patterns That Pay Off [Laracon 2018]]([Link]
<br>:capital_abcd: [Design Patterns in PHP]([Link]
patterns/php) <br>:page_facing_up: [Design Patterns for
Humans]([Link] <br>|
| Creational Design Patterns |:page_facing_up: [Design Patterns: Creational]
([Link] <br>|
| Structural Design Patterns |:page_facing_up: [Design Patterns: Structural]
([Link] <br>|
| Behavioral Design Patterns |:page_facing_up: [Design Patterns: Behavioral]
([Link] <br>|
| **Well-written Code** ||
| SOLID Code |:capital_abcd: [SOLID Code in
Laravel]([Link]
utm_source=github&utm_campaign=roadmap) <br>:clapper: [Becoming a better developer
by using the SOLID design principles by Katerina
Trajchevska]([Link] <br>:page_facing_up:
[Writing Maintainable Code: SOLID Principles Explained in PHP
(Laravel)]([Link] <br>:capital_abcd:
[Laracasts: SOLID Principles in PHP]([Link]
in-php) <br>:clapper: [PHP Solid Principles
[Playlist]]([Link]
2C2jYRGe2iXJkpCZj) <br>|
| Scalable Code |:capital_abcd: [Scaling
Laravel]([Link] <br>:clapper:
[Enterprise Laravel by Matt Stauffer]([Link]
<br>:page_facing_up: [What the hell is scalable code
anyway?]([Link]
f6626ad78227) <br>|
| Maintainable Code |:capital_abcd: [10+ Laravel Refactoring
Examples]([Link]
utm_source=github&utm_campaign=roadmap) <br>:page_facing_up: [How would you know if
you've written readable and easily maintainable code? [forum
thread]]([Link]
you-know-if-youve-written-readable-and-easily-maintainable-code)
<br>:page_facing_up: [Crafting maintainable Laravel
applications]([Link]
applications/) <br>:page_facing_up: [7 Golden Rules of Clean, Simple and
Maintainable Code]([Link] <br>|
| Best Practices and Standards |:page_facing_up: [Repository: alexeymezenin /
laravel-best-practices]([Link]
<br>:capital_abcd: [PHP: The Right Way]([Link]
<br>:page_facing_up: [Reddit: What are your Laravel best
practices?]([Link]
best_practices/) <br>|
| **Large Datasets** ||
| Large Database Structures |:capital_abcd: [How to Structure Databases in Laravel]
([Link]
utm_source=github&utm_campaign=roadmap) <br>:capital_abcd: [GraphQL in Laravel From
Scratch]([Link]
utm_source=github&utm_campaign=roadmap) <br>|
| NoSQL Solutions |:book: [MongoDB and Laravel
Integration]([Link]
<br>:page_facing_up: [MongoDB + Laravel = Love — When to use
NoSQL]([Link]
f5376ceaf545) <br>|
| Eloquent/SQL Query Optimization |:capital_abcd: [Better Eloquent Performance]
([Link]
utm_source=github&utm_campaign=roadmap) <br>:page_facing_up: [18 Tips to optimize
laravel database queries]([Link]
<br>:page_facing_up: [Optimizing Laravel Part 2: Improving Query Performance with
Database Indexing]([Link]
indexing-performance/) <br>:capital_abcd: [Eloquent Performance
Patterns]([Link] <br>|
| Scaling to Multiple Databases |:page_facing_up: [Scaling Laravel App with
Multiple Databases]([Link]
multiple-databases) <br>:page_facing_up: [Multiple DB Connections in Laravel]
([Link] <br>|
| **Working with High-Traffic Projects** ||
| Stability and Zero-Downtime Deployments |:book: [Laravel
Deployer]([Link] <br>:book: [Envoyer - Zero
Downtime PHP Deployment]([Link] <br>|
| Performance Optimization and Caching |:capital_abcd: [Performant Laravel]
([Link] <br>:page_facing_up: [The Ultimate
Performance Checklist For Laravel Apps]([Link]
checklist) <br>:page_facing_up: [How to Optimize PHP Laravel Web Application for
High Performance?]([Link] <br>|
| **Ensuring Code Quality** ||
| Writing Testable Code |:page_facing_up: [How to write testable
code]([Link]
<br>:page_facing_up: [Refactoring towards
testability]([Link]
untestable-code-towards-testability/) <br>|
| Continuous Integration and Continuous Delivery (CI/CD) |:page_facing_up: [How to
create a CI/CD for a Laravel application using GitHub
Actions]([Link]
application-using-github-actions/) <br>:page_facing_up: [Configure Laravel 8 for
CI/CD with Jenkins and GitHub — Part 1]([Link]
ci-cd-with-jenkins-and-github-part-1-58b9be304292) <br>:page_facing_up: [Build,
Test, and Deploy Your Laravel Application With GitHub
Actions]([Link]
actions) <br>|