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