Laravel Roadmap
Tags: laravel, php, learning, webdev
Published: 2024-03-08 01:32:30

In this blog post, I'm excited to share the learning journey that helped me master Laravel. I'll walk you through the resources I found most helpful and the strategies I used to become a proficient Laravel developer. Whether you're just starting out or looking to enhance your skills, this guide will provide valuable insights to steer you in the right direction.

##Start Point 
Your very first starting point should be the Laravel [documentation](https://laravel.com/). Known for its clear explanations and user-friendly layout, the Laravel documentation makes setup a breeze, ensuring you get off to the best possible start.

##What Should I check first?
When starting your journey with Laravel, many developers will advise you to begin by exploring routes, and they're absolutely right. Routes are the entry points of your application, defining the URLs and corresponding controller actions. The homepage route, in particular, is the first thing you'll encounter when navigating your Laravel project. It serves as the gateway to your application, setting the stage for further exploration and development. Understanding routes is fundamental to mastering Laravel, so take the time to familiarize yourself with them early on.

##Understand MVC
Before you start coding, it's important to understand MVC. In MVC, "M" stands for Model. Models are like connectors to databases, managing data and how it's handled. "C" stands for Controller. Controllers are like messengers between Models and Views. They handle user requests and make sure the Views show the right information. Finally, "V" stands for View. Views are what users see on their screens. They're like the face of the application. By using MVC, we can organize our code better, making it easier to manage and update.

##Roadmap 

Here, I'll share helpful links and resources to guide you through your developer journey. I've divided them into three roadmaps: for beginners, junior to middle-level developers, and middle-level developers. These resources will make your learning experience smoother and more structured, regardless of your current skill level.

###Beginner

| Topic       | Resources                                                                                                | 
|-------------|----------------------------------------------------------------------------------------------------------|
| Routes      | [Routing](https://laravel.com/docs/10.x/routing)                                                           |
|             | [Named Routes](https://laravel.com/docs/10.x/routing#named-routes)                                         | 
| Controllers | [Controller](https://laravel.com/docs/10.x/controllers)                                                     |
| Views       | [Views](https://laravel.com/docs/10.x/views)                                                                |
|             | [Blade](https://laravel.com/docs/10.x/blade)                                                               |
| Migrations  | [Migrations](https://laravel.com/docs/10.x/views)                                                           |
| Database    | [Setup](https://laravel.com/docs/10.x/database)                                                             |
|             | [Queries](https://laravel.com/docs/10.x/database#running-queries)                                           |
|             | [Query Builder](https://laravel.com/docs/10.x/queries)                                                      |
| Model       | [Eloquent](https://laravel.com/docs/10.x/eloquent)                                                           |
|             | [Retrieving Model](https://laravel.com/docs/10.x/eloquent#retrieving-single-models)                        |
|             | [Relationships](https://laravel.com/docs/10.x/eloquent-relationships#defining-relationships)               |

###Junior to Middle
| Topic       | Resources                                                                                                | 
|-------------|----------------------------------------------------------------------------------------------------------|
| Routes      | [Route Biding](https://laravel.com/docs/10.x/routing#route-model-binding)                                                           |
| Middleware| [Middlewares](https://laravel.com/docs/10.x/middleware)                                                     |
| Session  | [Sessions](https://laravel.com/docs/10.x/session)                                                           |
| Database    | [Advanced Queries](https://laravel.com/docs/10.x/eloquent-relationships#has-one-through)                                                             |
|             | [Polymorphic Relationships](https://laravel.com/docs/10.x/eloquent-relationships#polymorphic-relationships)                                                                                             |
| Authentication| [Auth](https://laravel.com/docs/10.x/authentication)                                                           |
|             | [Authorization](https://laravel.com/docs/10.x/authorization)                        |
|             | [Request Validation](https://laravel.com/docs/10.x/validation)                        |
|             | [Hashing](https://laravel.com/docs/10.x/hashing)               |
|    API| [Routes](https://laravel.com/docs/10.x/controllers#api-resource-routes)               |


###Middle

| Topic       | Resources                                                                                                | 
|-------------|----------------------------------------------------------------------------------------------------------|
| Routes      | [Route Caching](https://laravel.com/docs/10.x/routing#route-caching)                                                           |
| | [Rate Limit](https://laravel.com/docs/10.x/routing#rate-limiting)                                                     |
| Sanctum| [Sanctum](https://laravel.com/docs/10.x/sanctum)                                                           |
| Database    | [Observers](https://laravel.com/docs/10.x/eloquent#observers)                                                             |
|             | [Mutators](https://laravel.com/docs/10.x/eloquent-mutators)                                                                                             |
| | [Redis](https://laravel.com/docs/10.x/redis#main-content)                                                           |
|             | [Resources](https://laravel.com/docs/10.x/eloquent-resources)                        |
|        Notifications     | [Mail](https://laravel.com/docs/10.x/mail#main-content)               |
|        | [Notifications](https://laravel.com/docs/10.x/notifications)               |
|    Jobs    | [Queues](https://laravel.com/docs/10.x/queues#main-content)               |
|    Channels| [Broadcasting](https://laravel.com/docs/10.x/broadcasting)               |
|    Commands| [Custom Commands](https://laravel.com/docs/10.x/artisan#writing-commands)               |
|    API| [Laravel Passport](https://laravel.com/docs/10.x/passport)               |
|    Controllers| [Dependency Injection](https://laravel.com/docs/10.x/controllers#dependency-injection-and-controllers)               |

In summary, this roadmap highlights the essential elements necessary for navigating Laravel effectively. Mastering it requires dedication and persistence as you invest time and effort into the learning process.

###Useful Resources

To stay updated on the latest developments and continue learning, I suggest utilizing the following resources:
[Laravel News](https://laravel-news.com/)
[Laracast](https://laracasts.com/)
[Code with Gio](https://www.youtube.com/c/CodeWithGio)
[Laravel Daily](https://laraveldaily.com/)
[Taylor Otwell Twitter Page](https://twitter.com/taylorotwell?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor)
[Nuno Maduro Twitter Page](https://twitter.com/enunomaduro?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor)
[Laravel Package Ocean](https://laravel-package-ocean.com/)
[Spatie](https://spatie.be/)