Это современное Telegram Mini App (TMA) для открытия кейсов со скинами Dota 2, построенное на стеке Next.js 14 и Docker.
- Открытие кейсов: Реалистичная рулетка с плавной анимацией (Framer Motion).
- Честный RNG: Вероятность выпадения предметов основывается на весах, настраиваемых в админ-панели.
- Инвентарь: Управление выигрышами (Продажа за BP, Вывод, Просмотр истории).
- Массовая продажа: Функция "Продать всё" для быстрой очистки инвентаря.
- Дневные награды: Система ежедневных бонусов и заданий.
- Лидерборд: Глобальный рейтинг игроков по количеству BP.
- Реферальная система 2.0:
- Прямые бонусы (500-1500 BP) за регистрацию при приглашении.
- 10% комиссия от стоимости каждого кейса, открытого другом.
- Детальная статистика по каждому другу с учетом всей истории транзакций.
- Поддержка реферальных кодов и прямых ссылок.
- Управление кейсами: Создание, редактирование цен, цветов и редкости.
- Библиотека предметов: Глобальный репозиторий предметов для быстрого добавления в кейсы.
- Гибкая настройка: Изменение шансов выпадения и цен выкупа для каждого предмета.
- Две темы:
Classic (Steam 2003): Ретро-стиль с тактильным откликом и объемными кнопками.Dark (Dota Style): Современный темный интерфейс.
- Тактильный отклик: Интеграция Telegram Haptic Feedback на ключевых действиях.
- Native Navigation: Полная поддержка нативной кнопки "Назад" в Telegram.
- Безопасность: Блокировка системного зума и контекстных меню для ощущения нативного приложения.
- Frontend: Next.js 14 (App Router), Tailwind CSS, Framer Motion.
- Backend: Server Actions, Prisma ORM.
- Database: SQLite (для локальной разработки и легкого деплоя).
- Bot: Node.js скрипт для интеграции с Telegram API.
- Infrastructure: Docker & Docker Compose.
- Клонируйте репозиторий.
- Создайте файл
.envна основе следующих данных:# Токен Telegram-бота (используется для валидации initData на сервере) BOT_TOKEN=ваш_токен_бота TELEGRAM_BOT_TOKEN=ваш_токен_бота # Ключ Market API MARKET_API_KEY=ваш_market_api_key # Cloudflare Tunnel token (если используете tunnel сервис) TUNNEL_TOKEN=ваш_cloudflare_tunnel_token # Ссылка на Telegram-канал (опционально, для кнопки в боте) TELEGRAM_CHANNEL_URL= # Список Telegram ID супер-админов через запятую (без пробелов) # Пример: SUPER_ADMIN_IDS=123456789,987654321 SUPER_ADMIN_IDS= DATABASE_URL="file:./dev.db" NEXT_PUBLIC_APP_URL=ваш_cloudflare_url
- Если у вас есть доступ к админке, обязательно заполните
SUPER_ADMIN_IDS:- укажите только числовые Telegram ID;
- несколько ID разделяйте запятой;
- не храните персональные ID в коде, только в
.env.
- Запустите проект:
docker-compose up -d --build
- Убедитесь, что в репозитории нет реальных значений токенов (
BOT_TOKEN,TELEGRAM_BOT_TOKEN,MARKET_API_KEY,TUNNEL_TOKEN). - Все секреты должны храниться только в локальном
.env(файл уже игнорируется через.gitignore). - Если токен когда-то попал в Git, его нужно отозвать/пересоздать у провайдера.
- Проверка баланса Market API:
npm run script:market-balance - Очистка инвентарей пользователей:
npm run script:db-clear-inventories - Создание тестового кейса:
npm run script:db-seed-test-case - Обновление Dota кейсов:
npm run script:db-update-dota-cases - Добавление тестового предмета:
npm run script:db-add-test-item - Обновление цены тестового предмета:
npm run script:db-update-test-item-price
- Автор: Dev-i-ant
- При использовании проекта сохраняйте copyright и текст лицензии MIT.
Проект будет доступен внутри Telegram через ваш туннель или домен.
Разработано с использованием передовых практик Next.js и Telegram WebApp API.