Skip to content

NkvMax/vvsu-schedule

Repository files navigation

Schedule-VVSU

Python FastAPI Pydantic SQLAlchemy PostgreSQL Selenium APScheduler PyTelegramBotAPI React TypeScript Vite Caddy Docker OAuth Stars Forks License

VVSU Schedule Hero Banner

Проект для автоматической синхронизации расписания занятий из личного кабинета ВВГУ с Google Calendar. Позволяет извлекать расписание с сайта ВВГУ и автоматически создавать или обновлять события в календаре.

Tip

Доступна упрощенная Lite-версия, работающая только через GitHub Actions: lite-version
Также доступна Lite Self-Hosted версия для запуска на своем сервере: lite-selfhosted

Screenshots

Open gallery

Control center: status & actions
Control center

Live logs streaming in UI
Live logs
Bot & credentials settings
Settings

Что нового в v1.0.0

В этом релизе закрыт крупный этап развития проекта:

  • 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


Быстрый старт (Docker)

Развернуть

Склонируйте репозиторий и перейдите в каталог:

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 (сервисный аккаунт)
  1. Перейдите в Google Cloud Console.

  2. Создайте или выберите существующий проект.

  3. Перейдите в раздел API и службыБиблиотека, найдите и включите Google Calendar API.

  4. Далее перейдите в API и службыУчетные данные.

  5. Нажмите Создать учетные данныеСервисный аккаунт.

  6. Заполните имя аккаунта и нажмите Создать.

  7. Назначьте роль: Проект → Редактор и нажмите Готово.

  8. В списке сервисных аккаунтов найдите созданный аккаунт, перейдите в него.

  9. Перейдите во вкладку КлючиДобавить ключСоздать новый ключ.

  10. Выберите тип ключа JSON и скачайте файл. Переименуйте его в service_account.json.

  11. Загрузите полученный файл через Web-интерфейс приложения или поместите его по пути:

src/schedule_vvsu/json/credentials/service_account.json

Теперь приложение сможет автоматически взаимодействовать с вашим сервисным аккаунтом, который в свою очередь поделится календарем с вашим пользовательским аккаунтом. Далее вы сможете в обычном интерфейсе Google Calendar:

  • Поделиться календарем с другими пользователями

  • Настроить уровни доступа

  • Изменить цвета и другие параметры отображения


⭐️ Поставьте звездочку на GitHub, если проект оказался полезен.

Pull requests и предложения приветствуются!

About

Auto-sync VVSU university timetable with Google Calendar and Telegram bot. FastAPI + React + Docker-based scheduler.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors