
✨ 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
228 lines
8.5 KiB
Markdown
228 lines
8.5 KiB
Markdown
# 🤖 Biveki Day Bot - Планировщик задач для пары
|
||
|
||
Telegram бот-планировщик задач, созданный специально для двоих - программиста 👨💻 и его девушки 💋.
|
||
|
||
## 🚀 Быстрый деплой через Docker
|
||
|
||
### 1. Подготовка переменных окружения
|
||
|
||
```bash
|
||
# Скопируйте пример файла переменных окружения
|
||
cp stack.env.example stack.env
|
||
|
||
# Отредактируйте файл с вашими данными
|
||
nano stack.env
|
||
```
|
||
|
||
**Обязательно настройте:**
|
||
- `DATABASE_URL` - URL вашей PostgreSQL базы данных
|
||
- `TELEGRAM_BOT_TOKEN` - токен вашего Telegram бота
|
||
|
||
### 2. Запуск приложения
|
||
|
||
```bash
|
||
# Автоматический деплой
|
||
./deploy.sh
|
||
|
||
# Или вручную
|
||
docker-compose up -d --build
|
||
```
|
||
|
||
### 3. Проверка работы
|
||
|
||
- **Health Check**: http://localhost:3000/health
|
||
- **Telegram Bot**: Отправьте `/start` боту
|
||
- **Логи**: `docker-compose logs -f bivekidaybot`
|
||
|
||
### 4. Управление контейнером
|
||
|
||
```bash
|
||
# Посмотреть статус
|
||
docker-compose ps
|
||
|
||
# Посмотреть логи
|
||
docker-compose logs -f bivekidaybot
|
||
|
||
# Перезапустить
|
||
docker-compose restart bivekidaybot
|
||
|
||
# Остановить
|
||
docker-compose down
|
||
|
||
# Обновить приложение
|
||
git pull && docker-compose up -d --build
|
||
```
|
||
|
||
📚 **Подробная документация по деплою**: [DEPLOY.md](DEPLOY.md)
|
||
|
||
## ✨ Возможности
|
||
|
||
- 📝 **Создание задач**: Личные и общие задачи
|
||
- ⏰ **Напоминания**: Автоматические уведомления
|
||
- 📊 **Статистика**: Отслеживание прогресса
|
||
- 🤝 **Совместная работа**: Общие задачи для двоих
|
||
- 📱 **Уведомления**: Мгновенные уведомления в Telegram
|
||
|
||
## 🎯 Типы задач
|
||
|
||
- 👤 **Личные** - задачи только для одного пользователя
|
||
- 🤝 **Общие** - задачи, которые видят оба пользователя
|
||
|
||
## ⏰ Планирование времени
|
||
|
||
### Обязательные поля:
|
||
- 📅 **Дата выполнения** - каждая задача должна иметь дату
|
||
- ⏰ **Время выполнения** - точное время для планирования
|
||
|
||
### Быстрый выбор даты:
|
||
- 📅 **Сегодня** - для срочных задач
|
||
- 📅 **Завтра** - планирование на следующий день
|
||
- 📅 **Послезавтра** - заблаговременное планирование
|
||
- 📅 **Другая дата** - ввод произвольной даты в формате ДД.ММ.ГГГГ
|
||
|
||
### Быстрый выбор времени:
|
||
- 🌅 **9:00** - утренние задачи
|
||
- 🌞 **12:00** - обеденное время
|
||
- 🌆 **18:00** - вечерние дела
|
||
- 🌙 **21:00** - поздние задачи
|
||
- ⏰ **Другое время** - ввод произвольного времени в формате ЧЧ:ММ
|
||
|
||
## 🎭 Роли пользователей
|
||
|
||
- 👨💻 **Программист** - для разработчика
|
||
- 💋 **Девушка** - для его второй половинки
|
||
|
||
## 🤖 Управление ботом
|
||
|
||
### Интерфейс:
|
||
- **Полностью кнопочное управление** - никаких команд!
|
||
- `/start` - единственная команда для начала работы
|
||
- Все остальные действия выполняются через интерактивные кнопки
|
||
- Интуитивно понятная навигация с возможностью возврата
|
||
|
||
### Главное меню:
|
||
- 📝 **Создать задачу** - пошаговое создание с выбором типа и приоритета
|
||
- 📋 **Мои задачи** - просмотр личных задач с навигацией
|
||
- 🤝 **Общие задачи** - задачи для обоих пользователей
|
||
- 👥 **Задачи партнера** - просмотр задач вашего партнера
|
||
- 📊 **Статистика** - ваша личная статистика
|
||
- 📈 **Общая статистика** - сравнительная статистика пары
|
||
- ⚙️ **Настройки** - настройки уведомлений
|
||
- ❓ **Помощь** - справочная информация
|
||
|
||
### Процесс работы:
|
||
1. **Регистрация**: Отправьте `/start` и выберите роль через кнопки
|
||
2. **Создание задачи**:
|
||
- Нажмите "📝 Создать задачу"
|
||
- Введите название задачи
|
||
- Выберите тип (личная/общая) через кнопки
|
||
- Выберите приоритет через кнопки
|
||
- **📅 Выберите дату**: сегодня, завтра, послезавтра или введите свою
|
||
- **⏰ Выберите время**: из готовых вариантов или введите свое
|
||
3. **Управление задачами**:
|
||
- Просматривайте списки через кнопки навигации
|
||
- Нажимайте на задачу для просмотра деталей
|
||
- Используйте кнопки действий (завершить, удалить, начать)
|
||
- Все задачи отображаются с датой и временем выполнения
|
||
|
||
## 🛠 Технологии
|
||
|
||
- **Backend**: NestJS + TypeScript
|
||
- **Database**: PostgreSQL + TypeORM
|
||
- **Bot**: Telegraf
|
||
- **Scheduler**: @nestjs/schedule
|
||
- **Environment**: Node.js
|
||
|
||
## 📦 Установка и запуск
|
||
|
||
1. Установите зависимости:
|
||
```bash
|
||
npm install
|
||
```
|
||
|
||
2. Создайте файл `.env`:
|
||
```env
|
||
DATABASE_URL=postgresql://username:password@host:port/database
|
||
TELEGRAM_BOT_TOKEN=your_bot_token
|
||
PORT=3000
|
||
NODE_ENV=development
|
||
```
|
||
|
||
3. Запустите приложение:
|
||
```bash
|
||
# Режим разработки
|
||
npm run start:dev
|
||
|
||
# Продакшн
|
||
npm run start:prod
|
||
```
|
||
|
||
## 📅 Система уведомлений
|
||
|
||
### Автоматические уведомления:
|
||
- ⏰ **Напоминания**: Проверяются каждую минуту
|
||
- 🌅 **Утренняя сводка**: Ежедневно в 9:00
|
||
- 📊 **Еженедельная статистика**: По воскресеньям в 20:00
|
||
|
||
### Взаимные уведомления:
|
||
- 📝 **Создание задач**: Партнер получает уведомление о каждой новой задаче
|
||
- ✅ **Завершение задач**: Партнер узнает о завершении задач
|
||
- 🤝 **Общие задачи**: Оба пользователя видят все общие задачи
|
||
- 👥 **Задачи партнера**: Каждый может видеть задачи своего партнера
|
||
- 📱 **Интерактивные уведомления**: Кнопки для быстрых действий в уведомлениях
|
||
|
||
## 🎨 Эмодзи и статусы
|
||
|
||
### Статусы задач:
|
||
- ⏳ Ожидание
|
||
- 🔄 В процессе
|
||
- ✅ Завершено
|
||
- ❌ Отменено
|
||
|
||
### Приоритеты:
|
||
- 🟢 Низкий
|
||
- 🟡 Средний
|
||
- 🟠 Высокий
|
||
- 🔴 Срочный
|
||
|
||
## 📝 Структура проекта
|
||
|
||
```
|
||
src/
|
||
├── entities/ # Сущности базы данных
|
||
│ ├── user.entity.ts
|
||
│ └── task.entity.ts
|
||
├── services/ # Бизнес-логика
|
||
│ ├── user.service.ts
|
||
│ ├── task.service.ts
|
||
│ ├── telegram-bot.service.ts
|
||
│ └── reminder.service.ts
|
||
├── config/ # Конфигурация
|
||
│ └── database.config.ts
|
||
└── app.module.ts # Главный модуль
|
||
```
|
||
|
||
## 🔧 Разработка
|
||
|
||
```bash
|
||
# Запуск в режиме разработки
|
||
npm run start:dev
|
||
|
||
# Сборка
|
||
npm run build
|
||
|
||
# Тесты
|
||
npm run test
|
||
|
||
# Линтинг
|
||
npm run lint
|
||
```
|
||
|
||
## 📄 Лицензия
|
||
|
||
Частный проект для личного использования.
|
||
|
||
---
|
||
|
||
Сделано с ❤️ для планирования совместных задач!
|