Привет, я devs-code

Создаю цифровые решения

8+
Проектов
20+
Технологий
Открыт к заказам

Обо мне

about.ts

const developer = {

name: 'devs-code',

role: 'Full-Stack Developer',

stack: ['React', 'Node.js', 'TS'],

passion: 'Building things',

available: true,

};

Я full-stack разработчик, специализируюсь на создании современных веб-приложений, Telegram-ботов и AI-решений.

Превращаю сложные бизнес-требования в элегантные, высокопроизводительные цифровые продукты. От CRM-систем до AI-чатботов — я занимаюсь полным циклом разработки.

Мой стек: React, Node.js, TypeScript, PostgreSQL, Docker и современные AI-инструменты. Каждый проект строится с учётом масштабируемости, безопасности и удобства.

Открыт к новым проектам

Услуги

Full-Stack веб-разработка

Современные веб-приложения на React, Node.js, TypeScript и PostgreSQL. От лендингов до сложных SaaS-платформ с админками и API.

React Node.js TypeScript PostgreSQL Next.js

Telegram-боты и автоматизация

Кастомные Telegram-боты для бизнес-автоматизации, интеграции с CRM, гейминга и коммуникации с клиентами. Надёжные и масштабируемые.

Telegram API Node.js Redis CRM Webhooks

AI / ML решения

Интеграция ИИ в ваш бизнес: умные чат-боты, обработка данных, генерация контента и кастомные AI-функции.

OpenAI Claude API LangChain Python RAG

Портфолио

Реальные проекты в продакшене

AI-ассистент поддержки — живое демо
Работает

AI-ассистент поддержки — живое демо

Работающий AI-ассистент службы поддержки, с которым можно поговорить прямо сейчас. Отвечает строго по базе знаний с видимыми источниками, смотрит статус заказа через tool use, а сложное передаёт человеку тикетом с резюме диалога. Под каждым ответом — его реальная себестоимость (≈1–2 грн за диалог). Панель владельца (demo/demo): правка базы знаний, диалоги, тикеты, расходы по дням. Встраивается на любой сайт одной строкой.

  • Живой чат на лендинге — попробуйте сломать: промпт-инъекции отбиваются
  • Tool use: статус заказа из базы + эскалация с автоматическим резюме
  • Себестоимость каждого ответа в чате: стриминг, кэш промпта, учёт токенов
  • Админка: редактор базы знаний, диалоги, тикеты, расходы по дням
  • Жёсткие лимиты бюджета: день/IP/диалог, автосброс данных каждые 6 часов
Anthropic Claude Node.js 22 Fastify TypeScript SQLite SSE
Демо
CRM Система
Работает

CRM Система

Полнофункциональная CRM админ-панель с интегрированным Telegram-ботом для управления бизнесом. Отслеживание клиентов, сделок и взаимодействий в одном месте с синхронизацией в реальном времени между веб-дашбордом и интерфейсом Telegram-бота.

  • База клиентов с историей контактов и воронкой сделок
  • Telegram-бот для мгновенных уведомлений и быстрых действий
  • Интерактивный дашборд с аналитикой продаж и KPI
  • Ролевой доступ для членов команды
  • Redis-кеширование для быстрой работы с данными
React TypeScript Node.js PostgreSQL Redis Telegram Bot API
Демо
Пульс сайта — технический аудит за минуту
Работает

Пульс сайта — технический аудит за минуту

Работающий инструмент, а не макет: вводите любой URL, и настоящий headless Chrome открывает страницу, снимает Core Web Vitals прямо из Performance API браузера, переключается в мобильный режим, разбирает SEO-техничку, проверяет заголовки безопасности, robots/sitemap и внутренние ссылки. На выходе — отчёт с баллом, находками по приоритету, понятным «что делать» под каждой и оценкой работ. Отчёт живёт 14 дней по постоянной ссылке.

  • Замер настоящим Chrome: LCP, CLS, TTFB, вес, запросы, ошибки JS
  • Мобильный проход 390×844: горизонтальная прокрутка, мелкие кнопки, viewport
  • SEO и безопасность: title/description/H1/canonical/OG/JSON-LD, HSTS, CSP, gzip
  • Защита от SSRF: приватные диапазоны и метаданные облака отсекаются до запуска
  • Очередь с лимитами на IP, хост и сутки; 23 оффлайн-теста на правила оценки
