Zvenum.Sell — система управления заказами (OMS) для интернет-продавцов. В ней каталог, цены поставщиков, заказы, оплаты, склады, доставка, документы и витрина магазина. Ищем техлида: вы отвечаете за архитектуру, команду и прод, а самые сложные части пишете сами.
О продукте
Система уже работает в проде. У каждого продавца свой экземпляр со своей базой. Всё, чем продавцы отличаются друг от друга, задают настройки, драйверы и модули, а код у всех один.
Что уже сделано:
-
модульный монолит: больше 30 компонентов, границы между ними проверяет CI;
-
больше десяти интеграций: перевозчики и склады 3PL (Деловые Линии, ПЭК), ЮKassa, «Моё дело», Авито, Яндекс Метрика, телефония;
-
API с вебхуками для внешних систем;
-
первые модули: блоки витрины со своими данными и настройками;
-
больше 1000 тестов, статический анализ, проверка миграций на трёх СУБД;
-
решения записаны в ADR, для ИИ-агентов в репозитории есть правила и навыки.
Задачи
-
Отвечать за архитектуру: границы компонентов, данные, интеграции, производительность. Решения записывать в ADR.
-
Превращать код магазина в продукт для многих продавцов: настройки вместо правок кода, модули, API.
-
Вести команду: ставить и декомпозировать задачи, расставлять приоритеты, держать сроки, проводить 1:1, нанимать и растить разработчиков.
-
Ревьюить MR и держать планку качества: тесты, статический анализ, проверки границ в CI.
-
Отвечать за прод: выкладки, мониторинг в Sentry, инциденты, откаты и разборы.
-
Переводить запросы продавцов в технические решения и называть их цену и риски.
-
Выстраивать работу команды с ИИ-агентами: правила проекта, навыки и проверки, которые ловят ошибки агентов.
-
Писать код там, где ошибка стоит дороже всего: оформление заказа, оплаты, остатки, интеграции.
Стек
-
Бэкенд: PHP 8.4, Laravel 13, Octane на RoadRunner, MariaDB, Redis, Horizon, Meilisearch, Reverb, Gotenberg.
-
Панель: Filament 5, Livewire 4.
-
Витрина: Inertia 3, React 19, TypeScript, серверная отрисовка (SSR), Storybook, Playwright.
-
Качество и инфраструктура: PHPUnit, PHPStan (Larastan), deptrac, Rector, OpenAPI, Sentry, Docker, GitLab CI.
Требования
-
Коммерческий опыт на PHP от 5 лет, на Laravel от 3 лет. Последние два года работаете на актуальных версиях.
-
Руководили командой от трёх разработчиков не меньше года: ставили задачи, ревьюили код, отвечали за сроки и результат.
-
Ваш код работал в проде с деньгами и нагрузкой: заказы, платежи, остатки. Разбирали инциденты и доводили разбор до изменений.
-
Проектировали интеграции с внешними API: очереди, повторы, идемпотентность, вебхуки, работа при недоступном партнёре.
-
Знаете MySQL или MariaDB глубже ORM: планы запросов, индексы, транзакции, блокировки.
-
Строили проверки качества: тесты, статический анализ и CI, которые не пропускают слабый MR.
-
Понимаете безопасность веб-приложений: права на сервере, инъекции, XSS, CSRF, секреты.
-
Читаете React и TypeScript на уровне ревью: SSR, производительность, контракт с API.
-
Каждый день работаете с ИИ-агентами (Claude Code, Codex, Cursor): ставите задачу, проверяете результат и отвечаете за него как за свой код.
Будет плюсом
-
опыт в SaaS или продукте для многих клиентов;
-
OMS, WMS, интеграции с маркетплейсами и перевозчиками;
-
Filament, Livewire, Inertia;
-
Octane, RoadRunner или Swoole: долгоживущие процессы и утечки состояния между запросами;
-
модульный монолит с автоматической проверкой границ;
-
Meilisearch или Elasticsearch;
-
настройка ИИ-агентов под проект: правила, навыки, хуки, MCP.
Вам не подойдёт, если
-
вы давно не пишете код и хотите только управлять;
-
тесты, статический анализ и ревью для вас тормозят разработку;
-
вы не готовы отвечать за прод: выкладку, инцидент, откат;
-
на любую проблему вы предлагаете микросервисы, Kafka или переписывание с нуля;
-
вы не пользуетесь ИИ-ассистентами или принимаете их код не читая.
Условия
-
офис/гибрид/удаленно, полная занятость;
-
официальное трудоустройство;
-
конкурентная зарплата и премии по результатам;
-
испытательный срок 3 месяца;
-
влияние на архитектуру и развитие продукта.
Как нанимаем
-
Отклик с заданием ниже.
-
Предварительное интервью, 30 минут.
-
Техническое интервью, 90 минут: разбор вашего отклика, вопросы, ревью кода, задача на PHP, проектирование интеграции.
-
Оффер.
Как откликнуться
В отклике пришлите:
-
Сопроводительное письмо, которое начинается со слова «Вебхук».
-
Разбор кода ниже: три ошибки, из-за которых продавец потеряет деньги или товар, и как вы исправите каждую.
-
Ссылку на код, который вы написали сами: репозиторий на GitHub, GitLab или ваш merge request. Если весь ваш код закрыт NDA, вместо ссылки опишите в 3–5 предложениях архитектурное решение, которое вы приняли сами, и чем за него пришлось заплатить.
final class PaymentWebhookController
{
public function __invoke(Request $request): Response
{
$order = Order::find($request->input('object.metadata.order_id'));
DB::transaction(function () use ($order, $request) {
$order->update([
'status' => 'paid',
'paid_amount' => (float) $request->input('object.amount.value'),
]);
Warehouse::ship($order); // HTTP-запрос к API склада
event(new OrderPaid($order)); // письмо покупателю
});
return response()->noContent();
}
}
ИИ использовать можно, но на техническом интервью разберём ваш отклик подробно и без него.