Browse all series
FrameworksIntermediate64 episodes

The Laravel Workshop

Buckle up, this is the workshop you've been waiting for! In fact, this course is such a massive undertaking to the point that it required three Laracasts instructors. Join Jeffrey Way, Simon Vrachliotis, and Jeremy McPeak as we build a fictional X-like platform, called Pixl, entirely from scratch!

Each instructor is responsible for one piece of the puzzle. Simon will tackle the static HTML and CSS build. Then Jeremy will convert it into a traditional and dynamic Laravel application. Finally, Jeffrey will demonstrate how to transform a server-side app into a full SPA. Let's go!

Series episodes

HTML and CSS (16)

Figma Design Overview

4m 45s

Explore the Figma design to learn spacing, layout and key UI elements—align visual goals before rebuilding your app's interface.

Vite Dev Server

3m 31s

Start a Vite dev server, scaffold a Tailwind-ready project, and set up a local playground to speed frontend development and gain confidence.

Tailwind Theme Customization

8m 29s

Customize Tailwind config to match your design system, tweak colors, spacing, fonts, and shadows to turn Figma into production-ready code.

Login Screen: Overall Layout

14m 28s

Build a responsive two-column login screen layout using Tailwind flex utilities to match the original UI's proportions and structure.

Login Screen: Action Buttons

17m 56s

Implement primary and secondary login buttons with hover and disabled states, consistent spacing, and accessible interactive styling.

Login Screen: Word Stack

14m 24s

Recreate the login screen's vertical word stack using a flex-column trick, custom tracking, and sizing. Follow a clear, hands-on walkthrough.

Login Screen: Responsive Pass & Final Touches

22m 55s

Make your login screen fully responsive across breakpoints with stacking behavior, refined spacing, and final cleanup for a clean, consistent UI.

App Screen: 3-Column Layout

12m 4s

Learn to build a responsive 3-column app layout with CSS Grid—scaffold sidebar, feed, and profile panels fast with clear, practical steps.

App Screen: Sidebar

20m 45s

Build a polished left sidebar with navigation links and refined styling, creating a balanced, connected UI for your app screen.

App Screen: Navigation

9m 13s

Build a top app navigation bar: position it, manage z-index stacking, and ensure a consistent, responsive UI across pages.

Feed: New Post Prompt

18m 49s

Build an inviting new-post prompt with placeholder text, avatar placement, and refined spacing and borders—practical UI/CSS tips for your feed.

Feed: Post UI

21m 13s

Create a polished post UI with avatar, author info, timestamp, and responsive spacing—step-by-step CSS/HTML guidance to match your design.

Feed: Post with Replies

24m 6s

Extend your post UI with nested replies—learn indentation, visual separation, and scalable thread structure for clean, maintainable discussions.

Feed: Reply Form

7m 35s

Add a responsive reply form beneath posts - ensure smooth layout flow, clear visual hierarchy, and practical CSS/UX tips.

App Screen: Responsive Pass & Final Touches

17m 36s

Polish your app layout for all screens—tighten spacing, refine mobile styles, and apply final responsive tweaks so the UI snaps into place.

Profile: Header Section

26m 26s

Design a distinctive profile header with avatar, user info, and subtle background treatments—polished UI tips to give profiles unique identity.

Laravel and Blade (30)

Installing Laravel

8m 17s

Install Laravel into an existing repo - set up the app, configure the dev server, and serve feed and profile views step-by-step.

Extracting the Navigation, Aside, and Layout

7m 41s

Extract navigation and aside into reusable partials and layouts, learn how to componentize your app markup for cleaner, maintainable views.

Creating the Artists to Follow Component

5m 34s

Build an 'Artists to Follow' reusable Blade component to display curated artist suggestions, simplify sidebar UI, and boost engagement.

Extracting the Post Form

7m 21s

Refactor duplicate post/reply markup into a reusable Blade partial to simplify views, cut duplication, and speed up Laravel maintenance.

