Кейсы
Задачи, которые я решал: что было, как устроил решение и что из этого вышло. Свежие сверху.
- Simple Record: запись звонков на Android без root и без облака
Написал своё приложение для записи звонков: пишет обе стороны разговора без root, честно говорит, когда запись не идёт, и расшифровывает разговоры прямо на телефоне. Ничего не уходит в облако. Открытый код, Apache-2.0.
KotlinJetpack ComposeAndroidscrcpy-serverADBsherpa-onnxGigaAMSQLite FTS4 - Учёт производства с нуля: платы, сканер и один маршрут в коде
Написал систему учёта плат для производства Waviot: сначала прототип на готовой админке, потом своя платформа. С июня 2026 года цех ведёт в ней каждую плату, и теперь в неё переезжает всё производство с легаси 2016 года.
Laravel 12PHP 8.5InertiaReactTypeScriptMySQLPest - Магазин упаковки: задачи вокруг старого OpenCart, не ломая его
Оптово-розничный магазин упаковки в Петербурге с учётом в 1С. За год вокруг боевого OpenCart 2.3 появились экран показателей отдела продаж, видеораздел с фоновой конвертацией, портал аттестации сотрудников, отчёт по трафику и демо новой витрины на Mercurio. Магазин при этом не останавливался.
OpenCartPHPMySQLLaravelChart.jsffmpegPythonMercurio - Mercurio: своя платформа для интернет-магазинов
С 2025 года строю Mercurio: платформу, где сырьё поставщиков неизменяемо, человек правит только решения, а каталог собирается детерминированно. Два клиента, обе витрины пока на демо-стендах.
LaravelPHPPostgreSQLInertiaReactTypeScriptManticoreimgproxy1С - Майятрица: калькулятор, админка и сайт, три кодовые базы за два года
Долгий клиент: эзотерический сайт с расчётом «майянской матрицы» по дате рождения. С 2024 года написал с нуля три кодовые базы: сайт на Laravel 11, отдельную админку на MoonShine и нынешний сайт на Laravel 13 с новым дизайном, который прорабатывал вместе с заказчицей, и своей админкой на Inertia, React и shadcn. Расчёты сверены с документами заказчицы, клипы перекодирует ffmpeg.
LaravelPHPMySQLTailwindInertiaReactshadcnMoonShineffmpeg - На один сервис меньше: перенос HES в сервер авторизации
Два самописных PHP-сервиса Waviot делили один интерфейс: экраны жили в auth, их бэкенд в HES. Перенёс HES внутрь auth так, что фронт не заметил, и закрыл один сервис с отдельным деплоем.
PHP 8MySQLRabbitMQ - Магазин офисной мебели, 2022-2026
Веду prvoffice.ru с нуля четвёртый год: своя админка, своя витрина, три редизайна, три этапа поиска и массовое редактирование каталога.
LaravelLivewireManticoreimgproxyMariaDB - Кабинет и телеметрия IoT-платформы: с Zend Framework 2 на Laminas и PHP 8
Перевёл кабинет клиентов и бэкенд телеметрии Waviot с Zend Framework 2.3 и PHP 5.6 на Laminas и PHP 8 без остановки платформы, а потом закрепил результат: PSR-12, миграции БД, Sentry.
PHP 8LaminasZend Framework 2MongoDBDoctrineSentry - Экран отдела продаж: сделки из Мегаплана, звонки из Mango Office
Для отдела продаж Prime Wood сделал экран на офисный монитор: план месяца, оплаты за день, необработанные заявки и звонки по менеджерам. PHP без фреймворка и крон, потому что этого хватало. Работу с API Mango Office потом вынес в Laravel-пакет.
PHPMegaplan APIMango Office APILaravel - Магазин мебели: с самописной CMS на OpenCart за два месяца
В одиночку перенёс prime-wood.ru с самописной MyCMS 2013 года на OpenCart, релиз перед Новым годом. Покупатели смены движка не заметили, магазин работает на этой платформе седьмой год.
OpenCartPHPMySQLSphinx1СRoistat