Развернутый проект: https://hack.innohassle.ru
- Видео-презентация: YouTube, RuTube, Яндекс.Диск
- Видео-демонстрация: Мини-версия
- Презентация: PDF в этом репозитории или на Figma Slides
- Репозиторий: https://github.com/hackathonsrus/pp_50040_pfo_ta_onezeroeight_69
Important
Для работы уведомлений необходимо разрешить их в браузере.
- Наше решение - система поиска и просмотра спортивных мероприятий из Единого календарного плана Минспорта России.
- Целевая аудитория — спортсмены и тренеры, и другие люди, интересующиеся спортом, которые хотят узнавать о предстоящих соревнованиях по интересующему их видам спорта / дисциплинам.
- Интерфейс выполнен в виде веб-приложения, где пользователь может использовать поле поиска или фильтры для поиска мероприятий.
- Также есть возможность просмотра детальной информации о мероприятии или об отдельном виде спорта.
- В качестве фронтенда используется фреймворк React с использованием библиотеки shadcn/ui.
- В качестве бэкенда используется сервер на FastAPI, который обращается к базе данных MongoDB для выдачи данных о мероприятиях, а также обеспечивает аутентификацию пользователей.
- На сервере предварительно загружаются данные из парсера, который берёт данные из pdf-файлов, размещенных на сайте Минспорта России.
- Пользователь также может подписаться на получение уведомлений о предстоящих мероприятиях по интересующему его виду спорта или по конкретному мероприятию, разрешив уведомления в браузере.
Используется база данных MongoDB для легкого горизонтального масштабирования.
Сервер FastAPI запускается через менеджер процессов Gunicorn, который способен запускать несколько воркеров для обработки запросов, что позволяет обрабатывать большое количество запросов.
Модульная архитектура приложения позволяет легко добавлять новый функционал и улучшать существующий.
(1) Парсер парсит PDF-файлы с сайта Минспорта, нормализует данные и (2) загружает в базу данных. Пользователи, используя веб-интерфейс (3), выбирают интересующие их фильтры. Браузер делает запрос к API (4), бэкенд получает данные из базы данных, применяя фильтры и сортировки (5) и возвращает результаты пользователю.
Протестировано на Ubuntu 22.04 с архитектурой amd64.
- Установить Docker и Docker Compose последней версии.
- Склонировать этот репозиторий.
git clone https://github.com/hackathonsrus/pp_50040_pfo_ta_onezeroeight_69
- Перейти в папку с проектом.
cd pp_50040_pfo_ta_onezeroeight_69
- Запустить базу данных.
docker compose up -d db
- Загрузить дамп базы данных.
docker compose exec db sh -c 'mongorestore "mongodb://$MONGO_INITDB_ROOT_USERNAME:$MONGO_INITDB_ROOT_PASSWORD@localhost:27017/db?authSource=admin" --drop /dump/db'
- Запустить проект.
docker compose up -d --build
- Зайти на http://localhost:8000 в браузере.
Note
При запуске на localhost без https может не работать отправка уведомлений в браузеры.