Node.js 22 Chrome headless Fastify TypeScript SQLite SSE
Демо
Портфолио отвечает на вопросы само
Работает

Портфолио отвечает на вопросы само

Спросите сайт, что делал его владелец — виджет в углу ответит по базе из 50 кейсов на вашем языке и даст ссылку только на стенд, который отвечает прямо сейчас. Живость проверяется каждые 10 минут, а фильтр выхода вырезает любую ссылку не из белого списка: упавший или выдуманный адрес до вас не дойдёт. Под каждым ответом — его себестоимость (~$0.003–0.02). Готовы обсудить задачу? Агент соберёт бриф прямо в чате — что нужно, бюджет, срок, контакт — и передаст Славе. Попробуйте сломать: 22 атаки из тест-набора в репозитории отбиваются.

  • Отвечает на RU / UK / EN — язык определяется по вопросу
  • Ссылка только на живой стенд: гарантия кодом, а не обещанием в промпте
  • Говорит «такого кейса нет» вместо того, чтобы выдумать
  • Собирает бриф в диалоге и доставляет его с ретраями, ничего не теряя
  • Себестоимость ответа видна сразу: кэш промпта, учёт токенов, дневной лимит
  • Тест-набор атак в репозитории: инъекции, увод из роли, подмена ссылок — 22/22
Anthropic Claude Node.js 22 Fastify TypeScript SQLite FTS5 SSE
Демо
Бот-воронка: из заявки — в закрытый канал
Работает

Бот-воронка: из заявки — в закрытый канал

Заявка → регистрация на сайте → проверка → закрытый канал: весь путь бот проходит сам. Витрина показывает обе стороны сразу — чат клиента и телефон менеджера, вживую. Регистрации приходят подписанным вебхуком (HMAC-SHA256); чужой Telegram или повторно использованная ссылка отклоняются, причина печатается. Инвайты одноразовые с TTL 30 минут, вход фиксируется апдейтом chat_member, дубли невозможны по устройству статусов. Менеджер может просто переслать сообщение из лички — бот сам разберёт имя и телефон, юзербот на личном аккаунте не нужен. Проверить: https://leadgate.devs-code.site

  • Два живых фронта, одно ядро: настоящий Telegram-бот и его веб-двойник на витрине
  • Вид менеджера с рабочими кнопками: одобрить, отклонить, прислать ссылку снова
  • Вебхук регистрации подписан HMAC-SHA256 — подделка попадает в публичный журнал
  • Одноразовые инвайты с TTL 30 минут; вход фиксирует chat_member, а не честное слово
  • Красный путь встроен: нажмите «отправить с ошибкой» — и увидите отсев с причиной
  • Один процесс на SQLite + aiogram 3 + FastAPI; стенд сам сбрасывается каждые 6 часов
Python 3.12 aiogram 3 FastAPI SQLite Telegram Bot API HMAC-SHA256 nginx systemd
Демо
Game Keys Store
Работает

Game Keys Store

Telegram-бот магазин игровых ключей с веб-админкой. Покупатели просматривают 5 категорий, выбирают товары, оплачивают через интеграцию с Monobank и мгновенно получают ключи после подтверждения оплаты.

  • 5 категорий товаров с каталогом и поиском
  • Мгновенная выдача ключей после оплаты через Monobank
  • История заказов и отслеживание покупок
  • Полная CRUD админ-панель с аналитикой продаж
  • Веб-админка на FastAPI
Python aiogram 3 FastAPI PostgreSQL SQLAlchemy Docker
Демо
Flavor Lab
Работает

Flavor Lab

E-commerce Telegram-бот для крафтовой кофейни. Полноценный интернет-магазин прямо в Telegram: каталог товаров с пагинацией по 5 категориям и 29 позициям, корзина с inline-кнопками, оформление заказа за 4 шага, оплата через Monobank, отслеживание заказов с визуальным статус-баром, избранное и полная админ-панель.

  • Детальные карточки кофе: страна, обжарка, обработка, вкусовые ноты
  • Корзина с inline-кнопками +/−/удалить
  • Интеграция оплаты через Monobank с webhook-подтверждением
  • История заказов с визуальным статус-баром
  • Админ-панель: управление товарами, статусы заказов, аналитика выручки
