
Set up a Laravel environment on Windows or Mac. Build a social-style app with posts, avatars, live search, and live chat using Livewire and Alpine.
Discover why Visual Studio Code, a free, cross-platform text editor with extensions and a built-in terminal, is the official recommendation for PHP and Laravel web development in this course.
Install and configure PHP on Windows: download from the official site, extract to program files, update PATH, and enable php.ini extensions like fileinfo, curl, and gd for Laravel.
Install php on your Mac using Homebrew for a lightweight setup and avoid full bundles. Verify the installation by running php --version in the terminal.
Learn PHP fundamentals by writing and running simple scripts, using variables, strings, and functions in VS Code. See how PHP powers web apps with local testing and a built-in server.
Install composer on Windows; composer is a PHP dependency manager that acts like a grocery store for pre-written code, then verify by running composer in the terminal after a restart.
Learn what composer is—a dependency manager for PHP—and how to install it on Mac via the terminal. Test the installation by running the composer command to verify it works.
Discover how to use Composer to pull in a package, generate a URL-safe slug from text, and understand Composer’s autoloading, preparing you for Laravel workflow.
Create a fresh Laravel project with composer create-project in a dedicated folder. Start a local server with php artisan serve and preview at localhost:8000 or 127.0.0.1:8000.
Explore how Laravel routes map URLs to actions by editing web.php, creating a root page and an about page, and understand get versus post requests for clean routing.
Learn how to create Blade templates in Laravel, understand what a view is, and pass data from a controller into a view, using Blade directives like foreach and dynamic expressions.
Learn to reduce duplication in blade templates by applying includes and a layout component with a slot, sharing a common header and footer across pages while keeping page content unique.
Install and configure MySQL on Windows, use Workbench and the command line to manage a local Laravel database, including creating schemas for the project.
Install MySQL on Mac by downloading the MySQL Community Server and MySQL Workbench, select ARM or x86 version (Rosetta if needed), then create the Laravel app schema for local access.
Connect Laravel to your database and manage tables with migrations, avoiding manual SQL. Learn to create and modify the users table with migrations, unique usernames, and fresh migrations.
Validate user input in Laravel forms with username, email, and password rules (including unique and confirmation), display automatic red error messages, and preserve old inputs on error.
Master Laravel authentication by implementing login/logout, validating inputs, posting to /log in, using auth()->attempt, regenerating the session, and rendering a logged-in home page showing the username.
Learn how to implement logout, redirects, and flash messages in Laravel, protect forms with CSRF tokens, and display login, logout, and success or error feedback in layouts and views.
Set up a create post flow in a Laravel app with routes, a controller, blade form, a posts migration, and a post model, then save via the authenticated user.
Set up a dynamic single post URL in Laravel and load post data with a model for a Blade view, while validating and preserving input with error messages.
Define a belongsTo relationship on the post model to retrieve the username from the user_id in Laravel; display username, created_at, and body in blade templates and redirect on create.
Learn how Laravel adds markdown support to post content, enabling headings, bold, italics, and lists that render as HTML. See how Str::markdown and blade rendering provide safe, controlled output.
Learn how Laravel middleware intercepts HTTP requests to protect routes, using auth or guest checks, redirects, and even custom middleware for reusable access control.
Build a dynamic Laravel user profile by routing /profile/{user}, resolving the user via model binding, and displaying their blog posts with a has many relationship in Blade.
Enforce owner-only permissions with a Laravel policy to update or delete posts, and reuse it in blade templates, controllers, and routes to streamline authorization.
Explore policy-based permissions in Laravel by enforcing with middleware and routes, protect delete and edit actions for blog posts, and build an edit workflow with Blade templates and route handling.
Set up admin or moderator status with a new is_admin migration. Enforce post update and delete permissions using Laravel policies and can and cannot checks.
Learn to build an admin-only page with a Laravel gate, then enforce it on routes or controllers while comparing gates with policies as a single ability check.
Enable users to upload and manage profile avatars in a Laravel app with a file upload form, routes, and storage via a storage link to avatars.
Learn to resize images on the server with PHP in a Laravel app using the Intervention Image package, including validation, middleware-protected routes, and saving avatars to storage with unique filenames.
Store a user avatar filename in the database and display it on the front end using Laravel blade templates and a model accessor with a fallback avatar.
Learn to save follows in the database by creating a follows table with user id and followed user, and wiring routes and a controller to follow and unfollow.
Add a dynamic follow or stop-follow button that toggles based on whether the logged-in user already follows the profile, using auth checks and a follow relationship in Laravel.
Create a reusable blade profile component with a slot to unify three profile pages—posts, followers, and following—then wire routes, controllers, and views to pass dynamic data.
Highlight the active profile tab by checking the url’s third segment in blade, and reduce duplication by adding a getSharedData function that shares data with profile views via View::share.
Learn to output a list of users by modeling followers and following in Laravel, define relationships in user and follow models, and render usernames, avatars, and follower and following counts.
Build a home page feed of posts from followed users using Laravel has many through, and expose a feed posts method on the user model to render posts in Blade.
Learn to implement pagination in Laravel by converting the feed to a paginated collection, choosing posts per page, rendering pagination links in a Blade template, and styling with Bootstrap.
Learn to make dynamic page titles in Laravel by passing a doc title to layout blade, enabling blog posts and profiles to display titles and share a reusable post component.
Discover how to search in Laravel, from simple filtering to the official scout-driven approach, then configure Scout and use Post::search(term) with user data loaded.
Learn to implement a website search feature with vanilla JavaScript and Laravel's asset bundling. Then rebuild it using Laravel's Livewire to compare tools for interactive features.
Connect your Laravel backend to client-side JavaScript using vite for asset bundling and implement a live search UI with real-time results, npm workflows, and dom purify.
Learn how events and listeners decouple code in Laravel, fire example events on login/logout, and connect listeners to log actions and prepare for broadcasting in a live chat feature.
Explore Laravel real-time broadcasting with pusher, sending chat messages to all connected users via a chat message event, channels, and a private chat channel.
Connect client-side JavaScript to live broadcasting with pusher, setting up chat.js and the private channel. See how Laravel broadcasts chat messages via ChatMessageEvent to connected clients.
Discover how Livewire enhances Laravel by building dynamic, interactive PHP components with no JavaScript, powering live search and chat features and enabling a single-page application experience.
Demonstrate live results with Livewire by binding an input to a server-side search term using wire:model and the live modifier, rendering database posts in blade without JavaScript.
Learn to build a reactive search overlay using Livewire and Alpine, toggling visibility with x-data and x-bind, and migrate from legacy JavaScript for a smoother ui.
Finish building a live search with Livewire by wiring the input to a search term, debouncing keystrokes, showing real results with a loading spinner, and a zero results message.
Learn to build a persistent chat powered by Livewire in a Laravel app, converting from vanilla JS to a single-page experience with a new chat component and animated UI.
Learn how to broadcast and receive messages in a Livewire powered chat by sending on enter, validating users, updating a chat log, and listening for broadcasted messages.
Turn your Livewire chat into a true single-page application by using wire:navigate to persist components across navigation, keeping the chat alive as you move between posts, profiles, and search overlays.
Master converting forms to Livewire by building delete and edit post actions, adding follow and unfollow features, and handling avatar uploads, all while preserving chat persistence.
Create Livewire actions to unfollow users and upload avatars in a Laravel app, preserving a persistent chat with spa navigation and real-time form handling.
Updated in November 2024 to include version 11 of Laravel and also a brand new chapter about the amazing Livewire framework.
Learn the incredibly popular and in demand Laravel (version 11) framework. There are countless Laravel courses in the world; here's what makes this one unique:
No assumptions that you already understand the PHP language.
No assumptions that you already understand the "Model View Controller" pattern.
No assumptions that you already understand how to setup a dev environment on your computer.
No assumptions that you already understand how to deploy a website.
No assumptions that you already understand the Linux command-line.
Laravel is an amazing framework, but because it is so feature-complete I've noticed that a lot of guides and tutorials get overly ambitious and introduce 10 or 20 new concepts in a single lesson which is frustrating when you're a beginner and you're trying to actually understand why you're doing what you're doing. I've also noticed a lot of tutorials assume you've already used lots of other web application frameworks before Laravel, and so they don't actually explain any of the organizational or conceptual pieces of the puzzle.
This course is different because I assume that Laravel is the first web application framework you've ever attempted to learn, and so we move at a pace where you can actually absorb the big-picture concepts that exist in all frameworks; not just Laravel.
Here's what we'll learn in the course:
The PHP language itself
Getting our computer ready for Laravel
User registration, log in, log out
Profile Photo Upload (server-side resize & storage)
The Blade Template Engine
Composer the PHP Dependency Manager
Form Validation
Gates, Policies, Permissions (e.g. You can only edit your own posts and not other people's posts)
Relationships; letting one user follow another user
How to use Models to query for the exact data you want (e.g. homepage feed of posts from the users you follow)
How to send automated emails from your app
Add API URLS that allow users to login and create & delete posts from outside the context of a web browser
Use Docker to practice deploying to a Linux server
Configure a real public Ubuntu VPS to host our Laravel app with a real domain
Setup our VPS as a Git server that you can push to for effortless future updates to your live site
I encourage you to watch the freely available first lesson titled "Welcome To The Course" to get a better feel for the course.
This course may be brand new, but this isn’t my first time teaching. I’ve led training sessions for Fortune 500 companies and I’ve already helped over 200,000 people on Udemy and received the following feedback:
"Brad definitely has some of the best techniques to embed the lesson into your mind… hands down these are the best tutorials I have had the opportunity to view."
"Presentation is concise without being tedious… you honestly feel that you have a thorough understanding of the subject."
"…[Brad] explained the process. Not memorize this or that, he explained the process. If you're looking to take a course to understand the foundations of creating websites, look no further."
Become highly valuable and relevant to the companies that are hiring Laravel developers; in one convenient place alongside one instructor. If you're ready to begin coding your own applications from the ground up - I'll see you on the inside!