К содержимому
Все работы

Vext

Страница-визитка и физическая карта, которая открывает её по касанию.

vext.run
Заказчик
VextRun
Год
2025
Отрасль
Сервисы для бизнеса
Формат
Веб-сервис
Главная страница vext.run

О проекте

Задача и решение

Задача

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

Что мы сделали

Мы спроектировали и разработали сервис под ключ: конструктор страницы с виджетами (ссылки, FAQ, прайс, текстовые блоки), публичные профили, NFC и QR-карты, подписку с автосписанием, промокоды и админку для выпуска партий карт.

Сервис работает с 17 мая 2025 года. С тех пор он прошёл ребрендинг в VextRun, а мы продолжаем его развивать: новые виджеты, единый реестр карт и автопродление подписки.

Состав работ

Что вошло в проект

  • Конструктор страницы с виджетамиПродукт
  • NFC и QR-карты, выпуск партийРазработка
  • Подписка, автосписание и чекиБиллинг
  • Админка, статистика и метрикиРазработка

Как это устроено

Решения, на которых держится проект

Что каждое решение даёт бизнесу и как оно сделано технически.

  1. (01)

    Оплата не списывается дважды

    Клиенты платят ровно столько, сколько должны, а поддержке не приходится разбирать спорные платежи вручную.

    Под капотом

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

  2. (02)

    Промокод не уходит сверх лимита

    Маркетинг запускает акции и знает точно: сто промокодов — это сто активаций, даже если все придут одновременно.

    Под капотом

    Активация — один условный UPDATE с проверкой лимита в той же транзакции, что и регистрация. Бонусные месяцы начисляются при оплате ровно один раз благодаря отметке о выдаче.

  3. (03)

    Касание открывает страницу мгновенно

    Визитку подносят к телефону на встрече — страница должна открыться раньше, чем собеседник отвлечётся.

    Под капотом

    Счётчик касаний пишется в Redis уже после ответа, а в PostgreSQL статистика сливается пачкой раз в 10 секунд. Сервер работает на всех ядрах через node:cluster, фоновые задачи выполняет ровно один процесс.

  4. (04)

    Защита аккаунтов и инфраструктуры

    Чужую страницу нельзя взломать перебором пароля, а сервис нельзя использовать как точку атаки на другие системы.

    Под капотом

    Пароли на Argon2id, капча, ограничение частоты запросов в Redis. Прокси аватаров проверяет каждый IP по 16 закрытым диапазонам и закрепляет соединение за проверенным адресом против DNS rebinding.

Технологии

Стек проекта

Интерфейс
  • Next.js 16
  • React 19
  • TypeScript
Данные
  • PostgreSQL
  • Drizzle ORM
  • Redis
  • S3
Платежи и почта
  • ЮKassa
  • Resend
Безопасность
  • Argon2id
  • Cap.js
  • Rate limiting
  • SSRF-фильтр
Сервер
  • node:cluster
  • Prometheus
  • Docker
Качество
  • Vitest
  • 219 тестов

Нужен похожий проект?

Написать нам
Следующий проектMituSaaS для ведения мероприятий в прямом эфиреГлавная страница mitu.run