Python 3.12 aiogram 3 SQLAlchemy 2 aiosqlite Monobank API Docker
Демо
AI Content Editor
Работает

AI Content Editor

Full-stack платформа для создания статей с помощью ИИ через 3-этапный пайплайн: Генерация, Верификация, Рефайнинг. Поддержка 4 LLM-провайдеров (Gemini, OpenAI, Claude, OpenRouter), WYSIWYG-редактор TipTap с режимом HTML-кода, автоматическая проверка фактов, валидация ссылок и визуализация изменений через smart diff.

  • 3-этапный AI-пайплайн: структура → расширение → полировка → фактчек → рефайн
  • 4 LLM-провайдера: Gemini, OpenAI, Claude, OpenRouter — пользователь вводит свой ключ
  • TipTap WYSIWYG-редактор с режимом HTML-кода и экспортом в Markdown
  • Автоматическая проверка ссылок с детекцией редиректов и замером времени отклика
  • HTML-aware визуализация изменений с подсветкой на уровне слов
React 19 TypeScript Python FastAPI TipTap Docker
Демо
Floritale AI
Работает

Floritale AI

AI-платформа в виде Telegram-бота для цветочного бизнеса. Использует OpenAI GPT для генерации персонализированных описаний товаров, ответов на вопросы клиентов и автоматизации обработки заказов через диалог на естественном языке.

  • GPT-генерация описаний товаров и рекомендаций
  • Обработка заказов на естественном языке через Telegram
  • Автоматическая поддержка клиентов с контекстными ответами
  • Интеграция каталога с AI-генерируемым контентом
  • История диалогов и отслеживание предпочтений клиентов
Node.js TypeScript OpenAI API Telegram Bot API Docker
Курьер
Работает

Курьер

Прогрессивное веб-приложение для управления доставкой. Мультиролевая платформа с отдельными интерфейсами для администраторов, курьеров и клиентов. Отслеживание заказов в реальном времени, оптимизация маршрутов и автоматические уведомления о статусе.

  • 3 ролевых интерфейса: админ, курьер, клиент
  • Отслеживание доставки в реальном времени на карте
  • PWA — устанавливается на любое устройство, работает офлайн
  • Управление заказами с автоматическими статусами
  • Админ-дашборд с аналитикой доставок и отчётами
React TypeScript Node.js PostgreSQL PWA Docker
Демо
CallQA
Работает

CallQA

AI-платформа контроля качества звонков для команд клиентского сервиса. Автоматически анализирует записи звонков, оценивает работу операторов с помощью моделей машинного обучения и генерирует детальные отчёты с практическими рекомендациями.

  • AI-анализ записей звонков с распознаванием речи
  • Автоматическая оценка работы операторов по критериям
  • Детальные отчёты качества с трендами и рекомендациями
  • Настраиваемые критерии оценки и шаблоны скоринга
  • Командный дашборд аналитики с отслеживанием KPI
Node.js TypeScript AI/ML PostgreSQL Docker
Odoo ERP
Работает

Odoo ERP

Кастомизированное развёртывание Odoo ERP для комплексного управления бизнес-процессами. Настройка и расширение кастомными модулями для учёта склада, бухгалтерии, управления клиентскими отношениями и автоматизации рабочих процессов под нужды клиента.

  • Кастомные модули под конкретные бизнес-процессы
  • Управление складом с отслеживанием товаров
  • Автоматизация бухгалтерии и выставления счетов
  • CRM-модуль с управлением воронкой продаж
  • Docker-деплой с nginx reverse proxy и SSL
Python PostgreSQL Docker Odoo nginx
Демо
Каталог поставщика → фид маркетплейса по расписанию
Работает

Каталог поставщика → фид маркетплейса по расписанию

