Telegram Web App для покупки и отправки криптовалютных подарков.
Проект состоит из трех основных компонентов:
- Bot - Telegram бот (Grammy.js)
- Client - Vue.js PWA Web App
- Server - Express.js API
- Databases - MongoDB и Redis
gift-tg-shop/
├── bot/ # Telegram Bot (Grammy.js)
├── client/ # Web App (Vue.js + Vite)
├── server/ # API Server (Express + TypeScript)
├── docker-compose.yaml # Production
├── docker-compose.dev.yaml # Development
└── .env.example # Пример переменных окружения
- Node.js 18+
- Docker и Docker Compose
- TUNA CLI (для туннелей в разработке)
- Скопируйте
.env.exampleв.envв корне проекта:
cp .env.example .env- Заполните обязательные переменные в
.env:
# Токены
BOT_TOKEN=your_bot_token
CRYPTO_PAY_API_TOKEN=your_crypto_pay_token
TUNA_TOKEN=your_tuna_token
# Базы данных
MONGODB_URI=mongodb://root:640436123qwe@localhost:27017/giftshop?authSource=admin
MONGO_ROOT_USERNAME=root
MONGO_ROOT_PASSWORD=640436123qwe
REDIS_PASSWORD=1234568
# JWT
JWT_SECRET=your-jwt-secret
# Поддержка
SUPPORT_CHAT_ID=your_telegram_chat_idВ терминале 1:
docker compose -f docker-compose.dev.yaml up mongodb redisВ терминале 2:
cd server
npm install
npm run devВ терминале 3:
cd client
npm install
npm run devКлиент автоматически найдет свободный порт (обычно 3000, 3001 или 3002).
В терминале 4 (туннель для сервера):
TUNA_TOKEN=your_tuna_token tuna http localhost:4000 --subdomain=local-tuna-serverВ терминале 5 (туннель для клиента):
TUNA_TOKEN=your_tuna_token tuna http localhost:XXXX --subdomain=local-tuna-clientГде XXXX - порт, на котором запустился клиент.
Обновите .env с URL туннелей:
WEBAPP_URL=https://local-tuna-client.ru.tuna.am
SERVER_URL=https://local-tuna-server.ru.tuna.am
VITE_API_URL=https://local-tuna-server.ru.tuna.am
WEBHOOK_DOMAIN=https://local-tuna-server.ru.tuna.amВ терминале 6:
cd bot
npm install
npm run dev- Найдите вашего бота в Telegram
- Отправьте команду
/start - Нажмите кнопку "Open Gift Shop"
- Web App должно открыться внутри Telegram
Для удобства разработки рекомендуется использовать локальный режим:
- Базы данных в Docker
- Приложения запущены локально с hot reload
- TUNA туннели для доступа из Telegram
- Vue 3 + TypeScript
- Tailwind CSS + DaisyUI
- Vue Router + Pinia
- Vite
- Telegram Web App SDK
- Node.js + TypeScript
- Express.js
- MongoDB + Mongoose
- Redis + IORedis
- JWT Authentication
- Socket.IO
- Crypto Pay API
- Grammy.js
- Node.js + TypeScript
- Polling режим (для разработки)
- Docker + Docker Compose
- TUNA туннели (для разработки)
- MongoDB + Redis в контейнерах
Для продакшн развертывания:
docker compose -f docker-compose.yaml up -dMIT