Creating the Feed Item Partial View

11m 14s

Extract and build a reusable feed-item Blade partial to display PIXL feed items, supply mock data, and prepare your app for real content.

Generating Feed Replies

9m 4s

Extract reply markup and update your data structure to generate feed replies, treating them like posts to streamline your Laravel feed.

Creating the Profile Model

9m 39s

Build a Profile model in Laravel: split User/Profile, add one-to-one relation, migration, factory, fillable fields, and Faker avatars for tests.

Building the Post Model

9m 37s

Build a Post model that handles posts and replies using nullable parent_id, add Eloquent relations, migration indexes, and a reply-ready factory.

Preparing Likes and Follows

8m 18s

Create Like and Follow models with migrations, constrained FKs, unique indexes and Eloquent relations to prevent duplicates and power social features.

Modeling Reposts

5m 5s

Model reposts as posts in Laravel: add repost_of_id, nullable content, self-relationship, tweak factories and tests to support quote/plain reposts.

Publishing Posts

10m 6s

Learn to publish posts in Laravel: add a Post::publish method, scaffold Pest tests, run migrations, fix factories, and pass them.

Replying To Posts

5m 14s

Implement a reply method so profiles can reply to posts, link replies to originals, and verify single/multiple replies with tests.

Basic Reposts

7m 48s

Learn how to implement reposts in Laravel: create a repost factory/method, handle plain and quote reposts, wire relationships, and pass tests.

Preventing Duplicate Reposts

7m 28s

Prevent duplicate reposts in Laravel by adding a DB unique constraint (profile_id+repost_of_id), using firstOrCreate, adding removeRepost and tests.

Liking Posts

10m 45s

Implement likes in Laravel: add Like::create/remove, enforce DB uniqueness, and test counts to prevent duplicate likes.

Following Profiles

11m 33s

Add profile following in Laravel: enforce unique follows, prevent self-follow, implement createFollow/removeFollow with tests for toggle behavior.

Seeding The Database

7m 43s

Seed the database with about 20 profiles, posts, likes, follows, reposts and replies for realistic test data, then run php artisan db:seed.

Displaying Top Level Posts

20m 3s

Build a ProfileController and profiles.show route, eager-load counts and top-level posts, add cover image support and view partials.

Implementing The Replies Page

15m 40s

Build a 'Replies' profile page: fetch posts with a user's replies, eager-load profiles/counts, add route/view, and convert to Post/Reply components.

Creating The Header Component

10m 13s

Extract a Profile Header component, gate engagement buttons with a showEngagement prop, and prevent replies appearing on posts pages.

Displaying A Thread

11m 46s

Show threaded posts in Laravel: add PostController/posts.show with route model scopes, eager-load relations and counts, and support nested replies.

Finalizing the Artists to Follow Component

8m

Finalize the Artists-to-Follow component: implement real profile suggestions for both signed-in and anonymous users to boost engagement.

Displaying the Timeline

18m 46s

Learn to build a timeline query that aggregates posts from followed profiles—reposts, replies, and likes—so signed-in users see relevant activity.

Creating Posts

6m 34s

Learn to build Laravel Request objects, controller methods, and Blade components to create posts—practical, step-by-step guidance for developers.

Replying to Posts

12m 40s

Add reply functionality to posts in Laravel: build components, routes, and handlers so profiles can reply - hands-on, step-by-step guidance.

Reposting, Liking, and Following

7m 7s

Implement repost, like, and follow UI in PIXL—learn practical, step-by-step wiring to activate social interactions quickly and confidently.

Deleting Posts, Unliking, and Unfollowing

10m 38s

Delete posts, unlike content, and unfollow users in PIXL—follow a friendly, step-by-step guide to wire UI and backend actions fast.

Creating Social Button Components

7m 54s

Build reusable Blade social buttons for like, repost, and follow—learn component structure, props, and markup for clean, maintainable UI.

Cleaning Up

4m 47s

