Ehsan Bagherzadegan

Based in Germany - Sharing PHP engineering experience and lessons learned

Ehsan Bagherzadegan

Ehsan Bagherzadegan profile photo

Senior PHP Engineer with 15+ years of experience building reliable backend systems, enterprise applications, APIs, and internal tools.

In my full-time work, I use modern PHP ecosystems including Laravel and Symfony to design maintainable, scalable, and practical software.

My work is focused on clean architecture, readable code, reliable systems, and business software that stays understandable after the first release.

Selected work

All work

Groomio

A pet grooming platform for the German market, built around booking workflows, customer management, pet profiles, and admin operations.

Laravel Filament Livewire Tailwind CSS Vite+

Enterprise Admin Panels

Custom business dashboards and internal tools for managing complex workflows, data structures, and operational processes.

Laravel Filament MySQL PostgreSQL

Backend APIs for Mobile Applications

Token-based APIs for mobile applications, including authentication, registration, user management, and business logic.

Laravel Sanctum REST APIs React Native integration

Technical focus

Backend Architecture

Designing reliable backend systems, APIs, and service layers that are easy to understand and maintain.

Laravel & Filament

Building practical business applications, admin panels, dashboards, and internal tools with Laravel and Filament.

Symfony & Doctrine

Working with structured enterprise systems using Symfony, Doctrine ORM, and domain-focused PHP architecture.

Long-Term Maintainability

Writing code that remains readable, testable, and useful after the first release.

Latest articles

All writing
Action Pattern in PHP and Laravel

The Action Pattern in PHP and Laravel is a clean architectural approach where each important business operation is placed inside its own dedicated class. Instead of putting application logic directly inside controllers, models, jobs, or services, an Action class represents one specific use case, such as CreateUserAction, SendInvoiceAction, or CancelSubscriptionAction. This pattern helps keep controllers thin, improves reusability, and makes business logic easier to test. A controller should handle HTTP concerns, while an Action should handle what the application actually needs to do. In Laravel, Actions work naturally with dependency injection, Form Requests, Jobs, Commands, and Livewire components. For senior PHP developers, the main benefit of the Action Pattern is not simply reducing code, but creating clearer ownership of business operations. Each Action gives a meaningful name to a use case and keeps the application easier to maintain as it grows.

Notes from senior PHP engineering

This site is a place for articles, project notes, and practical lessons from building PHP applications over the years.

Read articles