Колесо Фортуны — это интерактивная лотерейная система, объединяющая Telegram-бота и современный веб-интерфейс. Проект позволяет проводить регулярные розыгрыши призов среди участников, которые могут регистрироваться через веб-приложение и получать уведомления через Telegram.
- Регистрация через веб-интерфейс с подтверждением оплаты
- Просмотр текущего призового фонда и списка участников
- Отслеживание времени до следующего розыгрыша
- Получение уведомлений о статусе заявки и результатах розыгрыша
- Просмотр истории победителей и шансов на выигрыш
- Подтверждение или отклонение заявок на участие
- Прямое добавление участников через Telegram-бота
- Управление розыгрышами (запуск, сброс)
- Просмотр статистики и истории
- Удаление участников
- Node.js и Express — серверная часть
- SQLite — база данных
- Telegraf — фреймворк для Telegram-бота
- Next.js и React — фреймворк и библиотека UI
- TypeScript — типизация кода
- Tailwind CSS — стилизация компонентов
├── functions/ # Backend и Telegram-бот
│ ├── db/ # База данных SQLite
│ ├── routes/ # API маршруты
│ ├── scripts/ # Вспомогательные скрипты
│ ├── services/ # Бизнес-логика
│ └── index.js # Точка входа
│
├── frontend/ # Next.js приложение
│ ├── public/ # Статические файлы
│ └── src/
│ ├── app/ # Страницы приложения
│ ├── components/ # React компоненты
│ └── lib/ # Утилиты и API-клиент
│
├── .env.example # Пример переменных окружения
└── README.md # Документация
- Node.js 18 или выше
- npm или yarn
- Telegram Bot Token (получить у @BotFather)
-
Клонирование репозитория
git clone https://github.com/your-username/fortune-wheel.git cd fortune-wheel -
Настройка переменных окружения
# Создайте файл .env в корне проекта cp .env.example .env # Отредактируйте .env, добавив BOT_TOKEN и ADMIN_ID
-
Запуск backend
cd functions npm install npm start -
Запуск frontend
cd frontend npm install npm run dev -
Доступ к приложению
- Backend API: http://localhost:8080
- Frontend: http://localhost:3000
- Создайте проект на Railway
- Подключите репозиторий
- Добавьте переменные окружения:
BOT_TOKEN— токен Telegram-ботаADMIN_ID— Telegram ID администратораHOST_URL— URL вашего бэкендаFRONTEND_URL— URL фронтенда для CORS
- Создайте проект на Vercel
- Импортируйте репозиторий, указав директорию
frontend - Добавьте переменную окружения:
NEXT_PUBLIC_API_URL— URL вашего бэкенда
- Clone the repository:
git clone <repository-url>
- Navigate to the project directory:
cd hooks - Install dependencies:
npm install
- Run the project:
npm start
- Link the project to Vercel:
vercel link
- Deploy the project:
vercel --prod
-
Регистрация участников
- Пользователь открывает веб-приложение через Telegram
- Вводит имя и подтверждает оплату
- Администратор получает уведомление и подтверждает участие
- Призовой фонд увеличивается на 100₽
-
Розыгрыш
- Автоматически запускается по расписанию
- Случайным образом выбирается победитель
- Все участники получают уведомления о результатах
- История победителей сохраняется
- Все React-компоненты должны начинаться с директивы
"use client"; - При добавлении новых зависимостей выполните
npm installв соответствующей директории - Используйте TypeScript для типизации всех новых компонентов и функций
# Запуск с отладкой
npm run dev
# Сборка проекта
npm run build
# Запуск тестов
npm test
# Очистка тестовых пользователей
node functions/scripts/clearTestUsers.js- Доступ к админ-функциям ограничен по Telegram ID
- Все действия логируются в консоли
- Проверка подлинности запросов через CORS и валидацию данных
- Telegram: @your_telegram_handle
- Email: your.email@example.com
- Официальный канал проекта
MIT License © 2023 Your Name
Сделано с ❤️ для участников розыгрышей