Interactive Cares Laravel Career Path Outline 1
Interactive Cares Laravel Career Path Outline 1
Path Outline
Module 1
● Live class
○ Introduction to PHP
■ What is PHP
■ Why and How PHP was Created
■ PHP: Programming Language or Server-Side Language
■ PHP CLI vs PHP FPM
■ PHP: Past, Present, and Future
■ Intro to PHP Shells (Built-in shell and PsySh)
● Recorded classes
○ PHP basics
■ Episode 1: Data Types
■ Episode 2: Type Hinting
■ Episode 3: Type Casting
■ Episode 4: Intro to Variables
■ Episode 5: Intro to Arrays
■ Episode 6: Array Manipulation
■ Episode 7: Intro to Functions
■ Episode 8: Built-In Functions
■ Episode 10: Function Named Arguments
■ Episode 11: Intro to Closures
■ Episode 12: Intro to Loops
○ Object-oriented PHP
■ Episode 1: What is the Programming paradigm
■ Episode 2: Programming paradigm in PHP
■ Episode 3: OOP basics
■ Episode 4: Principles of OOP
■ Episode 5: Abstract classes
■ Episode 6: Interfaces
■ Episode 7: Polymorphism
■ Episode 8: Constants and Enums
● Live class
○ How to build a simple PHP CLI application
■ Introduction to PHP CLI Applications
■ Handling Command-Line Arguments
■ Building the Application Structure
■ Reading and Writing to the Console
■ Interacting with Files and Directories
■ Error Handling and Exception Management
Assignments:
● Assignment 1: Build a simple PHP CLI tool (Count the alphabet in the given sentence)
○ Description: Build a simple PHP CLI tool called alphacount. This tool should be
run from the command line like alphacount "PHP is love!" and it should
produce the output of 9 because it has a total of 9 alphabets/characters in the
sentence.
● Assignment 2: Build Expense tracker CLI app
○ Description: A simple CLI application for adding income, and expenses, viewing,
and updating different kinds of incomes and expenses. There should be a
Category for each income and expense. Use OOP concepts. Make sure to store
the data in files so that the data persists.
Module 2
● Recorded classes
○ PHP Advanced topics
■ Episode 1: Namespaces
■ Episode 2: Traits
■ Episode 3: Magic Methods
■ Episode 4: Composition vs Inheritance
■ Episode 5: Dependency Injection
● Live class
○ Advanced OOP design principles
■ Composition over Inheritance
■ Program to an Interface
■ Encapsulate what changes
■ SOLID
■ KISS
■ DRY
■ YAGNI
● Recorded classes
○ Autoloading and Dependency management
■ Episode 1: Autoloading in PHP
■ Episode 2: Introduction to Composer
■ Episode 3: Autoloading using Composer
■ Episode 4: Autoloading Files using Composer
■ Episode 5: Managing Dependencies with Composer
■ Episode 6: Utilising Packagist and Packages
■ Episode 7: Advanced Dependency Management
● Live class
○ How to build your own composer package and publish in Packagist
■ Introduction to Composer Packages
■ Setting Up Your Package Structure
■ Writing and Testing Your Package Code
■ Documenting Your Package
■ Versioning and Releasing Your Package
■ Maintaining and Updating Your Package
Assignments:
● Assignment 3: Build a Bangla Faker library package (or a different package idea)
○ Description: Build a simple package that will be like the ‘Faker’ library but it’ll only
return Bangla contents, for example, names, phone numbers, addresses, etc. in
Bangla texts.
Module 3
● Recorded classes
○ Web primer
■ Episode 1: Intro to the Web and Internet
■ Episode 2: Understand Client↔Server Architecture
■ Episode 3: HTTP Basics
■ Episode 4: Cookie, Session
■ Episode 5: Components of a web application
○ Git intro
■ Intro to version control
■ Git basic commands
■ Github basics
● Live class
○ PHP as a server-side language
■ How web servers execute PHP
■ Intro to PHP built-in web server
■ Building a simple web application (or website) using HTML, CSS, PHP,
and Nginx
● Recorded classes
○ Intro to Database
■ Episode 1: Introduction to Databases
■ Episode 2: Database Types and Other Data Storage Options
■ Episode 3: Schema and Database Modeling
■ Episode 4: Intro to ER Diagram
■ Episode 5: Intro to MySQL
■ Episode 6: Query in Database
■ Episode 7: Mutation (insert, update, delete) in Database
● Live class
○ Intro to Database drivers and how to connect PHP with database
■ Introduction to PDO (PHP Data Objects)
■ Introduction to MySQLi
■ Establishing a Database Connection
■ Executing Queries
■ Handling Transactions
■ Error Handling and Debugging
Assignments:
Module 4
● Recorded classes
○ Intro to Framework
■ Episode 1: What is a Framework?
■ Episode 2: Why Do We Need a Framework?
■ Episode 3: Library vs. Framework
■ Episode 4: Micro-framework vs regular framework
■ Episode 5: Framework vs. CMS (Content Management System)
● Live class
○ PHP clean code practices
● Recorded classes
○ How to Build an MVC Framework
■ Episode 1: Introduction to MVC (Model-View-Controller)
■ Episode 2: Initial Setup & Autoload Classes
■ Episode 3: Application Entry Point & Routing
■ Episode 4: Working With Views and Helpers
■ Episode 5: Model Usage and Configuration
■ Episode 6: Refactor and Future Extensions
● Live class
○ Best practices and recommendations
■ PSR and coding conventions
■ Intro to coding standard tools (PHPCS etc.)
■ Intro to Semantic Versioning
Assignments:
Module 5
● Recorded classes
○ Intro to Laravel
■ Episode 1: What is Laravel? Why is Laravel So Popular?
■ Episode 2: Where to Find Laravel Codes
■ Episode 3: Intro to Laravel Ecosystem
■ Episode 4: Symfony Components in Laravel
■ Episode 5: Laravel Framework Code Structure
■ Episode 6: Introduction to 'Artisan' Commands
● Live class
○ How to Become a Laravel Expert
● Recorded classes
○ Development Environment Setup
■ Episode 1: Setup Your Code Editor (VS Code)
■ Episode 2: Recommended VSCode Extensions & Utilities
■ Episode 3: Other Options for Development Environments (online
platforms etc.)
● Live class
○ Let’s start with Laravel
■ Different Options for Laravel Installation
■ Server Requirements to Install Laravel
■ Docker and Laravel Sail
■ Intro to Configuration and Environment Variables
Assignments:
Module 6
● Recorded classes
○ How Laravel Handles a Simple Request
■ Episode 1: Intro to Routing in Laravel
■ Episode 2: Route parameters and named routes
■ Episode 3: Route group, route prefix, resourceful route, etc.
■ Episode 4: Controllers in Laravel
■ Episode 5: Demystifying Request
■ Episode 6: Demystifying Response
● Live class
○ Explaining Request-Response Lifecycle in Laravel
● Recorded classes
○ Mastering View in Laravel
■ Episode 1: Views in Laravel
■ Episode 2: Intro to Blade Templating Engine
■ Episode 3: Layouts Using Blade Template Inheritance
■ Episode 4: View Composers
■ Episode 5: Custom Blade Directives
■ Episode 6: Sessions
■ Episode 7: URL Generation
● Live class
○ Intro to Laravel Collections
Assignments:
Module 7
● Recorded classes
○ Intro to Database Management in Laravel
■ Episode 1: Database Migration 101
■ Episode 2: Database Seeding Insights
■ Episode 3: Seeding From External Data Source
■ Episode 4: Multiple Database Connections
● Live class
○ Database migration best practices
● Recorded classes
○ Query builder in Laravel
■ Episode 1: Common DB operations (Select, join, etc.)
■ Episode 2: Raw queries
■ Episode 3: Mastering ‘WHERE’
■ Episode 4: Ordering, grouping, limit, offset
■ Episode 5: Insert, update, delete
■ Episode 6: Chunking and Lazy Loading
● Live class
○ Intro to Basic Authentication in Laravel
Assignments:
Module 8
● Recorded classes
○ Auth scaffolding
■ Episode 1: Introduction to Starter Kits (Breeze, Jetstream, etc.)
■ Episode 2: Route protection
■ Episode 3: Guards
■ Episode 4: Custom user providers
■ Episode 5: Social auth
● Live class
○ Middleware in Laravel
● Recorded classes
○ Validation in Laravel
■ Episode 1: Introduction to Validation (Why and How)
■ Episode 2: Displaying Validation Errors in View
■ Episode 3: Form Request Validation
■ Episode 4: Custom Validators
■ Episode 5: Custom Validation Rules
■ Episode 6: Custom Error Messages
■ Episode 7: Advanced Validation
○ Useful Laravel Helpers
■ Episode 1: Understanding Laravel Helpers and Their Utility Functions
■ Episode 2: Exploring Common Helpers like Str, Arr, and More
■ Episode 3: Creating Custom Helpers in Laravel
● Live class
○ How to handle forms in Laravel: the right way
■ CSRF protection
■ Method spoofing
■ Handling form data
■ Form validation
Assignments:
● Assignment 9: Use Laravel Breeze in ‘Barta’
○ Description: Use Laravel Breeze to implement complete auth in the ‘Barta’ app
along with the user profile.
Module 9
● Recorded classes
○ Eloquent ORM
■ Episode 1: Intro to Eloquent ORM
■ Episode 2: Route model binding
■ Episode 3: Model factories
■ Episode 4: Eloquent Relationships
■ Episode 5: Accessor and Mutators
■ Episode 6: Model query scopes
● Live class
○ Laravel models in-depth
● Recorded classes
○ Working with Date & Time
■ Episode 1: Introduction to Carbon
■ Episode 2: Exploring Carbon's Features and Functionalities
■ Episode 3: Available Methods for Date and Time Manipulation
■ Episode 4: Date, DateTime, and timestamp fields in DB
■ Episode 5: Explaining created_at, updated_at and deleted_at
○ File storage
■ Episode 1: Explaining file storage mechanism, disks, and drivers
■ Episode 2: File Retrieval
■ Episode 3: Storing file
■ Episode 4: File Handling in Forms
■ Episode 5: Restricting file access (public files vs. auth-protected files)
● Live class
○ Intro to Laravel media library package
Assignments:
● Assignment 10: Implement the Model and a few new features in ‘Barta’ app
○ Description: Instead of DB query builder, use the Laravel model. Also, implement
comment and like features for posts in the ‘Barta’ app. Users should be able to
post images from now on.
Module 10
● Recorded classes
○ Laravel Architecture concepts
■ Episode 1: Reflections in PHP
■ Episode 2: IoC Containers
■ Episode 3: Service Container in Laravel
■ Episode 4: Dependency Injection in Controllers
■ Episode 5: Service Providers in Laravel
● Live class
○ Kernels
■ Understanding the Concept of Kernels in Laravel
■ Exploring the HTTP and Console Kernels
● Recorded classes
○ Demystifying Facades
■ Episode 1: What is Facade
■ Episode 2: Facade vs. Dependency Injection
■ Episode 3: Facade vs. Helper Functions
■ Episode 4: Real-time Facades
○ Error handling, Logging, and Debugging
■ Episode 1: Exception Handler
■ Episode 2: Rendering exceptions
■ Episode 3: Reporting exceptions
■ Episode 4: Custom HTTP Error Pages
■ Episode 5: Logging
■ Episode 6: Debugging tools and techniques (dd, var dump server,
debugbar, ray, telescope, etc.)
● Live class
○ Access control
■ Intro to Authorization
■ Gates
■ Policies
Assignments:
Module 11
● Recorded classes
○ RESTful API development
■ Episode 1: What is API
■ Episode 2: What is REST
■ Episode 3: RESTful API Development in Laravel
■ Episode 4: API Authentication (Laravel Sanctum and other options)
■ Episode 5: Introduction to API Clients (Postman, Insomnia)
■ Episode 6: Eloquent API resources
■ Episode 7: Introduction to Fractal (Package by PHP League)
● Live class
○ RESTful API development best practices
■ Naming
■ Proper use of HTTP methods and status codes
■ Authentication
■ API Versioning
■ API Rate Limiting
■ API Documentation
● Recorded classes
○ Caching
■ Episode 1: What is caching and why do we need it?
■ Episode 2: Caching Patterns and Techniques
■ Episode 3: Cache drivers
■ Episode 4: Cache usages
■ Episode 5: Cache tags
■ Episode 6: How to manage Cache keys effectively
● Live class
○ Intro to ‘Laravel Actions’
Assignments:
● Recorded classes
○ Brushing up Front-end skills
■ Episode 1: Intro to TailwindCSS
■ Episode 2: Intro to AlpineJS
■ Episode 3: Intro to VueJS
○ Asset bundling
■ Episode 1: Asset Bundling using Vite
■ Episode 2: Asset Bundling using Mix
● Live class
○ Intro to Livewire
● Recorded classes
○ Full-stack app development without front-end JS frameworks
■ Episode 1: Full Stack App using Laravel + Blade + JQuery/AlpineJS +
Tailwind/Bootstrap
■ Episode 2: Full Stack App using TALL Stack (Tailwind + AlpineJS +
Livewire + Laravel)
○ Full-stack app development with front-end JS frameworks
■ Episode 1: Introduction to SPA (Single Page Application)
■ Episode 2: Client-side Routing vs Server-Side Routing
■ Episode 3: Full Stack App using Laravel + Vue/React/Svelte SPA +
Tailwind/Bootstrap
■ Episode 4: Intro to Inertia
■ Episode 5: Full Stack App using Laravel + Vue/React/Svelte + Inertia +
Tailwind/Bootstrap
■ Episode 6: Introduction to Laravel Splade
■ Episode 7: Introduction to Ziggy package (by TightenCo)
● Live class
○ Laravel + Vue SPA best practices
Assignments:
● Assignment 13: Convert the ‘Barta’ app into a SPA (Only the public-facing site, not the
Admin dashboard). (Note, We’ll provide the basic setup for the Vue codes so that
participants don’t get stuck on ‘Vue’).
Module 13
● Recorded classes
○ Mail
■ Episode 1: Mailing Basics
■ Episode 2: Mail Drivers
■ Episode 3: Mailables
■ Episode 4: Email Sending
■ Episode 5: Email and Local Development
■ Episode 6: Transactional email vs. marketing email
● Live class
○ Events in Laravel
● Recorded classes
○ Notifications in Laravel
■ Episode 1: Understanding Laravel's notification system
■ Episode 2: Creating and Sending Notifications
■ Episode 3: Customising and Handling Notifications
● Live class
○ Broadcasting in Laravel
■ Intro to WebSockets
■ Understanding the Concept of Broadcasting in Laravel
■ Configuring Laravel's Broadcasting Drivers and Settings
Assignments:
● Assignment 14: Implement real-time notification and email feature for the ‘Barta’ app
○ Description: When a user gets a comment in their post, send them an email and
an in-app notification. When a user gets a ‘like’ on their post or comment, send
them an in-app notification. In-app notifications should be done in real-time.
Module 14
● Recorded classes
○ Queue
■ Episode 1: What is Queue
■ Episode 2: What is Job
■ Episode 3: How to manage async jobs using Queue
■ Episode 4: Handling failed jobs
■ Episode 5: Intro to Laravel Horizon
● Live class
○ Laravel Queue best practices and real-life examples
● Recorded classes
○ Localization in Laravel
■ Episode 1: Understanding the Importance of Localization in Web App
■ Episode 2: Implementing Multi-Language Support
■ Episode 3: Configuring Language Files and Language Switching
■ Episode 4: How to manage localization in Front-end frameworks
(Vue/React)
○ Processes
■ Episode 1: Intro to Processes
■ Episode 2: Example and use cases of Processes
● Live class
○ Task Scheduling in Laravel
■ Introduction to Laravel's Task Scheduling Feature
■ Scheduling and Executing Tasks at Specific Intervals
■ Configuring and Managing Scheduled Tasks
Assignments:
Module 15
● Recorded classes
○ Working with external services
■ Episode 1: HTTP Client in Laravel
■ Episode 2: Consuming External Services (Third-party API Integration)
■ Episode 3: What is Webhook
■ Episode 4: How to Implement a Webhook in Laravel
■ Episode 5: How to Consume a Webhook in Laravel
● Live class
○ Securing a Laravel App
■ Hashing and Encryption in Laravel
■ Other Security Concerns
● Recorded classes
○ Deployment
■ Episode 1: Understanding the Deployment Process
■ Episode 2: Preparing the Application for Production Deployment
■ Episode 3: Deploying a Laravel Application to Hosting
■ Episode 4: Local vs. Staging vs. Production Environment
● Live class
○ Scaling a Laravel app
■ Laravel Application Scaling Techniques
■ Strategies for Scaling a Laravel Application
■ Configuring and Utilizing Technologies Like Redis and Memcached
Assignments:
● Assignment 16: Design and propose a plan for scaling the ‘Vaccine registration system’
for the whole country.
Module 16
● Recorded classes
○ Intro to testing
■ Episode 1: Testing basics
■ Episode 2: Different types of tests
■ Episode 3: Intro to TDD
■ Episode 4: Intro to PHPUnit
● Live class
○ Intro to testing in Laravel
● Recorded classes
○ Testing advanced
■ Episode 1: Data providers
■ Episode 2: Mocking
■ Episode 3: HTTP Tests
■ Episode 4: Browser tests
● Live class
○ Testing in Laravel Using PEST
Assignments:
Module 17
● Recorded class
○ How to build a multi-tenant Laravel App
■ Episode 1: Introduction to Multi-tenancy in Laravel
■ Episode 2: Understanding the Concept of Multi-Tenancy and Its Use
Cases
■ Episode 3: Handling Tenant Isolation
■ Episode 4: Database Separation
■ Episode 5: Tenant-Specific Customization in Laravel
● Live class
○ Console commands and use cases
● Recorded class
○ Git basics
● Live class
○ GitHub and how to work collaboratively in a team
Assignments:
Module 18
● Recorded classes
○ Intro to Laravel ecosystem projects and tools
● Live class
○ Case study analysis of different project requirements and scenarios
● Recorded classes
○ Intro to some popular 3rd party Laravel Packages
■ Packages from Spatie, Tightenco, Beyondcode
■ Other popular “Open Source Community-Driven Packages” to make the
development easier.
● Live class
○ Open Q/A and Discussion about more projects
■ Ideas
■ Booking system
■ Job Board
■ Quiz site
■ CRM
■ Course selling platform
■ Library management
■ Linktree, Lnk.Bio type service based Websites
Module 19-24