Engineering · Built by Labsofttech

The engineering behind the platform

We design and build production B2B trade and ERP platforms on a modern PHP stack — clean domain models, tested top to bottom, and shipped continuously. This platform is one of them.

11Bounded contexts
DDDHexagonal + CQRS
PHP 8.4Symfony 8
CI/CDTested & auto-deployed
The stack

Modern, boring-in-the-best-way technology

Proven, well-supported tools chosen for longevity and maintainability.

Framework & language

  • PHP 8.4
  • Symfony 8
  • Twig 3

Domain & data

  • Doctrine ORM 3
  • DBAL & Migrations
  • MySQL

Messaging & CQRS

  • Symfony Messenger
  • Command & Query buses
  • Domain events

API

  • API Platform 4
  • REST / JSON
  • JWT auth (Lexik)

Front-end

  • Symfony UX
  • Live Components & Stimulus
  • Vite + TypeScript

Documents & mail

  • Typst PDF engine
  • Symfony Mailer
  • Vich uploads

Quality

  • PHPUnit 11
  • PHPStan (max)
  • PHP-CS-Fixer

Delivery

  • Docker
  • GitHub Actions CI/CD
  • Zero-downtime deploys
How it’s structured

Domain-driven design, done for real

The codebase is split into independent bounded contexts; inside each, strict layering keeps the domain pure and the framework at the edges.

UIControllers, Twig, Live Components, API Platform resources — the delivery mechanisms.
ApplicationCommand & query handlers over message buses (CQRS); orchestrates use cases, no business rules leak in.
DomainEntities, value objects and domain services — pure PHP, framework-free, the source of truth.
InfrastructureDoctrine repositories, mail/PDF adapters, gateways — ports implemented behind interfaces.
The map

11 bounded contexts

Each context owns its own model, language and data — loosely coupled, independently testable.

Catalog

Products, groups and the read model that powers listings.

Pricing

Price lists, per-partner and per-currency rules, sale-by-weight economics.

Wholesale

B2B sales orders and invoices with an approval workflow.

Purchasing

Purchase orders and supplier invoices for stock replenishment.

Inventory

Multi-lot stock in base units, adjustments and revaluation.

Packaging

Pack sizes and the weight-based unit-of-measure model.

Partner

Customers and suppliers, their addresses, contacts and terms.

PartnerBilling

Cost lines and partner cost invoicing, kept out of the grand total.

Shipping

Delivery estimation and fulfilment details.

Analytics

Sales reporting and the admin dashboard KPIs.

Identity

Authentication, roles and fine-grained authorization.

The team

Labsofttech — Domain-driven commerce software, engineered to last.

Muneer Shafi

Founder & Principal Engineer

Domain modelling, architecture, delivery

Backend Guild

Symfony & Doctrine

CQRS, persistence, integrations

Product & UX

Interface & experience

Design system, accessibility, motion

Quality & Ops

Testing & delivery

CI/CD, static analysis, observability

Work with us

Need a platform like this?

We design and build production commerce and B2B software on this exact stack. Let’s talk about yours.