
Explore Laravel from scratch through a project-based course building the work Opia job site. Learn routes, controllers, models, views, migrations, artisan cli, alpine js, and deployment to Forge and DigitalOcean.
Demonstrate a Laravel from scratch course project, using blade templates with components for header and job cards, with Alpine.js for interactivity, including search, bookmarking, and apply modals with Mapbox.
Access premium docs for Laravel from scratch via a zip download containing 15 folders with explanations and code samples covering dev environment, setup, views, controllers, models, authentication, and dashboards.
Laravel, an open source PHP web framework, enables rapid, secure, scalable development with MVC, built-in authentication, Eloquent ORM, Blade, migrations, and a vibrant ecosystem.
Explore Laravel's built-in tools, including Blade templating with components, Eloquent ORM, Artisan and Tinker, dynamic routing, built-in validation and authentication, mailers, migrations, testing, and helpful utilities like Faker and Carbon.
Set up your development environment for Laravel from scratch using VSCode and helpful extensions. Explore installation options, including Laravel Heard for quick setup and composer-based Laravel with Postgres.
Set up VS Code as your editor, install PHP intellisense and Laravel Blade snippets for code hints, enable format on save, and use git with the GitHub dark theme.
Install laravel herd on macos via dmg, drag to applications, configure nginx and php 8.3, create a new laravel project with starter kits, and initialize git with composer and artisan.
Install laravel heard on windows, configure php 8.3 and node.js, then create a new laravel project named work opia and view it at work opiate test dot test.
Learn to install Laravel with composer, set up a project, and run a local development server using artisan and PHP across Mac and Windows environments.
Explore the Laravel file and folder structure, the MVC pattern, and routing in the main routes file, handling get and post /jobs with dynamic routes, query params, and request object.
Explore the Laravel folder structure, from composer.json and package.json to app, database, public, and resources, and learn auto loading, env usage, migrations, and routing basics.
Learn how the mvc pattern in Laravel separates an application into models, views, and controllers, with routes triggering controllers, Eloquent handling data, and Blade templates presenting output.
Define endpoints and routes to handle HTTP requests, returning views, strings, or json using get, post, and other methods, and learn route naming, CSRF handling, and API routing.
Learn how to define dynamic route params in Laravel, use curly braces, combine multiple params, and apply numeric or alpha constraints, including a global constraint via the app service provider.
Explore how the Laravel request object exposes method, url, path, IP, user agent, headers, query params, form data, files, cookies, and session data, with dependency injection and practical retrieval examples.
Master Laravel's response helper to craft response objects with status codes and headers, return JSON or JSONP, read cookies with the request, and download files via public_path.
Apply a TLS certificate to your domain with a simple command, optionally using a self-signed SSL, then restart nginx to enable HTTPS for your Laravel site.
Learn how to build a Laravel app by routing requests to controllers, rendering Blade views with dynamic data, using layouts and partials, and applying type hinting.
Learn how Laravel presents data through views, using Blade or plain php, following mvc principles, and structure views like jobs/index and create with routes.
Learn how to pass data to views in Laravel from scratch using array, with, or compact; create a jobs list, loop through it, and secure output with html special characters.
Learn to build fast, dynamic views with Blade templates in Laravel, output variables with double curly braces, and use directives like @foreach and @if that compile to PHP and cache.
Master blade loop directives, including for else and empty, and use break and continue alongside the loop variable’s index, first, last, even, odd, and more to control output.
Learn to implement the MVC design pattern in Laravel by creating a job controller with index and create methods, wiring routes, and following conventional singular controllers and plural routes.
Use route parameters like /jobs/{id} in a controller's show method to display a job, then submit create form to /jobs, read inputs via the request object, and apply CSRF protection.
Generate a Laravel resource controller with all CRUD methods: index, create, store, show, edit, update, destroy. Register them using a single resource route.
Apply type hinting in Laravel controllers to improve readability and early error detection by declaring types like request, view, response, and redirect. This optional feature keeps code cleaner and safer.
Master layouts in Laravel from scratch by using template inheritance or layout components, with Blade yield, extends, and sections to build reusable navigation and customizable titles using Tailwind classes.
Master how to use the include directive to inject a partial into a layout, create a partials/navbar blade file, and transition toward component-based layouts in Laravel.
Build the user interface by turning header, hero, and navigation into reusable components with props and slots, styled with Tailwind CSS, and add a mobile menu toggle with front-end JavaScript.
Create and nest blade components in Laravel using x-dash prefixes, pass props to components like header and job cards, and render them via a component class and render method.
Learn to create a Laravel layout component with slots, replacing yield with slot, and use named slots for custom titles, while reorganizing the layout outside the components folder.
Learn to set up Tailwind CSS with npm and Vite hot reloading to build a custom interface without writing CSS, using Tailwind config, PostCSS, and Autoprefixer.
Create a header component for a Laravel app using Tailwind and ready-made theme files. Use the URL helper to generate environment-aware links and highlight active pages in Blade templates.
Learn to use blade php directive and the request helper to apply conditional classes, making links like all jobs, jobs saved, login, and register appear active with text-yellow-500 and font-bold.
Create a reusable nav link component in Laravel Blade, using attributes and a slot for link text, and define props like active, url, and icon to control appearance.
Create a reusable button link component for Laravel from scratch, with props for url, optional icon, bg class, hover class, text class, and a slot for the label.
Learn to build a responsive mobile menu in a Laravel from scratch project by enhancing the nav link component with a mobile prop and toggling visibility.
Learn to implement a mobile menu toggle with vanilla javascript, progressively refactor toward alpine js, by adding a public js script, wiring a click event, and toggling the hidden class.
Create a reusable hero component for the home page, using a layout wrapper and a request check to limit it to the homepage, with a title prop for dynamic text.
Learn to build top and bottom banners as reusable components in a Laravel app, with heading and subheading props, stretched layouts, and a create job button linking to /jobs/create.
Learn Laravel from scratch by configuring Postgres via env file, install Pgadmin, and create migrations to build users, sessions, and a job listings table with eloquent ORM.
Explore Laravel database options, using SQLite by default and Postgres or MySQL for production, and configure connections in .env. Install Postgres with Pgadmin and create migrations via Eloquent ORM.
Learn to install Postgres on macOS using Homebrew, manage the service with brew, install Pgadmin, and connect via the psql shell to explore databases and users.
install postgres on windows with the official installer, set up pgadmin four, configure the postgres superuser password and default port 5432, and launch the server.
Learn to create a user and a database in PgAdmin, use the shell to set up a database, grant privileges, and configure a super user for your Postgres server.
Configure your Laravel database to Postgres via the .env settings, uncomment migrations, and set host, port 5432, database, user, and password. Run migrations and verify with php artisan tinker.
Use migrations to manage database schema changes with versioned files that create or drop tables via PHP artisan migrate, including users, sessions, and cache, with up and down methods.
Create a migration for job listings table with id, title, description, and timestamps; run and rollback migrations with php artisan; expand table fields while exploring models and the eloquent ORM.
Interact with the database using Eloquent ORM in Laravel, leveraging methods like find, create, paginate, update, and delete, define relationships between users and job listings, and seed data with factories.
Explore how models fit into mvc and harness eloquent orm to perform database CRUD, then build a simple manual model with hard coded data before using artisan and eloquent.
Use the Eloquent ORM to fetch all jobs via a Job model mapped to job_listings, enable fillable for title and description, and pass data to the view with object syntax.
Learn to perform create, read, update, and delete operations with Eloquent in Tinker, then apply the code in your controller. Explore schema and mass assignment using all, find, and create.
Learn how Laravel model binding fetches a single job by route parameter and passes it to the show view, enabling clickable index links to job details.
Create a new job from the app by submitting the form, capturing title and description with request input, using Job::create, and redirecting to the jobs index.
Learn how to validate Laravel forms with the request object, enforce title and description rules (title max 255), and show per-field errors with old input.
Create a new migration add_fields_to_job_listings to add fields like salary, tags, job_type enum, remote, and company details; truncate table data and update the job model fillable.
Explore a one-to-many relationship between jobs and users in eloquent, using belongs to and has many, with a user_id foreign key and cascade on delete, plus migrations and model methods.
Learn how to use factories to define model attributes and create reusable blueprints for seeding data and testing. The lesson explains faker data generation, hashed passwords, and tinker usage.
Create a job factory in Laravel from scratch using artisan and Faker to generate realistic listings with user associations, titles, descriptions, salaries, tags, job types, and company details.
Create and run seeders to populate the database from the command line using artisan, moving from factories to random user and random job seeders, then via the main seeder.
Create a final database seeder that loads predefined job listings from a PHP file, attaches random user IDs, adds timestamps, and clears data before seeding, then run php artisan db:seed.
Build full CRUD for job listings in a Laravel from scratch course, featuring job cards, flash alerts, Alpine.js for dismissible messages, and a modal to apply.
build a presentable jobs page with a responsive grid of reusable job card components. display dynamic data such as title, type, salary, location, remote or on-site, tags, and company logo.
Display the latest six jobs on the home page using a Laravel home controller, the job model, and eloquent latest.
Create a dynamic job details page in Laravel from scratch, rendering the title, description, type, remote status, salary, location, tags, requirements, and apply or bookmark controls.
In Laravel from scratch, build a create job page with text input, text area, select, and file upload components, wiring old input, csrf, and inline error handling.
Build a reusable input component in Laravel using Blade components in resources/views/components/inputs for text inputs and other types. Design it with dynamic props like id, name, label, type, value, placeholder.
Build Laravel input components (text, text area with rows and cols, select, file) from scratch, wire them into forms using x- components and props like id, name, label, placeholder, options.
Finish input validation for a job listing form with required and nullable fields, type checks (string, integer, boolean, image with mime types), a hard-coded user id, and a success alert.
Create a reusable alert component in Laravel to display flash messages stored in a temporary session, rendering success or error alerts via blade templates and session helpers.
Learn to auto dismiss alerts on the client side with Alpine.js in a Laravel app, using x-data, x-init, and x-show to hide after a timeout and toggle a mobile menu.
Master conditional rendering of optional fields in a Laravel job board, including images and tags, on the job card and show views.
Learn how to upload images in Laravel using local storage, store files under storage/app/public/logos, create a storage:link, and display uploaded logos in cards and details.
Implement edit and update for job listings in Laravel using model binding and a Blade edit view, with prefilled fields, logo handling, and put requests that update the listing.
delete a job listing via a delete form in the show view. route to jobs.destroy with the job id, csrf protection, and a confirm prompt; remove the logo from storage.
Learn to implement authentication in Laravel, including user registration, login, and logout, with sessions and authorization for listings, using auth facade, helpers, directives, and Breeze scaffolding.
Explore Laravel authentication options, from custom middleware and hashing with bcrypt to Breeze and Jetstream starter kits, plus Fortify, Sanctum, and Socialite for APIs and OAuth.
Learn to set up Laravel Breeze, a starter kit for authentication, using composer and breeze install to generate Blade views, routes, and login and register flows for an SQLite-backed project.
Explain how Laravel sessions maintain state across requests with a session ID in a cookie, server-side storage options, and the session helper to set, get, and forget data for authentication.
Set up separate login and register controllers and routes in Laravel, wire get and post requests to show forms and authenticate, and name routes for clarity.
Build and submit register form that posts to register.store, validates name, email, and password (with confirmation), hashes the password, creates the user, and redirects with a success message to login.
Learn to build a login flow in Laravel by creating a login form, validating credentials with the auth facade, regenerating the session, and redirecting with success or error messages.
Implement a logout button with the auth directive in blade templates, configure a post logout route and controller action, and ensure header links reflect authentication state.
Learn middleware to protect routes and implement policies so only the job owner can update or delete listings, and use a seeder to create a test user with owned listings.
Explore middleware as a gatekeeper between HTTP requests and your app, comparing global and route middleware, and learn to log requests with artisan generated middleware.
Guard routes by applying auth middleware to job resource routes in web.php, protecting create, edit, update, and destroy, and using only or except to balance access with login redirects.
Learn how the guest middleware restricts routes for already logged in users, keeping login and register pages accessible only to guests, and how to apply middleware to route groups.
Create a test user seeder to seed a test account and assign two listings during database seeding. Log in with the test credentials to verify listing ownership.
Assign the authenticated user's id to job submissions using the auth helper in the store method, replacing the hardcoded value, and restrict edit and delete buttons to the listing owner.
Create a job policy to authorize update and delete, register it in the auth service provider, and use the can directive in the show view to enforce ownership.
Enforce ownership-based access by using authorize requests in the job controller to prevent non-owners from updating or deleting listings, returning 403 when unauthorized.
In this course, you will learn the Laravel framework from the ground up by building "Workopia". A real-world job listing application. If you took my PHP From Scratch course, it is the same project but with added features.
Special Resource: I am including the premium docs with this course. This is esentially a written version of the course. There is a markdown file for every video with explanations and code snippets from that video. The download is in the first section.
Here are the main features of the Workopia project:
Job Listing CRUD
Authentication & Authorization Policies
Profile Avatar Upload
Blade UI Components
Vite & Tailwind Integration
Bookmarking System
Apply & Upload Resume
User Dashboard
Alpine.js For Interactivity
Database Seeder
Job Search & Filtering
Mapbox Maps & Geocoding
Mailers With Mailtrap
Job Listing Pagination
You will learn all of the fundamentals of Laravel including:
Routing, Request & Response
MVC
Database Migrations
Artisan CLI
Tinker
PostgreSQL Integration
Factories & Seeding With Faker
Eloquent ORM
Blade Templates
Components With Props, Attributes & Slots
Blade Directives & Dynmaic Views
Alpine JS For Interactivity
Auth Facade & Directive
Authorizartion & Policies
Learn How Sessions Work
Middleware
Laravel Breeze Overview
Mailers
Built-In Helpers - url, route, asset, session etc
Vite, NPM & Frontend Dependencies
Tailwind CSS Integration
Laravel Forge & Digital Ocean Deployment
Much More!
This course will give you all of the nessesary skills to start building your own Laravel applications regardless of what you want to do as far as working as a developer, freelancing, building your own products and so on.