Skip to main content

Black Friday 2025! Only until December 1st: coupon FRIDAY25 for 40% off Yearly/Lifetime membership!

Read more here
Premium Members Only
Join to unlock this tutorial and all of our courses.
Tutorial Premium Tutorial

Laravel 11 Mini-CRM for Beginners: Video + Repository

September 18, 2024
3 min read

Learning Laravel and want to build your first project? I suggest a task I call "Mini CRM" to manage projects/clients/tasks with simple CRUD.

In this tutorial, you will find four things:

  • Task description
  • Long 1-hour video of me live-coding the solution
  • Shorter 10-minute video version of "What you need to know" (for Premium members)
  • Link to the GitHub repository (for Premium members)

Task Description

This is the task I'm suggesting for beginners of Laravel.

Intro

  • Install Laravel and Laravel Breeze starter kit
  • Use plain Blade, no Vue/Livewire is needed in this project

Manage Users

  • Change column users.name into separate first_name and last_name
  • Use SoftDeletes in all Models
  • CRUD for managing users
  • Use pagination in this and all other CRUDs
  • Seed 10 "fake" users for testing

Introduce Roles

  • Install the Spatie Laravel Permission package
  • Seed two roles: "admin" and "user"
  • Seed one Admin user, Breeze registration should add users with "User" role
  • The "Users" CRUD from above should be available only to Admin user

Three More CRUDs

Create three more CRUDs, here are their DB columns:

Clients (all columns are string)

  • contact_name
  • contact_email
  • contact_phone_number
  • company_name
  • company_address
  • company_city
  • company_zip
  • company_vat

Projects

  • title (string)
  • description (text)
  • user_id (foreign key)
  • client_id (foreign key)
  • deadline_at (date)
  • status: one of the options of 'open', 'in progress', 'blocked', 'cancelled', 'completed'

Tasks

  • title (string)
  • description (text)
  • user_id (foreign key)
  • client_id (foreign key)
  • project_id (foreign key)
  • deadline_at (date)
  • status: one of the options of 'open', 'in progress', 'pending', 'waiting client', 'blocked', 'closed'

Create Factories and Seeders for all those tables, seed 20-50 fake records.

Introduce Permissions: The Admin role can manage everything, and the User role can see all entries and create/update them but NOT delete them.


Longer 1-hour Live-Coding Video

So, I've coded this project and decided to release two videos: a longer one for free on YouTube and a quick rundown of "only things you need to know" for Premium members.

Here's the link to the YouTube video.


Quick 10-minute Rundown Video

This shorter video and the repository link are available only for Premium members.

Premium Members Only

This advanced tutorial is available exclusively to Laravel Daily Premium members.

Premium membership includes:

Access to all premium tutorials
Video and Text Courses
Private Discord Channel

Comments & Discussion

TZ
Thaer Zuriekat βœ“ Link copied!

Thank you. This short form vid is quite convinent.

SA
Sahrim Alija βœ“ Link copied!

Great Povilas!! super Idea. I will watch also the extendent video. But next time please with livewire. Maybe a Employee Management with Jetstream teams ☺️

LN
Loganathan Natarajan βœ“ Link copied!

Thank you , super simple tutorial.

MA
Muhammad Aziz Abbas βœ“ Link copied!

Excellent approach, keep up the good work. Please bring TALL stack into action if possible in future. Thanks

PV
Paul van Vulpen βœ“ Link copied!

I have a lifetime membership but i can't see the 10 min video. Instead of the video it says: Sorry Because of its privacy settings, this video cannot be played here.

PV
Paul van Vulpen βœ“ Link copied!

Nevermind. My "bitdefender Antitracker" chrome extension blocked the video.

NS
Nuno Soares βœ“ Link copied!

I love this format :) it's great to have text tutorials and videos. thank you