Files
quixotic/README.md
Andrey Kondratev 7a7a189ef7 psql
2025-08-28 19:13:39 +05:00

214 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🎵 Quixotic - Music Search Telegram MiniApp
Telegram miniapp для поиска и скачивания музыки
## Установка
### 1. Клонирование и установка зависимостей
```bash
git clone <repository-url>
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 <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
```
## Мониторинг
```bash
# Логи сервера
pm2 logs quixotic
# Статус
pm2 status
# Перезапуск
pm2 restart quixotic
```
## Лицензия
MIT License