Мхитар Манасян bestmdidi Паспорт верифицирован
Сайты, Telegram-боты и Mini Apps - Next.js, Nest.js, Node.js
Рейтинг
29 526
№ 26 в каталоге
Отзывы
Профессионализм
10/10
Коммуникация
10 /10
Город
Москва
Опыт работы
6 лет
На сайте с
2022 года
Юридический статус
Самозанятый
Эксперт
Национальной Гильдии Фрилансеров
Freelance.Boutique
Премиум-сервис для лучших исполнителей

Telegram Mini App для белорусского магазина цифровых товаров PlayStation: игры, подписки, донаты. Парсер PS Store, приём платежей, админ-панель | React.js, Nest.js, PostgreSQL

Используемые навыки Nest.js PostgreSQL React.js Telegram API Typescript

Описание

Клиент - белорусский магазин цифровых товаров PlayStation. Пользователи покупают игры и их издания, подписки PS Plus и EA Play, внутриигровую валюту и пополнение кошелька PSN, платят в белорусских рублях, товары выдаются через зарубежные регионы PS Store - Украина, Турция, Индия, Польша.

Цель - перенести продажи в Telegram и получить полноценный e-commerce внутри мессенджера: Mini App на React.js (Redux Toolkit, Vite, Tailwind CSS), backend на Nest.js (Node.js, TypeScript) с PostgreSQL и Prisma, отдельный парсер PS Store на Node.js, админ-панель на React.js и инфраструктура в Docker на AWS.

Ключевые требования:
- каталог на десятки тысяч позиций с актуальными ценами, скидками и метаданными из PS Store - без ручного ведения базы;
- очереди и фоновые задачи на Redis + BullMQ: парсинг, рассылки, автоотмена заказов;
- онлайн-оплата через эквайринг и ручные переводы по карте с подтверждением чеков;
- автоматизация выдачи: пулы кодов-ваучеров по регионам и ручная выдача через аккаунты;
- админ-панель, из которой управляется весь бизнес: цены, заказы, рассылки, промокоды;
- маркетинговая аналитика (GA4, Meta Conversions API) с атрибуцией рекламных кампаний.

Ключевая сложность - каталог живёт на стороне PlayStation и постоянно меняется: цены, скидки, издания, региональная доступность.

Решение

Монорепозиторий из 4 приложений и общего пакета: backend на Nest.js 10 (Node.js, TypeScript) + Prisma + PostgreSQL 16 с очередями Redis + BullMQ, отдельный Node.js-сервис парсера, Mini App на React.js 19 + Redux Toolkit + Vite + Tailwind CSS, админ-панель на React.js с JWT-авторизацией.

Парсер PS Store: обход GraphQL API по 4 регионам - игры и издания (Standard, Deluxe, Ultimate), цены и скидки со сроками действия, цены для подписчиков PS Plus, метаданные (жанры, языки озвучки и субтитров, обложки, PS4/PS5, предзаказы), внутриигровая валюта отдельным циклом. Режимы полного обхода и только новинок, финализация цикла: удаление пропавших из стора позиций, сброс истёкших скидок. После прогона бот присылает админу дамп базы, при сбоях - алерты.

Ценообразование: настраиваемая лестница наценки по каждому региону, автопересчёт в белорусские рубли, поддержка минорных единиц валют (турецкие куруши, польские гроши).

Выдача товара: Украина - вручную через аккаунт клиента (логин, пароль и резервные коды шифруются AES-256-GCM) или новый аккаунт; Турция, Индия, Польша - пулы кодов-ваучеров, жадный алгоритм подбирает комбинацию номиналов под сумму корзины с минимальным остатком и учётом склада. Коды резервируются при заказе, при низком остатке админу приходит алерт.

Платежи: эквайринг bePaid с подписанными вебхуками + ручной перевод по карте - бот выдаёт реквизиты из пула карт, клиент присылает чек, админ подтверждает инлайн-кнопками. Конечный автомат статусов заказа, автоотмена неоплаченных по расписанию, промокоды, реферальная программа.

Telegram-бот внутри бэкенда (Telegram API): HMAC-проверка initData (приложение не работает вне Telegram), deep links на игру, издание, корзину, избранное и реферальные ссылки с рекламной атрибуцией, уведомления клиенту и админу, массовые рассылки с картинкой, кнопкой и статистикой доставки.

Mini App: полноэкранный режим, safe-area, тёмная и светлая тема с подхватом схемы Telegram до первой отрисовки, скелетон-загрузчики, анимации Framer Motion, бесконечный скролл, нечёткий поиск на pg_trgm с автодополнением, фильтры по платформе, цене, жанрам, скидкам и русскому языку, избранное с уведомлением о скидках, корзина с автоподбором ваучеров.

Админ-панель: каталог и лестницы цен, подписки, ваучеры с массовой загрузкой кодов, заказы с фильтрами, промокоды и рефералка, пользователи, карты для ручной оплаты, FAQ и инфостраницы, рассылки с историей, управление парсером с логами, аналитика поисковых запросов.

Инфраструктура: Docker Compose (PostgreSQL, Redis, backend, парсер, Nginx, certbot), AWS EC2 с ежедневными снапшотами, SSL Let's Encrypt, DNS на Cloudflare, CI/CD на GitHub Actions с деплоем по пушу в main. Переезд проекта с VPS на AWS без потери данных. Аналитика: GA4 с UTM из параметров запуска, Meta Conversions API с серверной отправкой событий покупки и дедупликацией, прелендинг с Meta Pixel.

Результат

Проект в продакшене, с реальными платежами и клиентами. Каталог порядка 18 000 изданий игр, тысячи пользователей, сотни выполненных заказов, 4 региона и несколько типов товаров.

На практике это работает так: парсер сам поддерживает каталог в актуальном состоянии, алгоритм без оператора подбирает комбинации ваучеров под сумму корзины, бот ведёт клиента от заказа до выдачи и уведомляет админа на каждом шаге. Владелец управляет бизнесом из одной админ-панели: цены и наценки, ваучеры, заказы, промокоды, рассылки, парсер.

Отдельно выполнен переезд проекта с VPS на AWS без потери данных, с плановым режимом техработ на время миграции.

Оценили проект:

Другие проекты

Все проекты →
Веб-разработка и IT CommerceAPI - SaaS-платформа для интернет-магазинов с динамическим ORM и no-code конструктором каталогов | Next.js, Nest.js, PostgreSQL, Redis
CommerceAPI - SaaS-платформа для интернет-магазинов с динамическим ORM и no-code конструктором каталогов | Next.js, Nest.js, PostgreSQL, Redis
89
Веб-разработка и IT PropFirmWay - платформа для сравнения проп-трейдинговых фирм: каталог челленджей, рейтинги и отзывы трейдеров, AI-скрейпер, SEO-ядро | Next.js, Nest.js, Node.js
PropFirmWay - платформа для сравнения проп-трейдинговых фирм: каталог челленджей, рейтинги и отзывы трейдеров, AI-скрейпер, SEO-ядро | Next.js, Nest.js, Node.js
112
Веб-разработка и IT Trenergy - SaaS для фитнес-тренеров: Telegram Mini App, бот и панель управления. Тренировки, питание с КБЖУ, прогресс, чаты, оплата | React.js, Nest.js, Node.js
Trenergy - SaaS для фитнес-тренеров: Telegram Mini App, бот и панель управления. Тренировки, питание с КБЖУ, прогресс, чаты, оплата | React.js, Nest.js, Node.js
35