Purpose-built modules for your business logic

When no extension fits your exact requirement, I build it from scratch — following Magento's native patterns so it installs cleanly, compiles without errors, and survives future upgrades.

0
ObjectManager::getInstance() calls in delivered code
100%
Modules tested on staging before delivery
Available for new projects
// contact me to check the next slot
💳

Checkout & Payment

Custom checkout steps, payment method validation, local gateway integrations (Konnect, Flouci, Paymee), and cart/quote manipulation.

🏷️

Tax & Localisation

Country-specific tax logic, Tunisian TVA validation, locale-aware formatting, Arabic/French RTL support, and multi-currency handling.

📋

Catalog & EAV

Custom product attributes, attribute sets, catalog rules, tier pricing logic, and product type extensions that survive reindexing.

🔔

Observers & Events

Hooking into Magento's event system to react to order placement, customer actions, and admin operations — zero core edits.

🔌

Plugins & Interceptors

Before, after, and around plugins to modify third-party extension behaviour cleanly. I don't edit vendor source code.

🗂️

Admin UI Components

Custom grids, forms, and UI components in the Magento Admin using ui_component XML, DataProviders, and mass actions.

01

Requirement analysis

I translate your business requirement into a Magento architecture decision — plugin vs observer vs new entity — before any code is written.

02

Module scaffold

Proper module structure from day one: registration.php, module.xml, di.xml, and all required interfaces.

03

Development with previews

Iterative development with early functional previews. You test against real data, not mock fixtures.

04

Unit & integration tests

PHPUnit tests for business logic. Integration tests for database interactions where coverage matters most.

05

Composer package delivery

Delivered as a proper Composer package, ready to install via your private Satis repository or direct path repository.

🏗️

Architecture first

I choose the right Magento pattern before writing a line. Plugin vs observer vs preference — the wrong choice costs you later.

🔄

Upgrade-safe by design

No core file edits, no preference rewrites unless necessary. Your store updates without breaking custom logic.

🌐

Multilingual & RTL ready

Built with i18n in mind from the start. Arabic, French, and English — including admin UI labels and validation messages.

📦

Proper Composer packaging

Every module delivered as a Composer package with semantic versioning. Drop it in your private Satis repo and install normally.

The custom TVA validation module saved us hours of manual order checks every week. It handles edge cases we didn't even think of, and the code is clean enough that our team can maintain it.

SA
Sami A.
// Technical Lead, Tunisian retail group

What makes a Magento module “good”

A good Magento module doesn’t touch the core, doesn’t use ObjectManager::getInstance(), and doesn’t break when you run bin/magento setup:di:compile.

It uses the right patterns: plugins for modifying existing behaviour, observers for reacting to events, and proper service contracts for shared logic. That’s what I build.

Module types I’ve shipped

From Tunisian TVA validation mixins to full custom checkout flows, Cloudflare Turnstile reCAPTCHA integration, international telephone input with per-context toggles, and blog plugin overrides on top of Mageplaza. If it’s Magento 2 PHP and needs to be custom, I’ve probably built something similar.

PHP 8.2 / 8.3 Magento 2.4.x Plugin / Observer system Dependency Injection EAV Architecture ui_component XML RequireJS / AMD Alpine.js (Hyva) Breeze / Luma PHPUnit Composer GraphQL REST API Less / BEM
Can you override a third-party extension without editing its source?
Yes — that's what plugins and preferences are for. I can intercept methods from any installed extension and modify their behaviour without touching a file in vendor/. This keeps your setup upgrade-safe.
Do you build modules that work with Breeze or Hyva themes?
Yes. I work on Breeze Evolution regularly and have built Alpine.js-compatible module frontends for Hyva. RequireJS AMD is fine for standard Luma setups.
What format is the deliverable?
A proper Composer package with a composer.json, registration.php, README, and inline DocBlocks. You can install it via a path repository locally or add it to your private Satis server for team use.
Can you build something that also has an admin configuration panel?
Yes. System configuration (system.xml), admin grids, and custom admin pages using ui_component are all standard parts of my module development work.

Have a module idea?

Describe the business problem — not the technical solution — and I'll tell you the cleanest Magento 2 pattern to build it with. Response within 24 hours.