Free online course Learn Laravel in 30 Days: Beginner to Pro
Duration of the online course: 17 hours and 0 minutes
New
Build modern Laravel web apps fast in this free course—routes, Blade, Eloquent, auth, queues, and deployment-ready workflows. Earn a certificate if offered.
In this free course, learn about
Local Laravel setup with Laravel Herd and key benefits for starting new projects
Defining routes (GET /), route wildcards, and passing data into Blade views
Building layouts with Blade components, $slot, props (:) and the $attributes bag
Styling views with Tailwind CSS, including active links and group-hover techniques
Autoloading, namespaces, models, and returning 404s with helpers like abort(404)
Creating and running migrations; using php artisan migrate to apply new migrations
Using Eloquent ORM, factories for test/seed data, and key relationships (belongsTo, belongsToMany)
Seeders and refreshing DB with php artisan migrate:fresh --seed
Forms: CSRF protection (@csrf), validation, and PUT/PATCH for updates via method spoofing
Resourceful routing with Route::resource and essential routing best practices
Auth with Breeze and custom auth: middleware, @auth/@guest, and session regeneration on login
Authorization with Policies for maintainable, centralized access rules
Email (Mailables, URL() helper), queues (workers), and asset builds with Vite (npm run build)
About the free online course
Ready to move from copying snippets to confidently building real web applications? This free online Laravel course takes you from the very first request and response to the kind of day-to-day skills you need to ship polished features in a production-style project. Along the way, you will learn how Laravel is structured, how to think in routes and controllers, and how to turn raw ideas into clean pages using Blade and reusable components.
You will practice creating layouts that feel professional, styling them with Tailwind CSS, and making navigation and UI elements smarter with dynamic attributes and state-aware behavior. As the app grows, you will transition from simple views to data-driven pages, passing data cleanly and handling missing records properly so your users get the right experience instead of cryptic errors.
A core focus is working with databases the Laravel way. You will build and evolve your schema with migrations, generate realistic data with factories and seeders, and interact with records using Eloquent so you can query, relate, and display information efficiently. You will also learn to avoid common performance traps like the N+1 problem and choose practical pagination strategies that scale when datasets get large.
Beyond CRUD fundamentals, the course prepares you for real product requirements: secure forms with CSRF protection, strong server-side validation, and complete resource editing workflows. You will also add authentication and authorization patterns used in professional apps, understand how middleware guards routes, and apply policies to keep permissions organized and maintainable as your codebase grows.
To round it out, you will cover essential production-minded topics like email sending with mailable classes, background queues for work that should not block the user, and a modern frontend build process with Vite for optimized assets. By the end, you should feel comfortable navigating a Laravel project, making thoughtful implementation choices, and building a full-featured application you can keep expanding.
Course content
Video class: 30 Days to Learn Laravel, Ep 01 - Hello, Laravel08m
Exercise: What is a key benefit of using Laravel Herd when starting a new Laravel project?
Video class: 30 Days to Learn Laravel, Ep 02 - Your First Route and View06m
Exercise: In Laravel, where do you define a GET route that responds when someone visits the homepage (/) in the browser?
Video class: 30 Days to Learn Laravel, Ep 03 - Create a Layout File Using Blade Components10m
Exercise: In a Blade layout component, what is the purpose of the $slot variable?
Video class: 30 Days to Learn Laravel, Ep 04 - Make a Pretty Layout Using Tailwind CSS12m
Exercise: In a Laravel Blade component like a reusable nav link, what built-in object gives you access to any passed HTML attributes (e.g., href, class, id, style)?
Video class: 30 Days to Learn Laravel, Ep 05 - Style the Currently Active Navigation Link13m
Exercise: In a Blade component, what does prefixing a prop with a colon (:) do?
Video class: 30 Days to Learn Laravel, Ep 06 - View Data and Route Wildcards20m
Exercise: When defining a route in Laravel, how can you pass data into a Blade view so it becomes available as variables?
Video class: 30 Days to Learn Laravel, Ep 07 - Autoloading, Namespaces, and Models14m
Exercise: When a requested job ID does not exist, which Laravel helper is used to immediately return a 404 Not Found response?
Video class: 30 Days to Learn Laravel, Ep 08 - Introduction to Migrations17m
Exercise: Which command applies the newest migration without resetting all existing tables?
Video class: 30 Days to Learn Laravel, Ep 09 - Meet Eloquent18m
Exercise: In Laravel, what does Eloquent do as an ORM?
Video class: 30 Days to Learn Laravel, Ep 10 - Model Factories19m
Exercise: What is a common use case for Laravel model factories?
Video class: 30 Days to Learn Laravel, Ep 11 - Two Key Eloquent Relationship Types07m
Exercise: In Eloquent, which relationship should be defined on a Job model to link it to its Employer?
Video class: 30 Days to Learn Laravel, Ep 12 - Pivot Tables and BelongsToMany Relationships14m
Exercise: Which Eloquent relationship should you use to connect a Job to any number of Tags via a pivot table?
Video class: 30 Days to Learn Laravel, Ep 13 - Eager Loading and the N 1 Problem10m
Exercise: What is the primary fix for an N+1 query problem when displaying each job's employer inside a loop?
Video class: 30 Days to Learn Laravel, Ep 14 - All You Need to Know About Pagination13m
Exercise: Which pagination method is described as the most performant for extremely large datasets, but uses a cursor value in the URL instead of page numbers?
Video class: 30 Days to Learn Laravel, Ep 15 - Understanding Database Seeders07m
Exercise: Which command refreshes the database (drops and recreates tables) and then reruns the seeders in one step?
Video class: 30 Days to Learn Laravel, Ep 16 - Forms and CSRF Explained (with Examples)23m
Exercise: When submitting a Laravel form with a POST request, what is the main purpose of adding the Blade directive @csrf?
Video class: 30 Days to Learn Laravel, Ep 17 - Always Validate. Never Trust the User.13m
Video class: 30 Days to Learn Laravel, Ep 18 - Editing, Updating, and Deleting a Resource20m
Exercise: When updating an existing job, which request type is used to signal an update while keeping the same URI (e.g., /jobs/{id})?
Video class: 30 Days to Learn Laravel, Ep 19 - Routes Reloaded - 6 Essential Tips16m
Exercise: Which Laravel feature automatically registers the typical set of RESTful routes (index, show, create, store, edit, update, destroy) for a controller?
Video class: 30 Days to Learn Laravel, Ep 20 - Starter Kits, Breeze, and Middleware12m
Exercise: In Laravel Breeze, what primarily prevents a guest from accessing the /dashboard page and forces a redirect to the login screen?
Video class: 30 Days to Learn Laravel, Ep 21 - Make a Login and Registration System From Scratch: Part 117m
Exercise: Which Blade directives help show Login/Register links only to visitors who are not signed in, while showing other markup to signed-in users?
Video class: 30 Days to Learn Laravel, Ep 22 - Make a Login and Registration System From Scratch: Part 223m
Exercise: During login, what should happen after a successful authentication attempt to improve security against session hijacking?
Video class: 30 Days to Learn Laravel, Ep 23 - 6 Steps to Authorization Mastery22m
Exercise: In Laravel, what is the main advantage of using a Policy (instead of keeping authorization inline in a controller)?
Video class: 30 Days to Learn Laravel, Ep 24 - How to Preview and Send Email Using Mailable Classes13m
Exercise: In Laravel, what is the benefit of using the URL() helper when generating a link inside an email?
Video class: 30 Days to Learn Laravel, Ep 25 - Queues Are Easier Than You Think15m
Exercise: In Laravel, after changing an email from being sent synchronously to being queued, what must be running for the queued job to actually process?
Video class: 30 Days to Learn Laravel, Ep 26 - Get Your Build Process in Order11m
Exercise: Which npm script should you run to bundle and optimize assets for production in a Laravel project using Vite?
Video class: 30 Days to Learn Laravel, Ep 27 - From Design to Blade20m
Exercise: When storing an image inside the resources directory for Vite versioning and cache busting, what must be added so the image is included in the Vite manifest?
Video class: 30 Days to Learn Laravel, Ep 28 - Blade and Tailwind Techniques for Your Laravel Views23m
Exercise: How can you make a card title change color when the entire card is hovered (not just the title itself) using Tailwind utilities?
Video class: 30 Days to Learn Laravel, Ep 29 - Jobs, Tags, TDD, Oh My!34m
Exercise: To avoid confusion with job listings, which table name is used instead of Laravel’s default queue table name jobs?
Video class: (Finale) 30 Days to Learn Laravel, Ep 30 - The Everything Episode43m
Exercise: When a Laravel form includes a file upload (like an employer logo), which form attribute must be set so the upload is encoded correctly?
Video class: 30 Days to Learn Laravel - Complete 8 Hour Course8h29m
Exercise: In Laravel, what is the main benefit of using Laravel Herd for local setup?