Фулл-стек разработчик

Привет, я Егор

27 лет. Строю быстрые продукты и люблю решать сложные инженерные задачи. От архитектуры до UI — довожу до production.

10+лет в коде
5pet-проектов
R&Dфокус

Backend и системы

Rust, Node.js, Python. Высоконагруженные API, WebSocket серверы, кастомный SSR.

RustNode.jsPostgreSQLRedis

Frontend и UX

React, Preact, Next.js. Быстрые интерфейсы с фокусом на производительность и accessibility.

ReactTypeScriptThree.jsSCSS

AI и автоматизация

Интеграция LLM в продукты. AI-агенты, RAG, оптимизация промптов и стоимости токенов.

GeminiClaudeLangChainRAG

DevOps и инфраструктура

Linux, Docker, CI/CD. Оптимизация под минимальные ресурсы и максимальную отдачу.

DockerLinuxNginxGitHub Actions
Скролль чтобы увидеть проекты
Это портфолио

Почему не Next.js?

Этот сайт работает на кастомном SSR сервере. Почему не взял готовое решение?

🧵

Один поток на всё

Node.js однопоточный. Пока рендерится одна страница — остальные ждут.

PS: Да, есть cluster mode и worker threads. Но посмотри как это работает:

Node.js Cluster
Process 1
V8Event LoopHeap 512MB
Process 2
V8Event LoopHeap 512MB
... ×10
10 отдельных процессов~5GB RAM на 10 ядерНет общего кеша
Rust + V8 Pool
1 Process
V8V8V8×10
Shared Cache (DashMap)Zero-copy Arc<str>
1 процесс, 10 потоков~200MB RAMОбщий L1/L2 кеш
📈

Дорого масштабировать

Чтобы использовать все ядра — нужен cluster mode или несколько инстансов. Больше памяти, сложнее деплой.

1 ядро→ 1 процесс Node.js
10 ядер→ 10 процессов × RAM
= 10× памяти💸
🎯

Хочу дёшево и быстро

Идеал: $5 VPS летает как $100 сервер. SSR работает на всех ядрах без cluster mode и лишней памяти.

Все CPU ядра работают
Минимум памяти
Простой деплой
🦀Решение: Rust с пулом V8 изолятов
Решение

V8 на каждом ядре

Rust запускает отдельный V8 изолят в каждом потоке. 10 ядер = 10 параллельных рендеров. Тот же Preact, но без ограничений Node.js.

Rusty-SSR Stress TestApple M4
Requests/sec:95,363 RPS 🚀
Total (30s):2,869,878
Data transferred:171 GB
Latency p99:4.60ms
* 30s stress test, local laptop
EngineRPSp99 Latency
Next.js (Node)~2,00050-200ms
Nuxt (Node)~1,50040-150ms
Rusty-SSR95,3634.6ms ⚡
LIVEЭтот сайтTop 1%
100Performance
0.4sFCP
0.4sLCP
0msTBT
0CLS

Что делает библиотеку быстрой:

  • 🚀
    V8 isolate poolнет холодного старта V8
  • 💾
    L1/L2 кешповторные запросы из памяти
  • Zero-copy Arc<str>нет лишних аллокаций
  • 🦀
    Rust + Tokioasync без GC пауз
GitHub
Бизнес продуктGo + AIOpen Source

AI-Powered Customer Support

Мессенджер с realtime переводом и мультиагентным автоответчиком. Клиенты пишут на любом языке — система переводит, отвечает на типовые вопросы, эскалирует сложные.

<2sперевод
90%экономия API
3канала
GoGinGorilla WSGemini 2.5PostgreSQLNext.js
Проблемы

Боли клиентского саппорта

Каждый бизнес с онлайн-продажами сталкивается с одними и теми же проблемами. Операторы дорогие, клиенты нетерпеливые, а языков слишком много.

🌍

Языковой барьер

Клиенты пишут на своём языке. Операторы не понимают. Продажи уходят.

73%уходят без ответа
🇬🇪გამარჯობა...?
💸

Дорогие операторы

Зарплаты, налоги, обучение, рабочие места. А если нужен 24/7 — умножай на 3.

×3стоимость для 24/7
1 оператор ≈ $800/мес24/7 = 3 смены= $2400/мес минимум
🌙

Ночью все спят

Клиенты пишут когда удобно им. А ночная смена — это отдельная головная боль.

35%запросов вне рабочего времени
22:0009:00оффлайн
⏱️

Медленные ответы

Пока оператор переводит, ищет информацию, формулирует ответ — клиент уже ушёл.

45 сектолько на перевод
Прочитал
Перевёл
Нашёл
Ответил
...ушёл
Решение

AI-powered саппорт

Два AI-слоя работают синхронно: мгновенный перевод любого языка + умный автоответчик который реально понимает контекст.

