β‘ Stage 1 β Foundation
ποΈ Stage 2 β Core Laravel
βοΈ Stage 3 β Intermediate
π Stage 4 β Advanced
π§ Stage 5 β Senior Patterns
πΌ Stage 6 β Job Ready
π¦ PHP Core Tasks
- Types, type hints, union types (PHP 8+)
- OOP: classes, interfaces, abstract, traits
- Namespaces & PSR-4 autoloading
- Composer: require, autoload, scripts
- Error handling: exceptions, try/catch/finally
- Closures, arrow functions, first-class callables
- Match expressions, nullsafe operator (PHP 8)
- Readonly properties, enums (PHP 8.1+)
π οΈ Environment Setup
- Install PHP 8.2+, Composer globally
- Laravel Herd (macOS) or Laragon (Windows)
- VSCode + Laravel Extension Pack
- PHPStan / Larastan from day 1
- Git: branching, conventional commits
- Postman or Bruno for API testing
- TablePlus or DBngin for DB management
- Xdebug setup for step debugging
π― Practice Assignment #1 β PHP OOP CLI App
Build a CLI expense tracker in pure PHP (no framework):
- Use classes: Expense, ExpenseRepository, ConsoleRenderer
- Store data in a JSON file using file_get_contents/file_put_contents
- Add/list/delete/filter expenses by category
- Use interfaces (RendererInterface) and dependency injection manually
- Goal: understand DI, SRP, and why a framework solves pain
π‘ Shortcut: Don't learn "all of PHP" first. Learn PHP by building β use
php -a (interactive shell) or
3v4l.org to test snippets instantly. Focus only on PHP 8+ features used in Laravel.
π Resources
FREEphp.net β Official Manual
Read: OOP, Closures, Fibers sections only
GEMPHP The Right Way
phptherightway.com β industry best practices fast
PAIDLaracasts PHP for Beginners (Jeffrey Way)
Best video content β extremely practical
FREE3v4l.org
Run PHP snippets online across versions
π Request Lifecycle (Master This First)
- HTTP Kernel β Middleware pipeline β Router
- Service Container: binding, resolving, contextual binding
- Service Providers: register() vs boot()
- Facades β what they really are (proxies)
- How the .env and config() system works
πΊοΈ Routing & Controllers
- Route groups, prefixes, names, middleware
- Resource controllers & API resource controllers
- Route model binding (implicit & explicit)
- Single action controllers
- Form Requests for validation
- Response macros
ποΈ Eloquent ORM
- Migrations, seeders, factories
- Relationships: hasOne, hasMany, BelongsTo, BelongsToMany, MorphTo
- Eager loading β N+1 is your enemy
- Scopes: local & global
- Accessors, mutators, casts
- Observers and model events
- Query Builder vs Eloquent β when to use which
π¨ Blade + Auth
- Blade directives, components, slots
- Anonymous vs class-based components
- Laravel Breeze for auth scaffolding
- Gates and Policies
- Middleware: auth, guest, verified
- Sessions and flash messages
π― Practice Assignment #2 β Blog Platform
Build a full multi-user blog with authentication:
- Users can register, login, create/edit/delete their own posts
- Posts have tags (many-to-many), categories (belongs-to), comments (has-many)
- Use Policies: only post owner can edit/delete
- Implement pagination, search with query scopes
- Admin can see all posts β use Gates
- Constraint: Zero raw SQL. Everything through Eloquent.
β‘ Artisan Shortcuts You Must Know
php artisan make:model Post -mcrf
Model + Migration + Controller + Request + Factory in one shot
php artisan tinker
REPL for your app β test Eloquent queries live
php artisan route:list --name=post
Filter routes by name β essential for debugging
php artisan migrate:fresh --seed
Nuke DB & reseed β your dev best friend
π‘ Hidden Gem: Read the Laravel source code at vendor/laravel/framework/src. When something seems like magic, trace it. Understanding Illuminate\Container\Container makes you 10x smarter about every Laravel concept.
π‘ REST API Development
- API Resources & Resource Collections
- Sanctum for SPA & mobile token auth
- API versioning strategies (/v1/, header-based)
- Fractal/Spatie Data for transformers
- Rate limiting with throttle middleware
- Standardized error responses (RFC 7807)
β³ Queues & Jobs
- Queue drivers: Redis (use this), DB, SQS
- Job chaining and batching
- Failed jobs & retry logic
- Job middleware (ThrottlesExceptions, RateLimited)
- Horizon for queue monitoring
- Scheduled tasks with Task Scheduling
π§ͺ Testing (Non-Negotiable for Senior)
- PHPUnit & Pest β learn Pest (modern syntax)
- Feature tests vs Unit tests β know the difference
- Testing HTTP endpoints with actingAs()
- Mocking: Mail, Event, Queue, Http::fake()
- Database testing: RefreshDatabase vs DatabaseTransactions
- Factory states and relationships
- Test coverage with Xdebug
π File Storage & Events
- Storage facade: local, S3, R2
- File uploads with validation
- Image processing with Intervention Image
- Events & Listeners (sync vs async)
- Notifications: mail, Slack, database, SMS
- Broadcasting with Reverb/Pusher
π― Practice Assignment #3 β REST API with Background Jobs
Build a Task Management API (like a mini Trello backend):
- Full CRUD for boards, lists, cards with Sanctum auth
- Card assignment fires a queued notification (email + database)
- File attachments stored on S3-compatible storage
- Activity log via Eloquent Observer + events
- Write Feature Tests covering all endpoints (aim for 80%+ coverage)
- Bonus: Real-time card updates via Laravel Reverb
π‘ Uncommon Resource: Pest Laravel Plugin docs are underrated. Pest's arch() tests let you enforce architectural rules (e.g., "controllers never import Eloquent models directly"). Seniors use this.
β‘ Performance Mastery
- Query optimization: EXPLAIN, indexes, composite indexes
- Caching: Redis, cache tags, cache busting strategies
- Eager load profiling with Laravel Debugbar / Telescope
- Chunking and lazy collections for large datasets
- OPcache configuration in production
- HTTP caching headers (ETags, Cache-Control)
- Read replicas: DB::connection('readonly')
ποΈ Architecture Patterns
- Repository Pattern β and when NOT to use it
- Action classes (single-responsibility handlers)
- Service classes vs Jobs vs Actions
- Data Transfer Objects (DTOs) with Spatie/Laravel-Data
- Pipeline pattern for complex multi-step processing
- CQRS basics: separate read/write models
π Security Deep Dive
- SQL injection: how Eloquent prevents it (and edge cases)
- Mass assignment: $fillable vs $guarded
- XSS: Blade auto-escaping vs {!! !!}
- CSRF: how the token system works internally
- Rate limiting with custom limiters
- Signed URLs for secure time-limited links
- Sanctum vs Passport vs JWT β choose correctly
π§© Advanced Eloquent
- Has-One-Through, Has-Many-Through, MorphMany
- withCount, withSum, withAvg on relationships
- Subquery selects and joins
- Custom Eloquent builders (extending Builder)
- Soft deletes deep-dive (forceDelete, restoring)
- Multi-tenancy with Spatie Multitenancy
π― Practice Assignment #4 β SaaS Starter with Multi-tenancy
Build a multi-tenant SaaS invoice app:
- Teams/organizations as tenants β each sees only their data
- Subscription model: Free/Pro/Enterprise with feature flags
- PDF invoice generation (queued) + email delivery
- Implement caching for dashboard stats (Redis, cache tags)
- Telescope in dev, Horizon in staging for observability
- Architecture rule: controllers max 5 lines, all logic in Action classes
π‘ Hidden Gem: Study Spatie's open-source Laravel packages (github.com/spatie). They are the gold standard of Laravel architecture. Read the source of laravel-permission, laravel-activitylog, laravel-data. You'll learn more patterns there than any course.
π§± SOLID + Domain Design
- SRP: one reason to change β enforce via code review mindset
- Open/Closed: extend via contracts, not modification
- Dependency Inversion: bind interfaces in AppServiceProvider
- Domain-Driven Design light: bounded contexts, aggregates
- Feature folders vs. MVC folders β when to switch
- Modular monolith with Laravel Modules package
π¬ Testing at Senior Level
- Contract testing for external APIs
- Architecture tests with Pest arch()
- Mutation testing with Infection PHP
- Load testing with k6 or Artillery
- Testing Queued Jobs in isolation
- Time-sensitive tests with Carbon::setTestNow()
π’ DevOps & Deployment
- Laravel Forge + Ploi for server provisioning
- Zero-downtime deploys with php artisan down + maintenance mode
- Docker + Laravel Sail for team consistency
- GitHub Actions CI/CD pipeline (test β lint β deploy)
- Environment management: secrets, config caching
- Rolling updates, blue-green on Laravel Vapor (serverless)
π Observability
- Laravel Telescope (dev): queries, requests, jobs
- Laravel Pulse (production monitoring, new in L11)
- Sentry / Flare for exception tracking
- Structured logging with Monolog channels
- Custom metrics & alerts
- Slow query logging and DB optimization loops
π― Practice Assignment #5 β Open Source Package
Build and publish a real Laravel package on Packagist:
- Pick a pain point you've hit (e.g., audit trails, settings manager, feature flags)
- Use a ServiceProvider, config publishing, Facades if appropriate
- Write full test coverage with Pest + Orchestra Testbench
- Add CI via GitHub Actions (test on PHP 8.2, 8.3)
- Write README with usage examples
- Why: This is what separates senior candidates from mid-level. Interviewers love this.
π‘ Career Insight: Read the Laravel internals β specifically how the Container resolves, how Eloquent hydrates models, and how the Pipeline class works. Blog about what you find. Senior devs who explain internals clearly get hired and promoted faster than those who just "use the framework."
π» Portfolio Projects (Pick 2β3)
- Multi-tenant SaaS with Stripe subscriptions
- Real-time chat/notification app (Reverb + Vue/React)
- REST API consumed by a mobile app (document with Scribe)
- E-commerce with complex discount/coupon engine
- Open-source Laravel package with 10+ GitHub stars
π€ Senior Interview Topics
- "Explain the Laravel Service Container" β trace it verbally
- "How do you handle N+1 queries?" β specific strategies
- "Design a notification system" β system design
- "How would you scale this Laravel app to 1M users?"
- "Walk me through your testing strategy" β feature vs unit
- "When would you NOT use Eloquent?"
- Live coding: design a rate-limiter from scratch
π Before Applying β Checklist
- GitHub profile: pinned repos with READMEs and live demos
- Can explain every line of code in your projects
- Blog post or video explaining a Laravel internals topic
- Contributed a PR to Laravel or a major package
- Familiar with the company's stack (Livewire? Inertia? Vue?)
- Tailored resume: "reduced query count by 60% using eager loading"
π Ecosystem to Know
- Livewire v3 β full-stack components (huge in job market)
- Inertia.js β SPA feel without a full API
- Filament v3 β admin panels (very in demand)
- Laravel Octane β Swoole/RoadRunner for high throughput
- Spatie packages ecosystem
- Laravel Vapor β serverless Laravel on AWS
π― Final Capstone β Production SaaS App
Build and deploy a live, publicly accessible SaaS:
- Real users can sign up (use your blog project or something new)
- Stripe Checkout or Lemon Squeezy for payments
- Redis queues, Horizon monitoring, Pulse dashboard
- Deployed on Forge/Ploi with SSL, CI/CD, zero-downtime
- Custom domain, Sentry error tracking
- This is your ultimate portfolio piece. Share it on X (Twitter), LinkedIn, and in your resume.
π Final Uncommon Resources
GEMChristoph Rumpel's "Laravel Core Adventures"
Deep dives into Laravel internals β unmatched depth
GEMAaron Francis β Mastering Postgres / MySQL
Senior devs who understand DB are rare & valued
FREELaravel Daily YouTube (Povilas Korop)
Real-world patterns, interview prep, best practices
PAIDLaracasts (Jeffrey Way)
The definitive Laravel video resource β worth every cent
GEMFreek Van der Herten's Blog (freek.dev)
Spatie co-founder β architecture, packages, real-world patterns
FREElaravel.com/docs
Read it cover to cover at least once. Seriously.