Skip to main content

Project Overview

What is Logidav?

Logidav is the logistics ERP and middleware that manages the complete order lifecycle for the group's brands (Menzzo, etc.). It acts as the central hub between the e-commerce storefront, internal systems, marketplaces, and carriers — importing sales, managing stock, generating shipments, processing refunds, and synchronizing product data across all channels.

System connection map

Responsibilities

DomainWhat Logidav does
Sales ImportFetches orders from Magento and marketplaces, normalizes them, persists to DB
Stock ManagementTracks quantities, mutates stock on import and shipment, syncs across channels
ShipmentsGenerates carrier labels, tracks parcels, sends notifications
SAV / RefundsProcesses returns, handles partial and full refunds
Product SyncPushes product data, prices, and stock levels to marketplaces
Queue OrchestrationManages async task execution via a SQL-backed + RabbitMQ queue system

Tech stack

ComponentTechnology
FrameworkSymfony 3.3 (PHP 7.3)
ORMDoctrine
QueuesSQL-backed queue tables + RabbitMQ
TestingPHPUnit
Static AnalysisPHPStan
Code StylePHP-CS-Fixer (PSR-2/PSR-12)

Execution model

Logidav runs primarily through cronjobs on a dedicated production server. Each cronjob executes a Symfony console command that:

  1. Reads data from Magento, a marketplace, or another external source
  2. Normalizes and transforms the data
  3. Persists changes via Doctrine
  4. Triggers side effects (stock mutations, notifications, queue entries)

Queues complement cronjobs for asynchronous processing. Where a cronjob runs on a fixed schedule, a queue entry is processed as soon as a worker picks it up. This is used for tasks that need near-real-time execution or that are spawned dynamically by other processes.

# Run the queue processor
php bin/console meduse:queue:processor --action=runQueues

:::info How cronjobs and queues work together A cronjob might import 500 orders from Magento and enqueue a stock-check task for each one. The queue processor then handles each stock-check independently and at its own pace. This keeps the import fast while ensuring every follow-up task is completed. :::

Key numbers

MetricValue
Active cron entries164
Unique Symfony commands115
Critical-risk commands46
High-risk commands40

:::warning Critical commands The 46 critical-risk commands handle sales, payments, and stock. Changes to these commands require extra review and testing. See the Cronjob Reference for the full list. :::