
Master inertia basics with Laravel and Vue, including installing Inertia and defining pages with props. Implement forms with backend validations and display validation messages while enabling data sharing across pages.
Install a fresh Laravel 11 project with the view with inertia stack and Breeze starter kit, set up sqlite, and run migrations to support a Vue.js with inertia app.
Explore the Breeze with Inertia.js project, examining routes, Inertia renders, and front-end components in a Laravel 11 app to understand data flow from back end to Vue 3 views.
Register an authenticated resourceful comments route, create a corresponding controller and inertia index view, and render the page within the project's existing layout using the comments component.
Define dynamic title and meta tags in inertia-based applications using the head component from the Inertia Vue 3 package, ensuring SEO-friendly page titles and meta descriptions.
Discover how to pass data from the Laravel back end to the Vue 3 front end via Inertia, using props, define props, and render post data in the index view.
Learn how to format post data with Laravel api resources, including post and user resources, eager loading, and front-end data handling for inertia applications.
Rename the posts route and directory, and update the post controller and pages to fix routing. This aligns the inertia based Laravel 11 project ahead of form handling.
Master the basics of forms in inertia-based applications, binding form fields with the inertia form helper and v-model, posting to the backend, and handling validation errors and loading states.
Implement form submissions in inertia-based applications by wiring the store method and validations for posts. Manage frontend form state, errors, and loading indicators while authenticating users.
Display validation errors on the front end by checking field-specific errors in the errors bag (body) and styling them with tailwind. Demonstrate showing and clearing errors after a post request.
Explore resetting a form after a successful request using onsuccess callbacks and the recently successful boolean indicator, and compare resetting with manually setting values while preserving the initial value.
Learn to reset validation errors on focus in a Laravel 11 app with Inertia.js and Vue 3. Use form.clearErrors to clear the body error when the textarea is focused.
Learn how to perform manual visits and partial reloads with Inertia.js using the router to load only post data or the now timestamp, and preserve scroll for seamless updates.
Implement navigation between pages using the Inertia link helper to partial reload post data while preserving scroll, demonstrating dynamic values and only prop usage with posts data.
Discover how Inertia middleware shares globally accessible data, like the authenticated user and custom greetings, across every page using the share method and use page helpers.
Learn how Laravel Ziggy exposes your Laravel routes to frontend JavaScript, allows referencing routes by name with parameters and model binding, and integrates smoothly with Inertia and Vue 3.
Hook into the form's callback to display flash notifications on successful post creation, using the Vue two certification toast package and configured options.
Revise flash messages in Laravel 11 with Inertia.js and Vue 3 by using a shared data approach to pass a session message and display a front-end toast.
Explore shorthand routes in inertia to render components directly via route inertia, passing middleware, names, and parameters, and compare with the closure-based approach for Laravel and Inertia.js.
Learn how Inertia.js preserves form state across page navigation by assigning a unique form key to store the post to the database, keeping data intact when returning from the dashboard.
Preserve states across page interactions with get requests, maintaining search inputs, form inputs, scroll position, and the current page via a preserve state flag for a seamless user experience.
Implement basic authorization in an inertia-based Laravel app by creating a post policy that lets only verified email users create posts, with backend checks and frontend concealment.
Create a global notifications plugin to display flash messages by hooking into Inertia's router and triggering toasts when page props message exists.
Streamline the flash notifications flow in a Laravel 11 Inertia.js Vue 3 app by formatting session data in middleware for front-end consumption.
Fix a small but important bug in the flash notifications flow by updating notifications.js to require message.body before displaying a default info notification during validation.
Customize Laravel error pages in the Inertia.js stack by creating a blade file for the error (e.g., 403.blade.php) to override the default page, and prepare for Inertia responses.
Override the default error responses in Laravel 11 by returning inertia responses for errors, such as 419 and 403, wiring an inertia-rendered error page and ensuring assets compile.
Render errors on a Vue error page by checking status codes in an array and passing a status prop to compute titles and descriptions for 403 and 404 in Laravel.
Define a config toggle to show or hide custom error pages in a Laravel 11 app with Inertia.js. Enable in production, disable in local environments.
Build a Laravel 11 student management system with Inertia.js and Vue 3, implementing create, read, update, delete operations, dependent dropdowns with axios, search, class filtering, and server-side pagination.
Set up a fresh Laravel project with Inertia and Vue using the Laravel Breeze Starter Kit, configure SQLite, and run php artisan migrate to create the database and admin user.
Explore building a Laravel 11 app by defining models, migrations, factories, and seeders, establishing class, section, and student relationships, and seeding an admin user to bootstrap data.
Display and format the students data in a Laravel 11 app using Inertia.js and Vue 3, with API resources, eager loading, and front-end props to render a searchable table.
Implement server-side pagination with Inertia.js and Vue 3 in a Laravel 11 app, building a pagination component, fetching data from the server, and rendering paginated links with tailwind styling.
Explore the record creation flow in a Laravel 11 app with Inertia.js and Vue 3, rendering the create page, passing class data, and preparing for dependent dropdowns and validation.
Implement dependent dropdowns with Vue watchers that fetch sections from the API when the class ID changes and populate the section select in an Inertia v3 form.
Display validation messages and finalize the record creation flow in a Laravel 11 Inertia.js Vue 3 app, reusing Breeze-inspired validation and binding error states for name, email, class, and section.
Learn the record update flow in a Laravel 11 app with Inertia.js and Vue 3, covering backend edit and update methods, route model binding, and a prefilled edit form.
Implement a live search with Vue 3 and Inertia.js on Laravel 11, binding input to a ref, building a search url, and filtering and paginating results on the backend.
Fix the issue where the search input is lost when navigating pagination by moving the update page number logic to the index view and passing it as a prop.
Fix remaining issues in a data table by resetting the page to one when a search is entered. Verify by updating url, preserving scroll, and building with npm run dev.
Implement a filter by class for the students data table using a class select and v-model. The backend combines search and class filtering in Laravel to return the correct results.
Implement roles and permissions in an inertia based Laravel app by defining role CRUD, assigning permissions, and enforcing front-end and back-end checks from scratch, with admin and user role examples.
Explore the database structure for roles and permissions and users in a Laravel 11 app. Understand the many-to-many relationships and pivot tables, then plan migrations, factories, and seeders.
Define the role and permission models and migrations, create role_user and permission_role pivot tables, and seed admin and user roles with permissions for student access in a Laravel 11 app.
Explore displaying and deleting roles in a Laravel 11 app using Inertia.js and Vue 3, including the role resource, index view, and destroy route with route model binding.
Explore the create, update, and delete flows for roles in an Inertia-based Laravel 11 app, including validation, redirects to the roles index, and upcoming permission management.
Implement a permissions drop-down on the role create page using the view select package, enabling multi-select, data passing from backend, and syncing selected permission IDs with the role.
Explore how to edit role permissions in Laravel 11 with Inertia.js and Vue 3 by eager loading permissions, rendering a multi-select dropdown, and syncing selected permissions on update.
Define gates in Laravel 11 from the authenticated admin's roles and permissions, register them in a web middleware for every request, and control access based on those permissions.
Implement backend authorization checks in Laravel 11 using gates and the gate facade, handling null users and applying student access, create, edit, and delete permissions.
Implement frontend authorization by sharing backend permissions via the inertia middleware and can props. Hide or show UI elements based on user roles and permissions.
Build a multiple drag and drop uploader using Laravel Inertia JS v3 and Tailwind CSS, chunk uploads, encode with queues, and broadcast progress to the front end.
Install and set up a fresh Laravel project with the Inertia view stack and Breeze, configure SQLite, run migrations, and register an admin to start the uploader component.
Define the video model and migration to store user id, title, description, path, filename, and encoded status with cascade delete, and implement an uploader component with drag-and-drop and encoding indicators.
Build the uploader component by wiring a file input to open the file dialog, handle multiple files, and store them in a reactive uploads object for UI display.
Define a separate upload item component to render each uploaded file and pass the upload object via props, offloading UI and logic from the uploader.
Create and store a video record by uploading a file, saving its data to the uploads object and database, and wiring routes and a video controller for the store action.
Update the upload details by storing the video and editing title and description via a text area, using a form posted to videos.update with validation and preserving scroll and state.
Fix and finalize the video details update flow in Laravel, correct the spelling issues affecting route and model binding, implement validations with input error components, and prepare for video chunking.
Learn chunked video uploads in a Laravel and Vue 3 app using mux up chunk. And display a progress indicator as chunks upload to videos.upload while the backend assembles them.
Implement a live upload progress indicator by listening to progress events, updating an upload object's progress and uploading flags, and dynamically rendering a progress bar in the UI.
Handle video chunk uploads on the server by receiving chunked data through videos.upload, reconstructing the file with the Laravel chunk upload package, updating the video path, and storing publicly.
Enable canceling uploads by showing a cancel button when uploading, emit a cancel event with the video ID, abort the front-end upload, and delete the video via the destroy method.
Learn to pause and resume uploads on the front end by emitting pause and resume events, handling upload by id, and toggling user interface buttons by paused state.
Implement strict authorization for video management in Laravel 11 by using policies and form requests to ensure only the owner can update, delete, or upload a video.
Learn to implement a drag-and-drop uploader in a Laravel 11 app with Inertia.js and Vue 3, wiring drop events to the existing chunked upload flow and progress indicators.
Install and configure Laravel Reverb to display backend encoding progress, publish broadcasting settings, integrate Laravel Echo and Pusher JS, and test with a sample test event on the videos channel.
Define a private broadcasting encoding job that starts video encoding, emit a video encoding started event, and notify the owner via a private channel, updating the front end.
Learn to encode videos in a Laravel app using the Laravel FFmpeg package, configure FFmpeg binaries, and store the encoded mp4 files on the public disk.
Broadcast video encoding progress from the back end and display the percentage on the front end via a video encoding progress event on a private users channel.
Finalize uploader flow by replacing old video with encoded one in video model and deleting previous file after encoding, then emit after-saving event to update front end.
Fix a bug in the multi drag and drop uploader by correcting after saving chaining, restore auto completion, and ensure encoding completes with the updated path and encoded flag.
Implement smooth infinite scrolling in Inertia.js based apps using Vue.js, loading initial ten records and fetching more data on scroll, addressing router issues and performance.
Install a fresh Laravel project with the Laravel installer, Breeze with Vue and Inertia, and SQLite; then define a Post model with a factory and seeder for infinite scrolling.
Create a post model with its migration, factory, and seeder, seed 100 posts with varied created_at dates to enable infinite scrolling in a Laravel 11 app.
Define a new post route and controller, paginate ten posts, and render with Inertia using a post resource to display id, title, and teaser, setting up infinite scrolling.
Use the intersection observer from a Vue.js utility package to detect when the bottom enters the viewport and trigger loading more data, enabling infinite scrolling with a last element ref.
Implement infinite scrolling with inertia router using the intersection observer to load more posts, manage pagination (current and next pages), and address limitations before switching to axios.
Implement infinite scrolling with Axios in a Laravel 11 app, replacing inertia router, handle json post data via use page and props, and manage pagination.
Finalize the infinite scrolling feature by implementing cursor pagination with a next cursor and fixing duplicate data loads at the bottom via the intersection observer.
Fix remaining issues in infinite scrolling for an inertia-based app by using an intersection observer and next cursor checks to stop loading at the end of pagination.
Learn to implement translations in an inertia-based Laravel 11 app with a language dropdown to set the locale and apply translations project-wide; see a German example to improve performance.
Install a fresh Laravel project with the Laravel installer, pick Breeze with Vue and Inertia, use SQLite for local development, and initialize a Git repository.
Define a PHP enum Lang in app/lang to store English and German, add a label method, publish Laravel language files, and verify labels with a Pest unit test.
Share translation data globally via inertia middleware to render a navigation dropdown across all pages, exposing languages with value and label using a language resource.
Build a language selector with a dropdown to switch translations on a Laravel 11 app using Inertia.js and Vue 3, leveraging an enum and Inertia middleware.
Store the user's selected language from the dropdown in the session to persist translations across visits, validating with an enum and falling back to the default locale.
Create a language middleware to read the session language and set the app locale for every request in Laravel 11 with inertia.js.
Learn to share locale translations from Laravel to the Inertia front end by using the Inertia request middleware to load language files, prefix keys by file, and serve selected language.
Learn to replace translation placeholders with dynamic content using a globally registered JavaScript helper, accessing translations via use page props and performing replacements such as the user name.
Enhance performance by caching translations with the catch helper, using a unique key like translations.{locale} to serve English or German data from the cache.
Upgrade inertia from 1 to 2.0 and explore polling, prefetching, and deferred props to boost performance, then implement infinite scrolling and lazy loading in Laravel 11 Inertia Vue 3 app.
Explore polling in Inertia.js with the usePoll helper, fetching latest data at intervals, loading only required data, and controlling start, stop, and lifecycle events for real-time updates.
Inertia 2.0 deferred props enable skeleton rendering and post-load fetch, boosting perceived performance; implement with inertia defer on the server and a client deferred wrapper, plus grouping for parallel loading.
Master prop merging in Laravel 11 with Inertia.js and Vue 3 by using the Inertia merge function to combine server data with client data, demonstrated with a notification system.
Practice secure navigation by enabling the history encryption API in Inertia 2.0, which encrypts page history with the browser crypto API and clears it on logout to prevent back-button access.
Learn how Inertia 2.0 makes partial reloads asynchronous and parallel, replacing the old synchronous behavior. See a two-button demo showing normal vs delayed reloads to illustrate concurrent processing.
Learn how Inertia version 2.0 prefetching preloads data for pages users are likely to visit, using link and programmatic prefetching, cache strategies, and stale-while-revalidate.
In this course, we will be Learning Inertia.js (A tool to build single-page apps, without creating any APIs) along with Vue.js in a practical way by building multiple practical projects along the way.
Inertia serves as the solution, seamlessly connecting Laravel as a backend with a frontend Framework (React/Vue/Svelte), enabling us to build everything in one application (a monolith) while achieving the same outcome. The best part? We don't have to create an API.
Projects Roadmap and Status:
[Uploaded] Learn Inertia
[Uploaded] Flexible Flash Notifications with Inertia
[Uploaded] Customizing Error Pages in Inertia
[Uploaded] Building a Simple Student's Management System
[Uploaded] Implementing Roles/Permissions in Inertia-Based Applications.
[Uploaded] Multiple Drag And Drop File Uploading and Processing with Inertia
[Uploaded] Translations with Laravel and Inertia
[Uploaded] Infinite Scrolling with Inertia
Project Description:
[Uploaded] Learn Inertia
In this section, we'll look into the basics of Inertia and some of the fundamental features of Inertia.js.
Some of the topics we'll cover in this section include:
Learn how to set up Laravel with Inertia and Vue Stack.
Learn how to Format the data with API Resources.
Learn about how to work with forms, and display validation errors
Learn how to preserve the scroll behavior, and preserve the state of the page
Learn how to implement Manual Visits and Partial Reloads in Inertia.
Learn how to Implement Authorization checks (on both frontend and backend)
Learn how to Customize the default Error pages and render Custom Inertia Pages (403, 404, 419 pages)
Learn how to display Flash Notifications in Inertia/Vue
Learn how to Set up page titles and meta tags.
[Uploaded] Flexible Flash Notifications with Inertia
In this Section, we'll learn how to build a flexible flash notifications feature in Inertia.
By the end of the section, we'll have the ability to flash any notification, anywhere in our application, without repeating any code.
[Uploaded] Customizing Error Pages in Inertia
Learn how to Customize the default error pages in Inertia.
We'll learn the following in this Section:
Learn how to customize the default error pages in Laravel
Learn how to return an Inertia Response whenever any error is encountered in our app.
Learn how to render different types of errors by re-using the same vue component.
Learn how to define a config to enable/disable the rendering of custom error pages
[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 Laravel, Inertia, and the Vue Stack, and we will learn the following topics along the way:
Learn about Watchers in Vue.js and Build dependent dropdowns in Inertia/Vue
Learn how to work with Factories and Seeders in Laravel, and seed the necessary data for all of our Models
Learn how to use a Re-usable Vue Component to display validation messages.
Learn how to Implement Server Side Pagination from scratch.
Learn how to Implement Search Functionality in an Inertia/Vue Data-table.
Learn how to Implement filters in an Inertia/Vue data table.
[Uploaded] Implementing Roles/Permissions in Inertia-Based Applications.
We'll continue from where we left off in the previous section and implement the Roles and Permissions functionality without using any external plugins.
Some of the features that we'll cover in this section are listed below:
Implement Roles CRUD.
Manage Permissions related data for a specific role on Role Create/Edit Pages
Implement Authorization/Gate Checks throughout the project (on both frontend and backend)
[Uploaded] Multiple Drag And Drop File Uploading and Processing with Inertia
In this section, we'll build a multiple-file chunked uploader in Inertia/Vue with the ability to pause, resume, and cancel uploads.
And learn the following along the way:
Learn how to Integrate and Use Laravel Reverb in an Inertia/Vue Application.
Learn how to edit metadata (like the title and description) for each upload — even while they’re uploading and processing.
Learn how to queue and process uploaded files on the Backend
Learn how to report progress updates to the client using Laravel Reverb.
And many more...
[Uploaded] Translations with Laravel and Inertia
Localization is a breeze in Laravel applications, but what happens when you need to bring this to the client side? Turns out in Inertia, it's pretty simple.
In this section, we'll build a language switcher, share translations with the client, and build a simple translation helper for Vue to use directly in templates. We'll also cover caching translations to keep things running smoothly.
[Uploaded] Infinite Scrolling with Inertia
In this section, we'll seed our database with a bunch of data and start building the solution, we'll start by using Inertia's router to load additional data, and later we'll optimize the infinite scrolling flow by replacing the router with Axios.