
Set up a fresh Laravel project and install Livewire v3. Configure the environment and MySQL database via phpMyAdmin, set the app URL, and initialize a Git repository.
Define livewire components, create an example component via artisan, render with a blade view, and enable interactivity using wire:click to refresh and render dynamic time.
Explore Livewire actions by building a reactive counter with a public count property, an increment method, and front-end bindings via wire modifiers like click and throttle, while noting authorization checks.
Explore how Livewire properties expose public data to the front end, use wire:model for input syncing, and add todos with wire:click and wire:submit in a Livewire app.
Explore Livewire lifecycle hooks, especially mount and updated, to initialize properties, load data (e.g., todos) from a database, respond to property changes, and trigger validation or dependent UI updates.
Explore full page components in Livewire by rendering the counter component directly within a layout file to avoid repetitive blades and enable dynamic titles from config app.name.
Explore Alpine.js and Livewire integration, building a simple counter with x-data and x-on click. See how to call Livewire methods from Alpine.js with wire magic.
Build a mini students management system using Laravel, Livewire, and Tailwind css with a focus on crud operations, models, migrations, seeders, and pagination for scalable data tables.
Install and set up a laravel project with breeze starter kit, blade with alpine stack, and livewire. Configure mysql and initialize git as you define models and migrations for features.
Define the classes, sections, and students models and migrations for a Laravel-based mini student management system, outlining database structure, relations, and fillable fields, then run migrations and prepare seeders.
Define factories for classes, sections, and students, create a seeder to generate related sections and students, and configure has many and belongs to relationships before migrating and seeding the database.
Define a livewire list students component, render a Tailwind-styled table of all students from the database, enable authentication, and implement pagination with a use with pagination trait.
Learn live wire from scratch by defining a new live wire component and a student creation form with wire model bindings, validations, and database storage, wiring routes and blade views.
Implement dependent dropdowns to populate sections from the selected class using Livewire v3 lifecycle hooks, then finalize the student creation flow with validated inputs.
Learn to implement the record update flow with livewire v3 by building the edit route and component, pre-filling data via route model binding, and validating updates.
Learn how to use Livewire v3 form objects to shift the create student flow into a dedicated form object, including properties, validations, and a store method.
Define a dedicated update student form object, reuse the create form logic, implement set student, fill properties, validate, and call update on the student record to complete the update flow.
Learn to delete individual student records in a Livewire v3 app by passing the student ID, adding a confirmation dialog with wire:confirm, and refreshing the component after deletion.
Enable a spa-like experience in Livewire v3 by implementing the wire navigate feature, which intercepts requests and updates only the changed parts without full page refresh.
Fixes issues in a Livewire v3 student management app by aligning form objects with the component, validating name, email, class ID, and section, and enabling redirects after create and update.
Implement a select all checkbox for a Livewire v3 data table by syncing page IDs to the selected IDs array, using blade components and Alpine.js.
Improve the bulk select workflow in Livewire v3 by syncing page selection with the check all checkbox using a watcher on selected IDs.
Implement indeterminate checkbox states in data tables by updating the check all state as items are selected on a page, showing indeterminate when some but not all are selected.
Implement a select all button to capture all item IDs across all pages before pagination, and sync with selected IDs via a blade component powered by Alpine.js.
Refactor a bloated data table by extracting reusable features into traits, building searchable and sortable traits in app/traits, and applying them to the list students component for reuse across CRUDs.
Learn how lazy loading defers slow server data in Livewire components, using the lazy attribute and placeholders to show a loading indicator while data renders.
Build a reusable comments system with Livewire, enabling add, reply, edit, delete, and authorization checks, with pagination while preventing n+1 queries via eager loading and alpine-driven focus.
Install a Laravel project with the installer, configure Breeze with Blade and Alpine, initialize Git, set up MySQL with phpMyAdmin, enable login and registration, define articles and episodes models.
Set up article and episode models and attach a polymorphic comments relationship, then build migrations, views, and invokable controllers to access records by slug.
Install Laravel Livewire, define a comments component, and configure related blades and routes as a foundation for upcoming videos, including removing duplicate Alpine setups and preparing for the comments model.
Define a comment model and migration, implement a polymorphic relationship with a nullable parent_id to distinguish root comments from replies, and attach comments to episodes and articles via morph many.
Learn to list parent comments in Livewire v3 by adding a parent scope, wiring user relationships and gravatar avatars, and using a dedicated comment component for display.
Display replies in the comment component by defining a replies relationship on the comment model using parent_id, render with recursion in Livewire, and restrict to one reply level.
Build a Livewire comment form, validate the body, and post the comment to the database, linking it to the user and rendering it in the Livewire component.
Toggle a per-comment reply form with alpine js using an is replying state in a livewire component, with the filament x data directive, x transition, and x show for reveal.
Learn how to implement storing a reply to a comment in a polymorphic one-to-many relationship using Laravel Livewire, including a reply form, validation, and correct association with the parent model.
Hide the reply form after a successful reply by using Livewire's entangled state with alpine js to sync is replying between front end and back end.
Improve comment component performance by implementing eager loading strategies to reduce n plus one queries, loading comments, their replies, and associated users, using the Laravel debug bar to inspect queries.
Toggle the edit state in a Livewire v3 component, populate the edit form with the comment, and wire the update flow to save changes and rerender the UI.
Implement update comment flow in Livewire v3 by creating an update comment form object, wiring the edit form, populating the text area when editing, updating the database, and rerendering component.
Finalize comment update flow by populating the edit body when editing is true with Livewire V3. Sync with backend via the live modifier to update the comment form and replies.
Implement authorization checks for comment editing and deletion with a comment policy, ensuring only the owner can update, and enforce this with Livewire and the can directive.
Discover how model presenters offload methods from large php models into dedicated presenter classes, like a comment presenter, and format created at for humans via the model and blade templates.
Implement a user-owned comment deletion flow with authorization checks, a confirmation dialog, and Livewire component updates to reflect deletions in the UI.
Learn how to implement a robust delete flow for comments and replies with Livewire v3, using the parent components, event dispatchers, and soft deletes.
Prevent replies to replies by adding an isReply check on the comment model and using early returns in the Livewire flow, so only top-level comments can be replied to.
Implement the pagination feature for the comments component using Livewire v3, enabling paginated links, first-page navigation after new comments, and a seamless live update without full page refresh.
Fix the alpine.js blip on page load by applying the x cloak directive to hidden elements, hide them with css, and improve the no comments yet label.
Learn to autofocus reply and edit textareas in a Livewire v3 comments component using Alpine.js x effect, x ref, and next tick to focus, with total comments via pagination.
Build a three-step multi-step form using livewire and the tall stack, covering meta data entry, image upload, and a final review and publish step.
Install a fresh Laravel project with Blade and Alpine, set up a MySQL database, and run migrations to start a multi-step forms app with Livewire and Breeze.
Install and configure the Laravel Livewire Wizard to build a multi-step form, define step components (cart, delivery address, confirm order), and manage navigation between steps.
Configure the wizard component in livewire v3 by building a parent wizard and step components, rendering title, description, and publish steps, and wiring navigation for a multi-step form.
Implement a multi-step wizard in Livewire v3 by wiring a title input, validating it on submit, storing the title, and navigating to the description step and beyond.
Build a multi-step livewire flow that captures title and description, validates input, previews data in a publish step, and stores it in a wizard model in the database.
Refactor the stateToStore method to map all step data with collections and map with keys, extracting title and description for publishing and front end display, improving scalability when adding steps.
Define a product wizard in a Livewire v3 app by building meta, image, and publish steps, organizing them in a product create namespace, and wiring a steps() method for navigation.
Define a previous step button in a Livewire v3 multi-step form that dispatches a previous step event to the wizard and uses a flex layout to navigate between steps.
Add a top navigation to a multi-step wizard by defining step labels and a reusable navigation component, then render dynamic labels like meta information, product image, and review and publish.
Store product data at the next step to maintain state in a Livewire wizard, creating a product model and migration with title, description, image path, and user association.
The lecture demonstrates building a custom state in Livewire v3 to store and share the created product model across wizard steps, replacing repetitive database queries and enabling image upload integration.
Build a reusable drag-and-drop uploader with Livewire and the tall stack, enabling multi-file uploads, validation for mp4 files, progress tracking, and download links.
Install a fresh Laravel project using the Laravel installer, selecting Breeze with Blade and Alpine. Set up SQLite, run migrations, and install Livewire for a reusable drag drop uploader.
Define the uploader Livewire component and design its interface using Tailwind, including a drag-and-drop file area, multiple file uploads, and validation messages with a progress indicator.
Configure a multi-file uploader with Livewire's with file uploads trait and a public files array. Bind uploads to the front end via alpine js and the files property.
Implement a drag-and-drop upload on the uploader component using alpine js, track dropping state, and provide visual border feedback during drag over.
Master validating uploaded files in Livewire v3 by applying mime types and size rules, handling defaults, displaying custom messages, and preparing for subsequent storage and processing.
Learn how to store uploaded files using the Laravel Media Library, attach them to a post model in a dedicated attachments collection, and enable a polymorphic, reusable media workflow.
Learn to display a live progress bar for file uploads using Livewire's upload multiple callbacks and Alpine JS, binding progress detail to an indicator that appears during uploading.
Display user uploaded files, render download links, and use Livewire computed properties to fetch post attachments; implement media downloads via the media library and ensure automatic UI refresh on uploads.
Make the uploader reusable by passing a dynamic model to a Livewire component and displaying its associated media via the Laravel media library.
Install a Laravel project using the installer and Breeze Blade with Alpine, then install Livewire, initialize git, use sqlite, and prepare a model with seeders and factories for infinite scrolling.
Define a post model with a migration, factory, and seeder to seed data for infinite scrolling. Use Faker to generate title and teaser and seed 100 posts with varied created_at.
Install Livewire and create a list post component to render post IDs in ten-record chunks. Implement infinite scrolling by loading subsequent chunks on scroll or via a load more button.
Learn Livewire v3 to implement infinite scrolling by loading post data for each chunk via IDs, using a post chunk component, where in queries, and a sorting strategy like latest.
Implement an intersection observer to trigger infinite scrolling by loading more data as items enter the viewport, using Livewire and Alpine.js with the x-intersect directive.
Build a real-time chat app with Laravel, Livewire, and Laravel Reverb, implementing message broadcasting, online user lists, and typing indicators that update without page reloads.
Install a fresh Laravel project for Livewire Chat, pick Volt Class API with Laravel Breeze, set up SQLite, initialize git, run migrations, and seed initial data.
Set up Laravel Reverb and configure broadcasting with Laravel Echo, Pusher, and environment settings to broadcast and listen for real-time events on the front end.
Scaffold chat rooms by creating a room model with name and slug, migrations and a factory, then build a Livewire room show component using route model binding to render rooms.
Build the chat interface by rendering the room name and messages using tailwind and alpine js, then set up the input area and ui structure for future logic.
Customize the text area behavior to support shift+enter for new lines and enter to submit, wiring the text area to a Livewire component and storing messages in the database.
Define a message model, migration, and factory to store user messages in a room, validate the body, relate messages to the user and room, and save to the database.
Seed two users, a live wire room, and 50 messages to render in a chat interface, displaying messages on left or right by sender using Laravel seeders and sequence helper.
Define two Livewire components, messages and message, to render each seeded message by looping over the room's messages relationship, eager loading users, and displaying body and timestamp.
Learn how to render chat messages using conditional blade classes in Livewire v3, distinguishing authenticated user messages from received ones and applying dynamic styling with item start and item end.
Learn to display chat messages from the bottom by reversing the flex column, rendering latest messages at the bottom, and sorting by latest while adjusting spacing for a clean layout.
Learn how to push a new message with Livewire v3 by dispatching a message.created event, passing the message ID, and prepending the loaded message in the messages component.
Learn how to implement real-time functionality with Livewire and Laravel Echo, configure broadcasting with Laravel Reverb, and broadcast on private and presence channels.
Display online users for a chat channel using presence channels in Livewire V3. Subscribe to a private chat room and render online users through a dedicated online users component.
Learn how to listen for user joining and leaving events in a chat channel, update the ids array to prevent duplicates, and reflect real-time presence.
Detect typing events by listening for keydown in the text area, emit start typing and, after two seconds, stop typing via echo, and display a typing indicator in the nav.
Implement whispering typing status in a Laravel Livewire app with Laravel Echo, broadcasting typing and typing finished events on a private chat room channel and updating live UI indicators.
Format message timestamps in livewire v3 by creating a createdat human date attribute that renders today, yesterday, or a date with time, and display it in the chat interface.
In this course, we will be Learning Laravel Livewire v3 (A tool to build Powerful, dynamic, front-end UIs without leaving PHP) along with Laravel (TALL stack in general) in a practical way by building multiple practical projects along the way.
Projects Roadmap and Status:
[Uploaded] Livewire Basics
[Uploaded] Building a Simple Student's Management System
[Uploaded] Building Amazing and Performant data tables with the TALL Stack
[Uploaded] Building a re-usable Comments System with Livewire
[Uploaded] Building Multi-Step Forms with Livewire
[Uploaded] Building a Re-Usable drag and drop Uploader
[Uploaded] Building real-time applications with Laravel, Livewire and Reverb
Project Description:
[Uploaded] Livewire Basics
In this section, we'll look into the basics of Livewire and some of the fundamental features Livewire provides.
Some of the topics we'll cover in this section include:
Learn how to Define Components in Livewire
Look into Properties and Actions in Livewire and their general use cases.
Learn about Lifecycle Hooks in Livewire and their conventions.
Learn about Full Page Components in Livewire, how to use them, and some issues we might face. (these eliminate the use of Laravel Controllers and intermediate views)
A gentle introduction to Alpine.js and how to use it in Livewire/Blade
[Uploaded] Building a Simple Student's Management System
In this section, we'll build a simple CRUD app and dive into the fundamentals of building CRUD applications with Livewire and the TALL Stack, we'll start by installing Laravel and then set up Livewire along with Laravel Breeze installation, and we will learn the following topics along the way:
Learn about Lifecycle hooks and Build dependent dropdowns in Livewire
Learn how to extract properties and methods to a Form Object and use it in a Livewire Component
Learn how to work with Factories and Seeders in Laravel, and seed the necessary data for all of our Models
Learn about the new #[Rule] attribute syntax in Livewire and implement Validations.
Learn about wire:navigate and implement SPA kind of experience in a Livewire-based app.
Look into the issues we might face while using dedicated form objects, and eventually fix all of them.
[Uploaded] Building Performant data tables with the TALL Stack
We'll continue from where we left off in the previous section and build an interesting data table in this section.
This includes Excel Exports, Filtering Functionality, Bulk Records Selection, Loading Indicators etc.
Some of the features that we'll cover in this section are listed below:
Learn how to Implement Loading Indicators (while paginating data or while performing any operation)
Learn how to Implement Search functionality (supporting multi-column searching)
Learn how to Implement Columns Sort functionality (supports multi-column sorting)
Learn how to implement Bulk Actions (a feature to select multiple rows and perform group action on all of them)
Learn how to implement Excel Exports
We'll also learn how to install and configure the Filament Notifications package to display notifications.
We'll also implement Selecting all the records (across all the pages), and make the necessary visual changes.
Learn how to Implement Filter Functionality
And many more...
[Uploaded] Building a re-usable Comments System with Livewire
In this Section, we'll be building a re-usable Comments Component that instantly works for any model. We'll use polymorphic relationships, which can be attached to multiple models.
Some of the features that we'll cover in this section are listed below:
Learn how to build a re-usable Comments Component that supports multiple models along with Comment Edit, Delete, and Reply Functionality.
Learn how to implement proper authorization checks (on both frontend and backend) so that only the authorized user can delete the comment.
We'll sprinkle in Alpine.js to make our Livewire Component more interactive (like showing reply/edit forms, applying transitions etc.)
We'll also learn how to automatically focus the reply/edit forms when it is rendered in the form. (using Alpine.js)
We'll also implement replying to Comments, Editing Comments/Replies, Deleting Comments and Replies
Learn how to properly paginate the comments and fix a few issues along the way.
At the end, we'll look at how to optimize our database queries using eager loading strategies.
[Uploaded] Building Multi-Step Forms with Livewire
In this section, We'll learn about everything we need to build multi-step forms in Livewire. We'll cover the basics of creating a multi-step form, adding steps, navigating steps and accessing state, and building a practical project at the end of the Section.
Some of the features that we'll cover in this section are listed below:
Learn how to navigate between the steps of the multi-step form seamlessly, we'll also implement proper Validations along the way.
We'll use a Laravel package dedicated to building multi-step forms in this section, and build features on top based on our needs.
Learn how to work with Image Uploads and fix state-related issues
Learn how to define a configurable navigation component to show the state of the Multi-Step Component.
Finally, we'll build a fully working practical example with more advanced step navigation, file uploads, and custom state.
[Uploaded] Building real-time applications with Laravel, Livewire and Reverb
Learn how to Integrate Laravel with Reverb to build Real-Time Applications
Learn how to display user typing events using Whisper and Client-to-Client communication
Learn how to use presence channels to show online users for each room
Learn how to use Flexbox tricks to keep messages scrolled into view as they roll in
Seeding databases in Order
Listening for Broadcasted events from the backend and reacting to them accordingly in Livewire
We'll also learn how to listen for users leaving or joining events and add/remove them from the online user list