Skip to content
View TimurTurdyev's full-sized avatar

Organizations

@mercurioplatform

Block or report TimurTurdyev

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
TimurTurdyev/README.md

Тимур Турдыев

В разработке с 2014 года — от legacy PHP 5.6 до современного TypeScript и Go-микросервисов.
Ко всему пришёл сам. Стараюсь выбирать инструмент под задачу, а не наоборот.

Принципы работы


👋 Немного обо мне

Пишу код с 2014 года. Профильного образования не получал — всему научился сам: по документации, форумам, чужому коду и собственным ошибкам. Этот путь дольше, чем курсы или университет, но он приучил не запоминать «как правильно», а каждый раз разбираться, почему так.

В разработку пришёл не с нуля. Сначала был свой интернет-магазин — я вёл его как владелец, и узнал e-commerce со стороны денег: воронка, выгрузки, возвраты, маркетплейсы, «небольшой баг в корзине = потерянный заказ». Потом был период SEO: техническая оптимизация, скорость, индексация, разметка, аналитика. К моменту, когда я начал писать код, я уже хорошо понимал, что нужно бизнесу и где именно он теряет деньги — оставалось научиться это чинить руками.

Поэтому первой платформой стал OpenCart: я знал её изнутри как владелец магазина и как оптимизатор, и было естественно начать писать под неё модули. Долго брал заказы на русскоязычном форуме OpenCart — по магазинам, интеграциям, миграциям. Со временем заказы почти перестали приходить из открытых площадок: клиенты начали рекомендовать меня друг другу, и большая часть проектов пошла по сарафанному радио.

Этот опыт научил двум главным вещам, которые я ценю до сих пор:

  • Код должен работать у клиента без меня. Когда клиент — не программист, ты не можешь оставить за собой «тут надо знать, как это собирать». Всё должно просто запускаться, обновляться и чиниться в понятных местах.
  • Рекомендации — лучший KPI. Когда человек приводит к тебе своего знакомого, это значит, что предыдущий проект не доставил ему боли. Это дисциплинирует сильнее любого код-ревью.

Сейчас основное время — в продуктовой разработке Waviot, а фриланс остаётся как «интересные проекты для интересных людей».


🎯 Как я работаю

Стараюсь не применять технологии ради технологий. Новый фреймворк сам по себе не делает продукт лучше — его делают лучше правильные решения в нужных местах.

  • 🧠 Инженерное суждение важнее стека. На проде — стабильный, проверенный стек; эксперименты — в пет-проектах. SPA-фреймворк не появится в проекте, где хватает Alpine или чистого JS. jQuery не будет удалён из работающего legacy ради «моды».
  • 🔁 Одинаково уверенно работаю и со старым, и с новым кодом. Читаю чужой legacy без фреймворка, поддерживаю Yii2 и Laminas, пишу современный TypeScript — и всё это может жить в одной компании одновременно.
  • 🛠️ Большой опыт миграций и апгрейдов. Переводил проекты с Zend Framework на Laminas, поднимал PHP с 5.6 до актуальных версий, обновлял Yii, переводил поиск на SphinxSearch и обратно под задачу. Знаю, где у таких переходов подводные камни.
  • 🪓 Не применяю язык/фреймворк там, где это не нужно. Иногда правильный ответ — это shell-скрипт, yoyo-миграция, bash-cron или одна SQL-вьюха вместо целого сервиса.
  • 🧩 Сильная сторона — связывать системы. CRM, АТС, службы доставки, сервисы данных, IoT-устройства — моя специализация в интеграциях, где важно не сломать работающее.
  • ♻️ Лучший код — тот, который легко удалить. Пишу так, чтобы через год можно было выкинуть кусок без страха за остальное.

💼 Опыт на боевых системах

В @waviot (IoT-платформа на протоколе NB-Fi) веду и развиваю системы на очень разных стеках — осознанно, потому что у каждой части свой контекст и свой возраст:

Слой Стек Почему так
Личный кабинет клиентов TypeScript + Vue + Vite + Tailwind Свежий проект — можно позволить современный SPA
Основные сервисы биллинга/лицензий Laravel (PHP) Экосистема, скорость разработки, проверено временем
Сервис лицензирования (legacy) Yii2 + Codeception + RBAC Работает стабильно, переписывать без причины — дорого
Высоконагруженная авторизация Go Там, где PHP избыточен: низкая латентность, бинарник
Очереди и шина между сервисами RabbitMQ + AMQP Развязка сервисов: отказ одного не роняет остальных, нагрузка сглаживается очередью
Телефония / callbacks Python Хорошие библиотеки под конкретные задачи
Сервер производства (legacy) → новый Python → сейчас переписываю Старый сервер работает, новый пишу параллельно без простоя
Поиск по большим каталогам SphinxSearch Когда нужна полнотекстовая выборка с предсказуемой скоростью
Миграции версий PHP и фреймворков PHP 5.6 → 8.x, Zend → Laminas, Yii upgrade Переводил несколько проектов на актуальные версии без downtime
Desktop-утилиты для инженеров Go + Wails Нужен кроссплатформенный бинарник без Electron-веса
Программатор устройств Qt + C++ + OpenSSL Кроссплатформенный десктоп под специфичную железную обвязку, где Wails не подходит
Legacy отчёты и старые модули PHP (self-made MVC, PHTML) Не трогаем то, что работает — если трогаем, то точечно
Поиск и аналитика нового поколения Meilisearch + Docker Правильный инструмент под новую задачу поиска

Мне интересно не столько «писать на чём-то одном», сколько понимать, когда какой стек уместен — и уметь жить сразу с несколькими поколениями кода в одном проекте.


