Все кейсы

VEYA2026veyamobile.tech

Пополнение мобильных во всех 27 странах ЕС: продукт на 6 языках, платёжный шлюз и реклама с автолестницей бюджета

Суть за 10 секунд

Сервис пополнения prepaid-номеров во всех 27 странах ЕС для TELEflash GmbH: четыре шага без регистрации, 6 языков, 150 операторов, банковская безопасность и Google Ads с собственной автоматикой бюджета.

27
стран ЕС
150
операторов
6
языков
69
автотестов
10
рекламных кампаний
383
ключевых слова
1037
минус-слов
15 523
строк кода
VEYA

Задача

Нужен был быстрый сервис пополнения без регистрации для 27 стран, с корректными ценами в неевровых валютах, законным cookie-контуром и рекламой, готовой к масштабированию.

Результат

Работающий продукт с 150 операторами, 69 автотестами, строгой CSP и рекламной структурой на 10 кампаний. Запуск платежей ждёт договора с провайдером — граница интеграции подготовлена.

Что сделано

  • Next.js 16 + React 19 + TypeScript strict: 14 страниц, API-роуты, 29 компонентов; поток «номер → оператор → сумма → оплата» с распознаванием страны по номеру (libphonenumber)
  • Данные: 27 стран, 150 операторов, 113 логотипов (импорт, генерация и санитизация SVG скриптами), 6 неевровых валют с курсом ЕЦБ и серверным округлением
  • i18n: 6 языков, 7 юридических документов × 6 языков, определение страны по IP/CDN/Accept-Language уже на сервере
  • Платёжный контур: адаптер под контракт внешнего шлюза, hand-off на форму оплаты, правило «возврат браузера ≠ оплата», обработчик вебхука
  • Безопасность: CSP с nonce на каждый запрос, HSTS, X-Frame DENY, Permissions-Policy, rate-limit, валидация Zod на клиенте и сервере, ноль персональных данных в логах
  • Тесты: 55 unit (Vitest) + 14 e2e (Playwright, Pixel 7 и десктоп): контракт шлюза, паритет цен, валидность логотипов, доступность (16 px, 44 px, фокус-ловушка)
  • Google Ads: генератор CSV из данных сайта, 10 кампаний / 45 групп / 383 ключа / 1037 минус-слов / 45 RSA на DE, IT, FR, ES, PL; валидатор политик Google
  • Автоматика бюджета: скрипт «лестница ×2 при 55 % расхода» + собственный счётчик кликов (разбор nginx-лога, фильтр AdsBot, дедуп, Telegram-алерты)
  • Инфраструктура: systemd-службы, nginx с Let's Encrypt, деплой-скрипт со staged-сборкой и автооткатом

Экраны

Изучить детали — полная картина

Задача

Немецкому оператору связи нужен был витринный сервис: человек вводит номер, система сама понимает страну и оператора, показывает сумму в его валюте и отправляет на оплату. Без аккаунтов и лишних полей. При этом — законный cookie-контур, Impressum, семь юридических документов на шести языках и реклама, готовая к раскатке на пять стран.

Продукт

Next.js 16 и React 19 с TypeScript strict, Tailwind 4, Radix и Motion. Главная страница и есть продукт: шаг «номер» с флагом по IP, шаг «оператор» с распознаванием по префиксу (libphonenumber) и подсказкой «похоже на Vodafone», шаг «сумма», шаг «оплата». Посадочные из рекламы предзаполняют страну, оператора и сумму через параметры URL.

Данные: 27 стран, 150 операторов, 113 логотипов, импортированных, сгенерированных и санитизированных скриптами; шесть неевровых валют с курсом ЕЦБ, серверным расчётом и округлением вверх. Шесть языков, около 200 ключей интерфейса и 6680 строк юридических текстов.

Платежи и безопасность

Граница интеграции с платёжным провайдером вынесена в адаптер под его контракт, с hand-off на форму оплаты и обработчиком вебхука. Жёсткое правило: возврат браузера со страницы оплаты не считается оплатой — только подтверждение сервера.

CSP с nonce на каждый запрос и strict-dynamic, HSTS, X-Frame DENY, Permissions-Policy, rate-limit, одинаковая валидация Zod на клиенте и сервере, персональные данные не логируются и не попадают в аналитику — функция трекинга отклоняет ключи с PII.

Качество

55 unit-тестов на Vitest и 14 e2e на Playwright (Pixel 7 и десктоп): контракт шлюза, паритет цен между экранами, XML-валидность логотипов, доступность (16 px текст, 44 px цели, фокус-ловушка), запрет на неверное юрлицо в текстах.

Реклама и автоматика бюджета

Генератор CSV для Google Ads Editor прямо из данных сайта: 27 языковых файлов, боевой импорт на DE, IT, FR, ES, PL — 10 кампаний, 45 групп, 383 ключевых слова (урезано с 10 426 до тех, что реально приводят), 1037 минус-слов, 45 адаптивных объявлений, встроенный валидатор политик Google.

Проблема: данные Google Ads отстают на три часа, а банк блокирует карту за резкие скачки списаний. Решение — скрипт «лестница ×2 при 55 % расхода» плюс собственный счётчик кликов на сервере: разбирает nginx-лог, отфильтровывает AdsBot и ревьюеров, дедуплицирует и шлёт алерты в Telegram.

Честно о том, что не доделано

  • Платежи не верифицируются и пополнение не выполняется до подписания договора с провайдером — граница интеграции готова, поставщика нет.
  • Сайт в режиме превью с noindex до запуска: sitemap, OpenGraph и schema.org включаются после снятия флага.
  • 111 меток «на юридическую проверку» в переводах документов.

Стек Next.js 16React 19TypeScriptTailwind 4RadixMotionZodlibphonenumbergeoipPlaywrightVitestGoogle Ads Scripts

заявка

Расскажите идею. Пары строк достаточно.

Ответим в течение рабочего дня в удобном вам мессенджере. Никаких рассылок.

Или сразу в Telegram: @moreteploe

Сюда нужен @ник, телефон или почта — иначе мы вас не найдём.
Удобный способ связи

Отправляя, вы соглашаетесь с обработкой данных для ответа на заявку.