В каталоге поставщика больше миллиона товаров. Нужны из них десять подгрупп — с ценами, остатками, в виде YML-файлов, которые примет маркетплейс. Стенд позволяет это сделать руками: отметить группы, добавить чёрный список, задать вилку цены, нажать «Запустить». Лог обходит каталог, отбрасывает то, что не прошло фильтры, и пишет несколько YML. Любой файл можно скачать — он разбирается как валидный XML: 60 офферов, настоящие характеристики. Срез данных не выдуманный: 200 товаров с tme.eu, 17 полностью разобранных карточек товара, 200 характеристик, реальные символы, цены в PLN, остатки склада, фото и ссылки. Чего стенд не делает: он не ходит на источник вживую из браузера. Это работа сервера по расписанию — и страница честно об этом говорит.

  • Фильтры, которые реально нужны: группы, подгруппы, чёрный список, цена, наличие
  • Выгрузка режется на несколько YML — миллион товаров в одну задачу не влезает
  • Отдельная строка crontab на профиль: одна группа упала — остальные отработали
  • Вкладка карточки товара: 16 настоящих характеристик и место описания
  • Каждый файл скачивается и проверяется: XML-парсер, 60 офферов в части
JavaScript XML / YML Prom.ua feed DOM parsing cron nginx
Демо
Магазин мебели + конструктор: собери своё, увидь смету, закажи
Работает

Магазин мебели + конструктор: собери своё, увидь смету, закажи

Магазин на WooCommerce, 420 товаров, где настоящие ширина и высота нарисованы прямо на изображении выносными линиями, как в чертеже цеха: мебель возвращают не потому, что некрасивая, а потому что не влезла. Фильтр по породе и покрытию, заказ без регистрации в два шага — и уведомление уходит владельцу в Telegram у вас на глазах, с настоящей задержкой. Конструктор — то, чего не показывает никто. Задаёте габарит с точностью до сантиметра: чертёж перерисовывает браузер мгновенно, а сервер отвечает сметой построчно — щит за м², отделка за м², фурнитура поштучно, часы работы. Он спорит, как столяр: полка шире предельного пролёта получает перегородку и объяснение, шкаф в 230 кг — доставку вдвоём, корпус выше проёма приедет частями. Если в каталоге есть готовая модель дешевле, конструктор сам об этом скажет и даст ссылку. Чего стенд не делает: деньги не движутся, фото товаров сгенерированы из габаритов, а не сняты, данные сбрасываются каждые 6 часов. Гостевая админка: demo / demo.

  • Габариты нарисованы на каждом фото — 6 КБ из размеров вместо стокового кадра на 40 КБ
  • Конструктор считает по сантиметру и показывает смету построчно
  • Отправляет к готовой модели, если в каталоге есть дешевле
  • Две витрины, EN и UK: своя валюта, свои перевозчики, свои письма
  • PageSpeed 100 на мобильном — каталог из 420 товаров: 0.11 МБ, 15 запросов, один скрипт, ноль jQuery
WooCommerce WordPress 6 PHP 8.3 Polylang MariaDB Redis nginx + FastCGI cache Python (catalogue generation) Telegram Bot API
Демо
Личный кабинет WooCommerce: повтор заказа в 2 клика, бонусы, подписки
Работает

Личный кабинет WooCommerce: повтор заказа в 2 клика, бонусы, подписки

Дорогая доработка, которую заказывают у уже работающего магазина. Нажимаете «войти как покупатель» — без регистрации — и получаете личную песочницу с полугодовой историей: три заказа, бонусный баланс с перечисленными операциями, активный план ухода. Любой прошлый заказ повторяется в два клика: старый заказ становится корзиной, сохранённый адрес — оформлением. Там же списываете баллы и видите строку скидки в сводке заказа. Открываете план ухода, жмёте «списать сейчас» — и на глазах создаётся настоящий заказ WooCommerce, а квитанция ложится в раздел «Письма» тем же HTML, каким она ушла бы в почту. Денежная часть сделана так, чтобы её проверяли, а не верили на слово: баллы живут в журнале, который только дописывается, баланс двигается одним атомарным UPDATE с ограничением внутри WHERE, у каждой операции ключ идемпотентности. Восемь одновременных списаний при балансе на три проходят ровно три раза — этот тест лежит в кейсе. Ничего не нарисовано, деньги не движутся: стенд работает в тест-режиме и сбрасывается каждые 6 часов.

  • Повтор прошлого заказа в два клика — включая изделие из конструктора
  • Бонусы: 3% возврата, списание на чекауте, история с остатком после каждой операции
  • Подписка на расходник: пауза, отмена или плановое списание прямо сейчас
  • Каждое письмо магазина читается в кабинете — стенд не пишет на чужие адреса
  • 8 параллельных списаний, 5 дублей начисления, 5 одновременных прогонов подписки — проходят 3, 1 и 1