🛠️ С чем работаю

Языки — PHP (8+), JavaScript / TypeScript, Go, Python, Java, Bash

Backend-фреймворки — Laravel · Yii2 · Laminas (бывший Zend Framework) · OpenCart · самописный MVC (legacy) · Go (чистый) · Python (серверные приложения · FastAPI · aiohttp)

Frontend — TypeScript · Vue · Alpine.js · Blade · jQuery (да, знаю, когда он уместен) · Tailwind · Bootstrap · Vite · Electron · Wails

БД и поиск — MySQL · PostgreSQL · MongoDB · Redis · SphinxSearch · Meilisearch

Очереди и шина — RabbitMQ · AMQP

Инфраструктура — Docker · Linux (debian-пакеты, systemd-юниты) · Nginx · Git · cron/yoyo/fabric для старых деплоев

Интеграции — Mango Office · Megaplan · Dadata · СДЭК · ВКонтакте API · OpenCart marketplace API


🚀 Что строю сейчас — Mercurio Platform

Параллельно с основной работой делаю Mercurio — собственную admin-платформу для интернет-магазинов на Laravel + Blade + Bootstrap 5 + jQuery. Стек выбран намеренно: серверный рендер с точечным AJAX — та же идея, что у Hotwire, HTMX и Laravel Livewire, только без новой обучающей кривой поверх и так знакомых инструментов. Новый раздел админки добавляется одним классом, без отдельного SPA-приложения сбоку и build-цепочки на пустом месте.

Это сборка всех трёх «прошлых жизней» в одном продукте — владельца магазина, SEO-специалиста и full-stack-разработчика: сделать админку, в которой удобно тем, кто реально продаёт, а не «настраивает CRM».

Состав админки

Раздел Что внутри
📦 Каталог Товары · Категории · Бренды · Атрибуты · Группы · Варианты · Опции · Изображения
🛒 Продажи Заказы · Возвраты (RMA)
👥 Клиенты / CRM Клиенты · Задачи · Диалоги · Быстрые ответы · Сегментация
📣 Маркетинг Промокоды · Брошенные корзины · Отзывы
📝 Контент Блог · Страницы · Медиа
🏬 Склад Остатки · Движения · Перемещения · Приходы (многоскладовость)
📊 Аналитика Когорты · LTV
⚙️ Сервис Импорт CSV (с прогрессом и кэшем картинок) · Audit log
🔧 Настройки Контакты · Доставка · Оплата · Почта · API + Webhooks
🛡️ Команда Пользователи · Роли и права

Open-source — то, что выделил из Mercurio в отдельные пакеты

Пакет О чём Стек
📋 mercurioplatform/tables Reusable list/table engine для Laravel-админок: декларативный Resource-класс → admin-страница с поиском, сортировкой, фильтрами, saved views, bulk/row actions, экспортом, prefs и audit log — одной строкой роута PHP · Laravel · Bootstrap 5 · jQuery · Blade

Пакет вырос из реального проекта, а не из «давайте сделаем фреймворк». 5 сознательных точек расширения; страница рендерится сервером, AJAX подгружает только <x-tables::table-root>.


📌 Публичные проекты

Коммерческий код закрыт под NDA — здесь то, что можно показать: модули, SDK, утилиты и эксперименты.

Проект О чём Стек
📞 Laravel-Mango-Office Интеграция Laravel с облачной АТС Mango Office PHP · Laravel
📦 Export-Import-Opencart-Vue Импорт/экспорт товаров OpenCart с Vue-интерфейсом PHP · Vue
📍 opencart-dadata Подсказки адресов/ФИО от Dadata в OpenCart Vue · PHP
🧹 opencart-image-remover Чистка каталога изображений OpenCart от «осиротевших» файлов PHP
🚚 migration-opencart-database-to-new-version Миграции БД между версиями OpenCart PHP
📡 NB-Fi-platform LPWAN IoT-платформа на протоколе NB-Fi PHP
🛰️ my-tools-parse-message-waviot Десктопный парсер сообщений WAVIOT API — личная утилита для инженеров Wails · Vue 3 · Tailwind 4
📊 Dashboard-Megaplan-and-Mangooffice Отчёты по менеджерам из Megaplan + Mango Office PHP
🔗 sdk2.0 PHP SDK для API v2.0 сервиса СДЭК PHP
⚙️ Simple-Settings Минималистичный пакет настроек для Laravel PHP
📈 simple-settings-benchmark Бенчмарк производительности пакета Simple-Settings PHP · Laravel · Blade
🖼️ transfer-images Перенос папки с изображениями между серверами Shell
🛜 vpn-help Восстановление интернета на macOS при конфликте OpenVPN и AmneziaVPN Shell · macOS

Основная работа над коммерческими продуктами — во внутреннем GitLab Waviot.


📬 Контакты

💡 Открыт к интересным проектам и подработкам — особенно где нужно связать системы, разобраться в чужом коде или принять инженерное решение, а не просто «накодить фичу».

Popular repositories Loading

  1. Laravel-Mango-Office Laravel-Mango-Office Public

    PHP 5 1

  2. Export-Import-Opencart-Vue Export-Import-Opencart-Vue Public

    PHP 3

  3. opencart-vk-module opencart-vk-module Public

    Forked from crmagent-developers/opencart-vk-module

    integration module with VKontakte

    PHP 3 3

  4. backend-cheats backend-cheats Public

    Forked from cheatsnake/backend-cheats

    🔰 Backend cheatsheet with pictures and more / Шпаргалка по бэкенду с картинками и не только

    2

  5. prime-design.ru prime-design.ru Public

    Blade 1

  6. price_offer price_offer Public

    PHP 1