TechGeek.uz
Магазин умных очков для Узбекистана, собранный из данных: 104 SKU на русском и узбекском, цены в долларах или сумах, заказ через Telegram.
- Конфигуратор вариантов
- USD ↔ UZS по курсу ЦБ
- Заказ через черновик в Telegram
- Техническое SEO на RU / UZ
- Направление
- Коммерция
- Год
- 2025–26
- Авторство
- Собственная разработка
- Статус
- Роль
- Единственный разработчик и оператор веб-канала: дизайн, фронтенд, каталожный конвейер, serverless API и SEO.
- Платформы
- Интернет-магазин · десктоп и мобильные
- Языки
- RU · UZ
- Стек
- HTML · CSS · Vanilla JavaScript · Node.js build scripts · Vercel Functions · GitHub Actions · JSON-LD · Google Merchant feed
Изыскания — контекст и задача.
Задача
Каталог с множеством вариантов, цены, которые покупатели считают в сумах, никакой платёжной системы — и первая версия с токеном бота в публичном коде.
TechGeek.uz продаёт умные очки Ray-Ban Meta, Oakley Meta и Meta, а также браслеты WHOOP покупателям по всему Узбекистану. Всё привозится под заказ из-за рубежа; менеджер закрывает каждый заказ в Telegram или по телефону, доставка по стране бесплатная.
Самое сложное — каталог. Умные очки существуют в большой матрице поколений, оправ, цветов, линз и размеров, а заказать напрямую в магазине Meta местные покупатели не могут. Цены должны вызывать доверие и читаться в сумах, а не только в долларах. Из-за опасений насчёт «серого» рынка доверие решает всё. У магазина нет ни платёжного шлюза, ни системы заказов, и его должны находить и в Google, и в Яндексе — на русском и на узбекском.
Первая версия — тёмный оптовый лендинг декабря 2025 года — к тому же отправляла заказы в Telegram из клиентского кода, то есть токен бота лежал в публичном JavaScript. Задача: превратить это в розничный магазин — быстрый, честный в вопросах наличия и безопасный по устройству.
План — сначала — чертёж системы.
Решение
Статичный магазин, собранный из каталожных данных: конфигуратор вариантов, USD ↔ UZS по курсу ЦБ, оформление через черновик в Telegram и двуязычное техническое SEO.
Товары не вводятся вручную — магазин генерируется. Публичные данные о товарах собираются из магазина Meta, нормализуются в 104 SKU по 13 семействам очков плюс WHOOP, получают цену по единому правилу и детерминированной сборкой публикуются в страницы моделей, карточки на главной, sitemap, структурированные данные и фид Google Merchant. CI-проверка останавливает сборку, если цены где-то расходятся. У каждой модели есть конфигуратор, который при смене цвета, линз и размера меняет фото, цену, SKU и состояние URL. Цены переключаются между долларами и сумами через небольшую функцию Vercel: она проксирует курс Центрального банка Узбекистана, кэширует его и честно возвращает ошибку вместо выдуманного числа. Корзина хранится локально и защищена от подмены, а оформление открывает заполненное сообщение в Telegram — без токена бота и без персональных данных в публичном коде.
Ключ модулей
- Каталог с фильтрами по категории, линейке, поколению и сортировкой, живой счётчик результатов
- Конфигуратор вариантов на каждой карточке и странице модели, с состоянием в URL
- Переключатель USD / UZS по курсу Центрального банка с пометкой «ориентировочно»
- Сохраняемая корзина-шторка с защитой от подмены и синхронизацией между вкладками
- Заполненный черновик заказа в Telegram на русском или узбекском
- 13 страниц моделей на двух языках, гиды для покупателей и настоящая 404
- Структурированные данные: Organization, ProductGroup, Offer, Breadcrumb, FAQ и Article
- Фид Google Merchant, sitemap, llms.txt, верификация в Яндексе и Bing
Ключевые решения
-
Почему статичный HTML, а не фреймворк
Такой магазин — это контент, который меняется между сборками, а не между кликами. Заранее собранные страницы без npm-зависимостей в рантайме быстро грузятся, чисто индексируются и почти не требуют обновлений.
-
Почему заказ — черновик в Telegram, а не бот
Боту первой версии нужен был токен в браузере. Заполненному сообщению t.me не нужен никакой секрет, оно сохраняет привычный процесс менеджера и учитывается как намерение, а не как продажа.
-
Почему каталог генерируется, а не набирается
Один исходный файл питает страницы, структурированные данные, sitemap и фид Merchant, а CI сверяет цены во всех этих местах. Цена не может быть верной на одной странице и неверной на другой.
-
Почему цены в сумах помечены как ориентировочные
Курс берётся у Центрального банка Узбекистана и кэшируется на час. Если его не удаётся получить, сайт честно об этом сообщает вместо догадок, а курсы старше десяти дней отбрасываются.
-
Почему в наличии указано «под заказ»
Ничего не помечается как «в наличии», пока поставка не подтверждена, а у товаров с ценой по запросу никогда нет нулевой или фиксированной суммы. Честное наличие обходится дешевле нарушенного обещания.
Фасады — экраны для компьютера.
Все фасады 03
-
Рис. 4.1 Раздел каталога: вкладки категорий, выбор линейки, поколения и сортировки, переключатель USD / UZS и первый ряд карточек умных очков. -
Рис. 4.2 Ярко-синяя панель Ray-Ban Meta с лаймовым акцентом на камере 12 Мп и тремя пронумерованными преимуществами. -
Рис. 4.3 Гид покупателя «Ray-Ban Meta Gen 1 или Gen 2» с таблицей сравнения и карточками «когда выбирать».
Детали — мобильные экраны.
Все мобильные экраны 05
Ведомость материалов — стек и почему он.
| Слой | Материал | Почему |
|---|---|---|
| 01Данные | catalog.json · 104 SKUs · sourced product JSON-LD | Один нормализованный источник питает каждую страницу, блок разметки и фид. |
| 02Логика | Node.js build scripts · deterministic generator | Пересборка всего каталога — одна команда, а CI проверяет цены от начала до конца. |
| 03Аналитика | Codex agent: daily SEO routine with guardrails | Здоровье индексации и фидов проверяется каждый день — с паузами, без выдуманных данных и с одобрением человека для всего внешнего. |
| 04Интерфейс | Static HTML · CSS custom properties · vanilla JS · Manrope | Быстрые страницы без фреймворка и собственные подмножества шрифтов для кириллицы и латиницы. |
| 05Инфраструктура | Vercel CDN · one Node function · GitHub Actions | Статичный хостинг и одна serverless-функция для курса валют; CI запускает тесты и проверки сайта на каждый push. |
Стек
Сдача — итог и ссылки.
Проверенные факты
- SKU в 13 семействах очков + WHOOP
- 104
- Источник: проверка сайта, 29.09.2026
- индексируемых URL, RU + UZ
- 44
- Источник: sitemap, 29.09.2026
- npm-зависимостей в рантайме
- 0
- Источник: по данным репозитория, сентябрь 2026
- языки магазина
- RU · UZ
Хотите увидеть систему в работе?
Покажу систему вживую на демо-данных и расскажу о решениях, которые за ней стоят.
Запросить демонстрацию




