# 🎵 Quixotic - Music Search Telegram MiniApp Telegram miniapp для поиска и скачивания музыки ## Установка ### 1. Клонирование и установка зависимостей ```bash git clone cd quixotic yarn install ``` ### 2. Сборка TypeScript проекта ```bash # Сборка всего проекта (backend + frontend) yarn build # Или раздельно: yarn build:backend # компилирует src/*.ts в dist/ yarn build:frontend # компилирует public/script.ts в public/dist/ ``` ### 3. Установка FFmpeg **macOS:** ```bash brew install ffmpeg ``` **Ubuntu/Debian:** ```bash sudo apt update sudo apt install ffmpeg ``` **Windows:** Скачайте с [ffmpeg.org](https://ffmpeg.org/download.html) ### 4. Создание Telegram бота 1. Напишите [@BotFather](https://t.me/BotFather) в Telegram 2. Создайте нового бота: `/newbot` 3. Получите токен бота 4. Настройте Web App: `/newapp` ### 5. Настройка окружения ```bash cp .env.example .env ``` Отредактируйте `.env`: ```env TELEGRAM_BOT_TOKEN=your_bot_token_here WEB_APP_URL=https://your-domain.com PORT=3000 ``` ## Запуск ### Разработка ```bash # TypeScript разработка с hot reload yarn dev # Ручная сборка при необходимости yarn build ``` ### Продакшн ```bash # Сборка проекта yarn build # Запуск скомпилированного кода yarn start ``` ### Docker (рекомендуется) ```bash # С Traefik и SSL docker-compose --env-file .env.docker up -d # Простой запуск docker-compose up -d ``` ## Структура проекта ```bash 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` - Конвертация в MP3 - `GET /downloads/:filename` - Скачивание файлов - `GET /health` - Проверка здоровья ## База данных SQLite с таблицами: - `users` - пользователи Telegram - `search_history` - история поиска - `downloads` - загруженные файлы ## Деплой ### Heroku 1. Установите [Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli) 2. Создайте приложение: ```bash heroku create quixotic-app ``` 3. Установите buildpacks: ```bash heroku buildpacks:add --index 1 https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest.git heroku buildpacks:add --index 2 heroku/nodejs ``` 4. Настройте переменные: ```bash heroku config:set TELEGRAM_BOT_TOKEN=your_token heroku config:set WEB_APP_URL=https://quixotic-app.herokuapp.com ``` 5. Деплой: ```bash git push heroku main ``` ### VPS (Ubuntu) ```bash # Обновление системы 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 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 ``` ## Мониторинг ```bash # Логи сервера pm2 logs quixotic # Статус pm2 status # Перезапуск pm2 restart quixotic ``` ## Лицензия MIT License