WooCommerce WordPress 7 PHP 8.3 MariaDB (InnoDB) Polylang WP-CLI REST API JavaScript (no framework)
Демо
Тот же магазин на втором движке: один дизайн на WooCommerce и OpenCart
Работает

Тот же магазин на втором движке: один дизайн на WooCommerce и OpenCart

Тот же магазин мебели, что на соседнем стенде WooCommerce — тот же макет, тот же фид на 420 товаров, та же структура каталога, те же тексты — собранный заново на OpenCart 4.1. Оба живые, в обе админки можно зайти гостем, а страница сравнения ставит их рядом с числами, снятыми одним прибором за один заход. Это ответ на вопрос, который заказчик задаёт первым: а на моей платформе так же выйдет? Дизайн перенёсся без правок. Движок — нет. Второй темы на уровне файлов у OpenCart 4.1 не бывает, поэтому тема живёт расширением и подменяет шаблоны по событию: ни один файл ядра не тронут, обновление работу не сотрёт. Адресу товара нужен отдельный сегмент маршрута, иначе он молча отдаёт 200 и показывает главную. Масштабирование картинок не читает SVG вообще. Кэш на промахе возвращает пустой массив вместо false — проверка is_array() проходит, и страница выходит пустой без единой ошибки. Оформление заказа разложено на пять маршрутов, где список доставки надо сперва запросить, чтобы его можно было выбрать. Каждая из этих особенностей ломает витрину молча. Чего стенд не делает: деньги не движутся, оплата только при получении, изображения товаров сгенерированы из габаритов, а не сняты, данные сбрасываются каждые 6 часов. Гостевая админка: shop-oc.devs-code.site/keruvannya, demo / demo.

  • Один дизайн, два движка — щёлкните по обеим админкам и сравните сами
  • Страница сравнения с честными цифрами: оба стенда одним прибором, в один час
  • PageSpeed 99–100 на мобильном, CLS 0.000 — без jQuery и Bootstrap, минус 230 КБ, которые тема не использует
  • Тема расширением: ни один файл ядра не изменён, обновление переживёт
  • Отделения Новой Почты тянутся из публичного API перевозчика прямо в оформлении
  • Мониторинг оформляет полный заказ каждые 5 минут и убирает его за собой
OpenCart 4.1 PHP 8.3-FPM MariaDB Redis nginx microcache Twig Nova Poshta API WebP
Демо
Один дизайн — четыре платформы: измерено, а не рассказано
Работает

Один дизайн — четыре платформы: измерено, а не рассказано

Один каталог мебели на 420 моделей и одна вёрстка на четырёх движках: WooCommerce, OpenCart 4, headless-фронт на Astro поверх REST API WordPress и чистый WordPress без магазина. Все четыре стенда живые, их можно открыть рядом. Таблица скорости не написана руками: ночной раннер меряет каждый стенд Lighthouse — три прогона, медиана, одни и те же три страницы у всех (главная, каталог, карточка), — а страница тянет числа из фида, поэтому дата каждого замера видна на экране. Замеры, снятые под нагрузкой сервера, отбрасываются, а не публикуются; стенд, измеренный не полностью, честно говорит об этом вместо половины колонки. Рядом с измеримой половиной — то, что измерить нельзя: срок сборки, стоимость владения, кому платформа подходит и где она заканчивается. Эта часть прямо помечена как наша оценка. «Своей» платформы у нас нет: честная таблица и есть весь смысл.

  • Четыре живых стенда, один дизайн, один каталог — открываются рядом
  • Скорость перемеряется каждую ночь, у каждого числа своя дата замера
  • Замеры под нагрузкой сервера отбрасываются, а не публикуются
  • Измеренное и оценённое — две разные таблицы, они не смешиваются
  • Пять сценариев заказчика → платформа и обоснование, включая «оставайтесь как есть»
WordPress WooCommerce OpenCart 4 Astro Lighthouse nginx + FastCGI cache SQLite PHP 8.3
Демо
Тот же магазин статикой: 544 мс против 5 мс на промахе кэша
Работает

Тот же магазин статикой: 544 мс против 5 мс на промахе кэша

