6db48b16a7fbabc87ce3b100e5d95f46ef615161
🎵 Quixotic - Music Search Telegram MiniApp
Telegram miniapp для поиска и скачивания музыки
Установка
1. Клонирование и установка зависимостей
git clone <repository-url>
cd quixotic
yarn install
2. Сборка TypeScript проекта
# Сборка всего проекта (backend + frontend)
yarn build
# Или раздельно:
yarn build:backend # компилирует src/*.ts в dist/
yarn build:frontend # компилирует public/script.ts в public/dist/
3. Установка FFmpeg
macOS:
brew install ffmpeg
Ubuntu/Debian:
sudo apt update
sudo apt install ffmpeg
Windows: Скачайте с ffmpeg.org
4. Создание Telegram бота
- Напишите @BotFather в Telegram
- Создайте нового бота:
/newbot - Получите токен бота
- Настройте Web App:
/newapp
5. Настройка окружения
cp .env.example .env
Отредактируйте .env:
TELEGRAM_BOT_TOKEN=your_bot_token_here
WEB_APP_URL=https://your-domain.com
PORT=3000
Запуск
Разработка
# TypeScript разработка с hot reload
yarn dev
# Ручная сборка при необходимости
yarn build
Продакшн
# Сборка проекта
yarn build
# Запуск скомпилированного кода
yarn start
Docker (рекомендуется)
# С Traefik и SSL
docker-compose --env-file .env.docker up -d
# Простой запуск
docker-compose up -d
Структура проекта
quixotic/
├── src/ # TypeScript исходники
│ ├── server.ts # Express сервер (главный)
│ ├── bot.ts # Telegram бот
│ ├── soundcloud.ts # SoundCloud API (не работает)
│ └── database.ts # SQLite база данных
├── dist/ # Скомпилированный JavaScript
│ ├── server.js # Готовый к запуску сервер
│ └── ...
├── public/
│ ├── index.html # Web App интерфейс
│ ├── style.css # Стили
│ ├── script.ts # TypeScript исходник
│ └── dist/
│ ├── script.js # Скомпилированный frontend
│ └── script.js.map
├── database/ # SQLite файлы
├── .serena/memories/ # AI память проекта
├── tsconfig.json # TypeScript конфиг (backend)
├── tsconfig.frontend.json # TypeScript конфиг (frontend)
└── package.json
API Endpoints
POST /api/search- Поиск видеоPOST /api/convert- Конвертация в MP3GET /downloads/:filename- Скачивание файловGET /health- Проверка здоровья
База данных
SQLite с таблицами:
users- пользователи Telegramsearch_history- история поискаdownloads- загруженные файлы
Деплой
Heroku
- Установите Heroku CLI
- Создайте приложение:
heroku create quixotic-app
- Установите buildpacks:
heroku buildpacks:add --index 1 https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest.git
heroku buildpacks:add --index 2 heroku/nodejs
- Настройте переменные:
heroku config:set TELEGRAM_BOT_TOKEN=your_token
heroku config:set WEB_APP_URL=https://quixotic-app.herokuapp.com
- Деплой:
git push heroku main
VPS (Ubuntu)
# Обновление системы
sudo apt update && sudo apt upgrade -y
# Установка Node.js
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
# Установка FFmpeg
sudo apt install ffmpeg -y
# Клонирование проекта
git clone <repository-url>
cd quixotic
yarn install
# Настройка PM2
sudo npm install -g pm2
pm2 start src/server.js --name quixotic
pm2 startup
pm2 save
# Nginx (опционально)
sudo apt install nginx -y
# Настройте reverse proxy на порт 3000
Мониторинг
# Логи сервера
pm2 logs quixotic
# Статус
pm2 status
# Перезапуск
pm2 restart quixotic
Лицензия
MIT License
Description
Languages
TypeScript
65.8%
CSS
13.9%
HTML
13.3%
JavaScript
5.2%
Dockerfile
1.1%
Other
0.7%