< 2sвремя ответа
24/7без выходных
языков
Live Translation
🇬🇪
გამარჯობა! მინდა შევიძინო ვაშლიПривет! Хочу купить яблоки
🤖AI анализирует...
Да! Яблоки Голден — 3.50₾/кгდიახ! ვაშლი გოლდენი — 3.50₾/კგ
🤖
Автоответ • без участия оператора
🌍Любой язык мира
🔄Двусторонний перевод
🧠Понимает контекст
Мгновенно
👨‍💼Эскалация на человека
Архитектура

Realtime LLM Mesh

От сообщения клиента до ответа оператора

Каналы
💬Widget
📸Instagram
✈️Telegram
Gateway
🚀Go + Gin + WS
AI Layer
🧠LLM
🤖ADK Agent↓ ZOOM
Админка
👨‍💼Next.js
🗄️PostgreSQL
Redis
🤖
Внутри робота

🤖 AI Автоответчик

Интеллектуальный агент, который понимает контекст, использует инструменты и решает задачи клиентов

80%автоматизация
<2sвремя ответа
24/7доступность
💬Запрос клиента
🧠ReAct: Think → Act → Observe
6 Tools:
📦 products🛒 orders🚚 delivery💳 payments❓ faq👨‍💼 escalate
Решение проблемы
AI Автоответчик

ReAct Pattern в действии

Агент думает, использует инструменты, анализирует результаты. Количество шагов не ограничено — агент сам решает, когда готов ответить.

Клиент"Есть яблоки? Сколько стоят? И когда доставка?"
1ThinkНужно: найти яблоки + узнать доставку
2Actget_products("яблоки")
3Observe{"name": "Яблоки Голден", "price": "3.50₾"}
4Actget_delivery_info()
5Observe{"time": "1-2 дня", "free_from": "50₾"}
AI Agent"Да! Яблоки Голден — 3.50₾/кг. Доставка 1-2 дня, бесплатно от 50₾!"
Мультиагент

Supervisor → Agent → Tools

Иерархия агентов с эскалацией. Supervisor роутит, Support Agent отвечает, 6 tools дают данные.

S
SupervisorАнализирует intent, роутит запросы, эскалирует если не по теме
A
Support AgentReAct loop, использует tools, формирует ответы
get_products
check_order
get_store_info
get_delivery_info
get_payment_methods
escalate_to_human
Open SourceADK-Go Fork

Google ADK не работает с OpenAI

Google Agent Development Kit — мощный фреймворк, но жёстко привязан к Gemini. Никаких локальных моделей, никакого выбора.

Только Gemini API
Нет локальных LLM
Vendor lock-in
Нет приватности данных

Мне нужно:

🏠LM Studio для разработки
🔄Переключение моделей без изменения кода
🔒Приватность для чувствительных данных
Решение

Fork + OpenAI Adapter

Форкнул ADK-Go и написал полноценный адаптер. Теперь ADK работает с любой моделью через OpenAI-совместимый API.

До
model := gemini.NewModel("gemini-2.5-flash")
agent := adk.NewAgent(model, tools...)
После
// Локально
model := openai.NewModel(
  "http://localhost:1234",
  "gemma-3"
)

// Или cloud
model := openai.NewModel(
  "https://api.openai.com",
  "gpt-4"
)
Компоненты

Что внутри адаптера

🔌openai.goГлавный адаптер, реализует model.LLM~400 строк
🌊streaming.goSSE парсер с iter.Seq2~200 строк
🔧tool_executor.goParallel/sequential execution~300 строк
🔄converters.goADK ↔ OpenAI форматы~250 строк
💾session.goMulti-turn с TTL~150 строк
🛡️error_handling.goRetry + backoff~180 строк
Результаты

Что получилось

ecoChatServerADK Adapter
E-Commerce Platform

EnddelStore

Маркетплейс с мульти-вендорами, real-time доставкой и мобильным приложением

50+API endpoints
3Платформы
LiveGPS трекинг
Scroll
Задача

Маркетплейс с нуля

Создать платформу где вендоры продают, курьеры доставляют, а клиенты получают товар — всё в реальном времени.

🏪

Мульти-вендоры

Каждый магазин со своим каталогом, ценами, графиком работы и зонами доставки

🚴

Курьеры

Назначение заказов, маршруты, GPS

💳

Платежи

Банк, вебхуки, возвраты

🌍

Мультиязычность

Грузинский, русский, английский — автоматический перевод через LLM

Telegram

Бесшовная авторизация

Открыл Mini App — уже залогинен. Никаких форм, паролей, подтверждений. Telegram сам передаёт данные пользователя.

1Юзер открывает Mini App
2initData → бекенд
3Проверка HMAC подписи
Авторизован!
telegram-auth.tsTypeScript
const initData = Telegram.WebApp.initData;

// Проверка подписи на бекенде
const isValid = verifyTelegramWebAppData(
  initData,
  BOT_TOKEN
);

// Готово — юзер авторизован
Безопасность

4 способа входа

✈️

Telegram

Mini App + Bot

Основной
🔵

Google

OAuth 2.0

💎

TON

Web3 кошелёк

ТокеныJWT + Refresh
СессииRedis TTL
Rate LimitSliding Window
SMS Gateway
~0.05₾/SMS
  • 1000 юзеров = 50₾/мес
  • Интеграция с провайдером
  • Задержки доставки
