Проект для автоматической синхронизации расписания занятий из личного кабинета ВВГУ с Google Calendar. Позволяет извлекать расписание с сайта ВВГУ и автоматически создавать или обновлять события в календаре.
Доступна упрощенная Lite-версия, работающая только через GitHub Actions. Смотреть ветку: lite-version
В этом релизе закрыт крупный этап развития проекта:
- Web-UI: регистрация/авторизация, интерактивное расписание, личный кабинет, мобильная адаптация
- Telegram-бот: защищенные команды, кнопки «Синхронизировать» и «Статус», автоматические уведомления и логирование
- Calendar Sync: надежный парсер через Selenium, синхронизация в Google Calendar, APScheduler с историей запусков
- HTTPS: полное шифрование трафика через Caddy с internal CA и автоматическое обновление сертификатов
- Рефакторинг: frontend на Vite + React + TypeScript, единая конфигурация и улучшенное логирование
-
Web-интерфейс для управления планировщиком и ботом.
-
Telegram-бот для удаленной синхронизации расписания.
-
Автоматический парсинг расписания с сайта ВВГУ.
-
Создание и обновление событий в Google Calendar.
-
CLI и Web-интерфейс для получения и синхронизации расписания напрямую с Google Calendar
-
Парсинг расписания через headless Chrome (Selenium-Firefox)
-
Автоматическое добавление, обновление и удаление событий в Google Calendar
-
Напоминания: за 1 час до первой пары и за 10 минут до остальных
-
Поддержка OAuth и Service Account аутентификации
-
Фоновые задачи (APScheduler) и мгновенный запуск синхронизации
-
Telegram-бот с кнопками «Синхронизировать» и «Статус», автоматические уведомления и автопересылка логов
-
Полноценный Web-UI: регистрация, авторизация, интерактивное расписание, просмотр логов и истории задач, мобильная адаптация
-
HTTPS с Caddy (internal CA) и автоматическим обновлением сертификатов
-
Docker-compose (prod/dev), multi-stage сборка, healthchecks для Postgres и Selenium
-
Единая конфигурация через
.envи Pydantic Settings
Склонируйте репозиторий и перейдите в каталог:
git clone https://github.com/NkvMax/vvsu-schedule.git
cd vvsu-scheduleСоздайте .env из примера и заполните нужные поля:
cp .env.example .envЗапустите приложение:
make upДля доступа к Web-интерфейсу через SSH-туннель:
ssh -L 8443:localhost:443 user@server_ipПерейдите в браузере по адресу:
https://schedule.localhost:8443
Настройка Google Calendar (сервисный аккаунт)
-
Перейдите в Google Cloud Console.
-
Создайте или выберите существующий проект.
-
Перейдите в раздел API и службы → Библиотека, найдите и включите Google Calendar API.
-
Далее перейдите в API и службы → Учетные данные.
-
Нажмите Создать учетные данные → Сервисный аккаунт.
-
Заполните имя аккаунта и нажмите Создать.
-
Назначьте роль: Проект → Редактор и нажмите Готово.
-
В списке сервисных аккаунтов найдите созданный аккаунт, перейдите в него.
-
Перейдите во вкладку Ключи → Добавить ключ → Создать новый ключ.
-
Выберите тип ключа JSON и скачайте файл. Переименуйте его в
service_account.json. -
Загрузите полученный файл через Web-интерфейс приложения или поместите его по пути:
src/schedule_vvsu/json/credentials/service_account.json
Теперь приложение сможет автоматически взаимодействовать с вашим сервисным аккаунтом, который в свою очередь поделится календарем с вашим пользовательским аккаунтом. Далее вы сможете в обычном интерфейсе Google Calendar:
-
Поделиться календарем с другими пользователями
-
Настроить уровни доступа
-
Изменить цвета и другие параметры отображения
⭐️ Поставьте звездочку на GitHub, если проект оказался полезен.
Pull requests и предложения приветствуются!