🚀 Initial commit: Biveki Day Bot with Docker deployment

 Features:
- 🤖 Telegram bot for task management between programmer and girlfriend
- 📝 Task creation with types (personal/shared) and priorities
-  Time-based reminders and notifications
- 📊 Statistics and progress tracking
- 🤝 Shared tasks for couples

🛠 Tech Stack:
- Backend: NestJS + TypeScript
- Database: PostgreSQL + TypeORM
- Bot: Telegraf
- Deployment: Docker + Docker Compose

🐳 Docker Deployment:
- Multi-stage Dockerfile for optimized builds
- Docker Compose with environment variables
- Health checks and automatic restarts
- Production-ready configuration

📦 Files included:
- Complete NestJS application
- Docker deployment configuration
- Environment variables setup
- Deployment scripts and documentation
- Health monitoring and logging
This commit is contained in:
Bivekich
2025-06-26 21:40:27 +03:00
commit 0ce19f8182
27 changed files with 15641 additions and 0 deletions

158
DEPLOY.md Normal file
View File

@ -0,0 +1,158 @@
# 🚀 Инструкция по деплою Biveki Day Bot
## 📋 Подготовка к деплою
### 1. Переменные окружения
Убедитесь, что в файле `stack.env` указаны правильные значения:
```env
# Основные настройки приложения
NODE_ENV=production
PORT=3000
TZ=Europe/Moscow
# База данных (ваша облачная PostgreSQL)
DATABASE_URL=postgresql://username:password@host:port/database
# Telegram Bot Token
TELEGRAM_BOT_TOKEN=your_real_bot_token_here
# Дополнительные настройки для продакшена
LOG_LEVEL=info
MAX_CONNECTIONS=10
```
### 2. Обязательные переменные для изменения:
- `DATABASE_URL` - URL вашей облачной PostgreSQL базы данных
- `TELEGRAM_BOT_TOKEN` - токен вашего Telegram бота
## 🐳 Деплой через Docker Compose
### Команды для деплоя:
```bash
# 1. Клонируйте репозиторий (если еще не сделали)
git clone <your-repo-url>
cd bivekidaybot
# 2. Убедитесь, что stack.env настроен правильно
nano stack.env
# 3. Соберите и запустите контейнер
docker-compose up -d --build
# 4. Проверьте статус
docker-compose ps
# 5. Посмотрите логи
docker-compose logs -f bivekidaybot
```
### Управление контейнером:
```bash
# Остановить контейнер
docker-compose down
# Перезапустить контейнер
docker-compose restart bivekidaybot
# Обновить приложение
git pull
docker-compose up -d --build
# Посмотреть логи
docker-compose logs -f bivekidaybot
# Войти в контейнер для отладки
docker-compose exec bivekidaybot sh
```
## 🔍 Проверка работоспособности
1. **Health Check**: `http://your-server:3000/health`
2. **Telegram Bot**: Отправьте `/start` боту
3. **Логи**: `docker-compose logs bivekidaybot`
## 📊 Мониторинг
### Проверка статуса контейнера:
```bash
docker-compose ps
```
### Просмотр ресурсов:
```bash
docker stats bivekidaybot-app
```
### Проверка health check:
```bash
curl http://localhost:3000/health
```
## 🔧 Настройки для продакшена
### Рекомендуемые изменения в stack.env:
```env
# Для продакшена рекомендуется отключить synchronize в TypeORM
NODE_ENV=production
# Настройте правильный часовой пояс
TZ=Europe/Moscow
# Ограничьте количество подключений к БД
MAX_CONNECTIONS=10
```
## 🚨 Устранение неполадок
### Проблемы с базой данных:
1. Проверьте правильность `DATABASE_URL`
2. Убедитесь, что БД доступна извне
3. Проверьте настройки SSL для облачной БД
### Проблемы с Telegram ботом:
1. Проверьте правильность `TELEGRAM_BOT_TOKEN`
2. Убедитесь, что токен активен
3. Проверьте, что бот не используется в другом месте
### Логи и отладка:
```bash
# Подробные логи
docker-compose logs -f --tail=100 bivekidaybot
# Войти в контейнер
docker-compose exec bivekidaybot sh
# Перезапуск с полной пересборкой
docker-compose down
docker-compose up -d --build --force-recreate
```
## 🔄 Обновление приложения
```bash
# 1. Остановить контейнер
docker-compose down
# 2. Получить последние изменения
git pull
# 3. Пересобрать и запустить
docker-compose up -d --build
# 4. Проверить статус
docker-compose ps
docker-compose logs -f bivekidaybot
```
## 📝 Примечания
- База данных не включена в Docker Compose, так как используется облачная
- Контейнер автоматически перезапускается при сбоях
- Health check проверяет работоспособность каждые 30 секунд
- Логи ротируются автоматически (максимум 3 файла по 10MB)