💸
VS
Telegram Bot
0₾
  • Бесплатно навсегда
  • Мгновенная доставка
  • Уже есть у всех
Лайфхак

SMS бесплатно

Вместо платных SMS-шлюзов — Telegram бот. Код подтверждения приходит в личку за 0₾. Экономия 100%.

UGC

Рецепты от пользователей

Любой может создать рецепт и продавать его. Платформа берёт комиссию, автор получает доход.

👨‍🍳

Создай

Загрузи рецепт с фото

💰

Цена

Установи от 1₾

🛒

Продавай

Покупатели получают доступ

💸

80%

с каждой продажи

🍕

Пицца Маргарита

от @chef_maria
5₾
Delivery

Курьерское приложение

Отдельное приложение для курьеров: принятие заказов, навигация, статусы — всё в одном месте.

📍 GPS-трекинг🔔 Push📊 Статистика🗺️ Маршруты
● Онлайн145₾
Заказ #452112 мин
📍Магазин "Фрукты"
🏠ул. Руставели, 15
● Live

Real-time трекинг

Клиент видит курьера на карте в реальном времени. Обновления каждые 3 секунды.

🚴
🏠
Прибудет через8 мин
Socket.IOWebSocket
CapacitorBackground GPS
LeafletКарты
⚛️React App
🔌Capacitor
🍎iOS
🤖Android
🌐Web
Mobile

Один код — все платформы

React + Capacitor = нативное приложение для iOS и Android. Push, GPS, камера, биометрия — всё работает.

📍 Geolocation🔔 Push📷 Camera🔐 Biometrics
Web3

TON Connect

Авторизация через TON кошелёк. Подключил Tonkeeper — и ты в системе.

💎Tonkeeper
↔️
🛒Store
🔐Криптографическая подпись
🚫Без паролей
Мгновенный вход
💰Крипто-платежи
AI

LLM переводы

Вендор добавляет товар на грузинском — LLM автоматически переводит на русский и английский. LM Studio локально, бесплатно.

0₾за переводы
3языка
<2sна перевод
🇬🇪ვაშლი გოლდენი, 1კგ
🤖LM Studio
🇷🇺Яблоки Голден, 1кг
🇬🇧Golden Apples, 1kg
📍
ул. Руставели, 15Зона A • 30 мин
Maps

Зоны доставки

Leaflet + GeoJSON полигоны зон доставки. Геокодинг адресов и офлайн-кеш тайлов через IndexedDB.

🗺️
ПолигоныGeoJSON зоны
🔍
ГеокодингАдрес → координаты
💾
IndexedDBОффлайн-кеш
Security

Многоуровневая защита

🔐

CSRF Protection

Double-submit cookie + timing-safe compare

crypto.timingSafeEqual()
⛑️

Helmet.js

CSP, HSTS, X-Frame-Options

11 security headers
🧹

Sanitization

HTML, SQL, Path — отдельно

DOMPurify + rules
Anti-Bot

5 стратегий Rate Limit

Разные лимиты для разных эндпоинтов: авторизация строже, чем просмотр каталога.

General
100/мин
Auth
5/5мин
Orders
10/мин
Payments
3/мин
Critical
1/час
🔵Google Login
🔍Check Email
✨ НовыйСоздать
OAuth

Безопасный Google Auth

OAuth 2.0 с защитой от account takeover: проверка existing email, безопасная линковка аккаунтов.

🛡️ Проверка email ownership
🔒 Защита от takeover
🗑️ Token revocation
Analytics

Дашборд вендора

Продажи, популярные товары, время доставки. Данные клиентов анонимизированы через MD5.

🔐MD5(user_id + salt)
Продажи
ТОП
🍕 Пицца42%
🍔 Бургер28%
🥗 Салат18%
● Real-time

Мониторинг остатков

🍎 Яблоки5⚠️ Мало
🥛 Молоко48
🍞 Хлеб23→22● LIVE
🧀 Сыр0🚫
Socket.IO room: vendor_${id}_stock
⏱️
Smart TTL
products: 5mincategories: 1hruser_cart: 24hr
📦
LZ4 Compression70% меньше памяти
🔮
Predictive WarmingTOP 100 каждые 5 мин
Performance

844 строки кеширования

Продвинутый Redis кеш: TTL конфигурация, LZ4 сжатие, предиктивный прогрев популярных товаров.

95%Hit Rate
<5msLatency
Socket.IO

1500+ строк real-time

📍

Location Batching

10 updates → 1 packet

90% меньше трафика

📴

Offline Queue

msg1msg2msg3

Доставка при reconnect

🚪

Room Isolation

order:123vendor:5

Только релевантные события

Результат

Что получилось

50+API endpointsREST + WebSocket
3ПлатформыWeb • iOS • Android
4Способа входаTG • Google • TON • Email
0₾SMS + переводыTelegram + LLM
LiveТрекингSocket.IO + GPS
ВендоровМульти-тенант