BioMarket ERP

PHP Laravel 12 MySQL/MariaDB Bootstrap 5 Tailwind 4 Internal system

Вътрешна операционна платформа за търговската верига BioMarket / HealthStore, изградена от нулата и заменяща разпръснати таблици и ръчни процеси. Обединява HR и графици, ТРЗ, склад и наличности, продуктов каталог и цени, POS продажби, логистика с няколко куриера, B2B портал, следене на автопарк и вътрешен чат/задачи в едно Laravel приложение — 200+ Eloquent модела в 9 сервизни домейна, 2 400+ комита досега.

README: Laravel 12, PHP 8.3, Blade + Bootstrap 5 + Tailwind 4, MySQL/MariaDB, PHPStan ниво 9, Pint, ParaTest; модули: HR/график/ТРЗ, склад и наличности, продуктов каталог, POS продажби, куриери (Econt/Speedy/Box Now/PRIM), B2B портал/CRM, автопарк, обучения, checklists, документация; вътрешен, частен репозиторий.

Проблем / контекст
Верига магазини с десетки обекти и стотици служители управляваше HR, склад, ТРЗ, доставки и продажби през разпръснати Excel таблици и ръчни процеси — без единен източник на истина и с нарастващ риск от грешки при мащабиране.
Моята роля
Цялостно проектиране и разработка: архитектура на 9-те сервизни домейна, HR модул (график, отпуски, ТРЗ импорт от PDF фишове), склад и логистика с интеграция на няколко куриера (Econt, Speedy, Box Now, PRIM доставчик), POS продажби, B2B портал и продажбена фуния, следене на автопарк с живи събития от автомобилите, административен контрол на достъпа по роли и категории с IP whitelisting.
Предизвикателство
Една система движи HR, склад, POS, ТРЗ, логистика и B2B за активна търговска верига — всеки модул работи с живи бизнес данни, а кодовата база трябваше да продължи да расте (200+ модела, 2 400+ комита) без да се появяват регресии.
Подход / решение
Строг composer quality gate преди всеки комит (Pint форматиране + PHPStan ниво 9 + паралелен PHPUnit + security audit), бизнес логиката е организирана в Service класове по домейни (HR, склад, автопарк, ценообразуване, продажби, B2B…), а за наследения код се поддържа малък прегледан списък с изключения вместо тихо потискане на нови типови грешки.
Табло — обявления, предстоящи рождени дни, последни активности, календар
Табло — обявления, предстоящи рождени дни, последни активности, календар
Продажби — POS, нова поръчка, ценови листи, връщания, изплащания, ревизии
Продажби — POS, нова поръчка, ценови листи, връщания, изплащания, ревизии
Моят акаунт — нотификации, график/отпуск, задачи, чат, обучения
Моят акаунт — нотификации, график/отпуск, задачи, чат, обучения
HR — назначения, групи, бонуси, аванс, ТРЗ, HR структура
HR — назначения, групи, бонуси, аванс, ТРЗ, HR структура
Администрация — потребители, права, IP достъп, куриерски интеграции
Администрация — потребители, права, IP достъп, куриерски интеграции
Склад — доставки, маршрут, наличности, минимуми/максимуми, преместения
Склад — доставки, маршрут, наличности, минимуми/максимуми, преместения