Агрегатор обновлений единого календарного плана спортивных мероприятий Министерства спорта России
- веб-приложение
- хорошо смотрится как на десктопных, так и на мобильных устройствах
- позволяет просматривать список событий
- поддерживает все основные фильтры
- позволяет записываться и отменять запись на события
- позволяет добавлять события в Google Календарь
- поддерживает авторизацию пользователя, в том числе через аккаунт Яндекс
- получает от парсера наборы данных из обновлённого PDF и сопоставляет их с базой, попутно обновляя её
- парсер:
- точно распознаёт содержание PDF-файла
- проверяет актуальность файла по указанию планировщика
- готов к изменению ссылки на файл на странице Минспорта
- планировщик / сервис уведомлений:
- позволяет управлять частотой проверки обновлений PDF-файла
- отправляет необходимые уведомления пользователям в веб-приложение и на почту
Проект состоит из микросервисов, предназначенных для развёртывания в Docker:
- веб-приложение
- парсер
- сервис уведомлений
- Seq — система сбора логов и метрик
- PostgreSQL — база данных
- Traefik — обратный прокси
- усовершенствовать систему рекомендаций, чтобы она учитывала больше персональных особенностей
- добавить возможность подключения уведомлений через Telegram-бота
- добавить больше вариантов просмотра календарного плана
- добавить карту предстоящих событий
- расширить спектр настроек уведомлений
- интегрировать Яндекс.Календарь и другие подобные сервисы
Note
Мы отказались от использования git submodules
и git subtree
из-за периодически возникающей путаницы при
отслеживании изменений в монорепозиториях. Данный репозиторий представляет собой единую точку для работы с проектом,
лишённую этих недостатков.
- Клонируйте репозиторий и перейдите в его папку.
- Клонируйте репозитории сервисов, входящих в состав проекта по SSH (рекомендуется):
git clone [email protected]:code-418-dpr/SportHub-web.git services/SportHub-web
git clone [email protected]:code-418-dpr/SportHub-parser.git services/SportHub-parser
git clone [email protected]:code-418-dpr/SportHub-notification-service.git services/SportHub-notification-service
или по HTTPS:
git clone https://github.com/code-418-dpr/SportHub-web.git services/SportHub-web
git clone https://github.com/code-418-dpr/SportHub-parser.git services/SportHub-parser
git clone https://github.com/code-418-dpr/SportHub-notification-service.git services/SportHub-notification-service
После этого вы можете вносить изменения в каждый из сервисов по-отдельности (в соответствии с инструкциями, описанными в соответствующих README).
- Установите проект по инструкции выше.
- Создайте файл
.env
на основе .env.template и задайте все указанные там параметры. - Установите Docker.
- Теперь запускать проект на сервере можно командой:
docker compose --profile server up -d --build
При модификации сервисов проекта и их тестировании может потребоваться создание файлов .env для каждого из них. Однако, при запуске всех сервисов в одном контейнере (из этого репозитория) их не должно быть. Чтобы не удалять их, для запуска сервисов на локальном устройстве можно воспользоваться следующим набором команд:
mv ./services/SportHub-web/.env ./services/SportHub-web/_.env
mv ./services/SportHub-parser/.env ./services/SportHub-parser/_.env
docker compose --profile local up -d --build
mv ./services/SportHub-web/_.env ./services/SportHub-web/.env
mv ./services/SportHub-parser/_.env ./services/SportHub-parser/.env