Refactor partial views into Blade components—clean up your Laravel project for clearer, reusable UI and easier maintenance, step by step.

Refactoring Queries

14m 15s

Refactor controller queries into query classes to simplify logic, improve testability, and keep your Laravel code clean and maintainable.

From Blade to SPA (18)

Welcome To Section 3

16m 16s

Join Jeffrey Way in Section 3: clone Simon and Jeremy's work, install dependencies, and add a composer format task to run Pint and Rector.

The VILT Stack

19m 44s

Build the VILT stack—Vue, Inertia, Laravel, and Tailwind CSS. Follow step-by-step setup and configuration to get a modern full-stack app running.

The Feed Page

23m 21s

Migrate Blade feed views into Vue single-file components with a friendly, step-by-step workflow for converting each file.

Named Routes And Ziggy

5m 9s

Use Laravel's route() for hrefs and learn Ziggy to access named routes in JavaScript—keep URLs consistent and maintainable across your app.

SVGs Can Be Vue Components

5m 22s

Turn SVGs into Vue components to hide markup, enable reusability, accept props, and simplify your UI with clean icon components.

API Resource Classes

10m 54s

Learn how to use Laravel API Resource classes to shape and secure data for SPAs—send only what clients need with clear, testable responses.

The Create Post Form

7m 56s

Build a dynamic 'create post' form with Inertia 2's Form component—streamline validation, state, and submissions for faster development.

The Post Item Component

17m 53s

Create a reliable Post item component: render likes, reposts, and replies with accurate counts, clear labels, and responsive UI patterns.

Post Commenting

10m 35s

Build post replies and interactive reply forms: toggle reply UI on button click, add threaded commenting with a hands-on demo.

Show A Single Post

14m 12s

Create a single-post page that shows a post and its replies — hands-on guide to routing, views, and loading them.

Dropdown Menus And Headless UI

16m 53s

Add accessible dropdown menus for post actions using Headless UI — implement view, delete, and other links quickly with minimal code.

The Profile Page

14m 15s

Build user profile pages: clicking avatars navigates to a profile showing bio, replies, and activity - a hands-on guide to routing and views.

Follow Functionality

9m 32s

Wire up the follow/unfollow form to the backend—learn to submit requests, update the UI, and enable profile follows instantly.

Flash Messaging

7m 46s

Show instant user feedback with FlashMessages—display temporary alerts after actions like posting, following, or updating a profile.

The Marketing Page

7m 23s

Add a polished splash marketing page by cloning Simon's repo—create a welcoming, conversion-focused landing page for guest users.

Browser Testing Workshop

25m 31s

Jump-start your browser testing: follow hands-on examples and ready-made test files to structure a scalable test suite and speed up real-world QA.

Deploy Pixl Using Laravel Forge

7m 14s

Deploy Pixl to production with Laravel Forge - step-by-step, easy setup so you can push your app live confidently and quickly.

Section 4: You

1m 53s

You've finished the series — now take control: get recommended feature projects and practical guidance to build, learn, and ship.

Continue learning

Thumbnail for JavaScript Techniques For Server-Side Applications
JavaScript Techniques For Server-Side Applications

With Caleb Porzio

  • 3 episodes
  • Advanced
  • Languages
Thumbnail for Demystify Laravel's Magic
Demystify Laravel's Magic

With Mohamed Said

  • 6 episodes
  • Advanced
  • Frameworks
Thumbnail for Advanced Image Uploading with Vue and Laravel
Advanced Image Uploading with Vue and Laravel

With Andrew Schmelyun

  • 8 episodes
  • Intermediate
  • Frameworks
Thumbnail for What's New in Laravel 5.8
What's New in Laravel 5.8

With Jeffrey Way

  • 5 episodes
  • Beginner
  • Frameworks
Thumbnail for Code-Breaking Workshop
Code-Breaking Workshop

With Jeffrey Way

  • 7 episodes
  • Intermediate
  • Frameworks

Would you like to hear from Laracasts by email occasionally?