Магазин мебели с соседнего стенда на WooCommerce, пересобранный статической витриной на Astro 5. Тот же каталог, те же цены, те же заказы: 421 товар на язык приезжает из WooCommerce Store API и раскладывается в 983 HTML-файла, которые nginx отдаёт без PHP, Node и базы в запросе. Обе витрины дают 100 в мобильном Lighthouse, и утверждать обратное было бы неправдой — тема магазина сделана хорошо. Разница в том, чего этот балл стоит. При попадании в микрокэш WordPress отвечает за 2 мс, быстрее нас. При промахе он собирает страницу 544 мс, а кэш обязан когда-то промахнуться: после правки товара, по истечении срока, при первом заходе на редкую страницу. Статике промахиваться нечем — адрес, который ещё никто не спрашивал, приходит за те же 5 мс, потому что собирать нечего. Документ 4.3 КБ против 12.7 КБ, JavaScript 6 КБ против 13 КБ. Корзина настоящая: она живёт в магазине через Cart-Token, и заказ, оформленный здесь, появляется в админке WooCommerce соседнего стенда вместе с живыми тарифами Новой Почты. Журнал сборок на /builds/ показывает каждую пересборку — какие товары изменились и сколько файлов переписано, обычно 18 из 1428: выкладка делает жёсткие ссылки на прошлый релиз и трогает только отличия. Чего стенд не делает: деньги не движутся, изображения товаров — чертежи, сгенерированные из габаритов, а не фотографии, а каталог догоняет шестичасовой сброс соседнего магазина за 5 минут.

  • Нажмите кнопку — ваш браузер сам замерит обе витрины на одном товаре
  • 544 мс против 5 мс до первого байта на промахе кэша — вот где настоящая разница
  • Заказ со статической витрины приходит в админку WooCommerce соседнего стенда
  • Публичный журнал сборок: что изменилось, что переписано, сколько это заняло
  • Меняете одну цену — пересобираются 11 файлов из 1428: товар, его списки, его соседи
  • Украинская страница тянет 95 КБ шрифтов вместо 170 КБ, шестью файлами вместо девяти
Astro 5 SSG TypeScript WooCommerce Store API nginx brotli_static systemd + unix socket woff2 subsetting Lighthouse incremental deploy
Демо
Сайт юрфирмы, который сам себя проверяет
Работает

Сайт юрфирмы, который сам себя проверяет

Нажмите кнопку — сайт проверит себя у вас на глазах. 33 проверки настоящими HTTP-запросами к своим же страницам за 2,1 секунды: разметка, заголовки, кэш, TLS, security-заголовки, битые ссылки. Результат сейчас — 100%: 31 пройдено, 0 провалов. Две строки серые намеренно: индексация закрыта, потому что это демо, и отчёт так и пишет вместо фальшивой галочки. Core Web Vitals меряются в вашем браузере, а не в лаборатории. Аудит нашёл настоящую дыру во время работы: /wp-config.php отдавался с кодом 200, потому что правила deny в nginx стояли ниже обработчика PHP. Исправлено, можете перепроверить. Вход в админку: demo / demo.

  • Одна кнопка, 33 живые проверки: 2,1 с, 33 настоящих запроса, каждое значение измерено
  • Core Web Vitals из вашего браузера + p75 по реальным визитам, без аналитических сервисов
  • Калькулятор сроков в первом экране: ввели дату — видите, какие сроки ещё идут
  • Форма из 4 шагов со скорингом заявки — формула показана, а не спрятана
  • ТехSEO написан руками: 0 КБ на фронте, schema.org одним связным графом
  • Ноль сторонних запросов — ни аналитики, ни шрифтового CDN, поэтому и cookie-баннера нет
WordPress 7 ACF PHP 8.3 nginx + FastCGI cache Redis MariaDB Server-Sent Events schema.org
Демо

Технологии

Фронтенд

React
Next.js
Astro
TypeScript
Tailwind CSS
HTML/CSS

Бэкенд

Node.js
Express
Python
REST API
WebSocket
Telegram Bot API

Базы данных

PostgreSQL
Redis
MongoDB

DevOps

Docker
nginx
Linux
Git
CI/CD

AI / ML

OpenAI API
LangChain
Claude API

Связаться

Есть идея проекта? Давайте обсудим.