Проект: Интерактивная карта концертного тура «Stigmata»
1. Краткий обзор

Этот проект представляет собой полнофункциональное веб-приложение, созданное для визуализации концертного тура музыкальной группы «Stigmata». Вместо стандартного списка городов и дат, приложение предлагает интерактивную карту, на которой отмечены все предстоящие концерты. Маршрут тура наглядно соединён анимированными линиями, что позволяет фанатам легко отслеживать перемещения группы.
Цель проекта: Создать удобный, наглядный и привлекательный инструмент для информирования поклонников о концертном графике.
2. Архитектура системы
Проект имеет многокомпонентную архитектуру, включающую этап подготовки данных, бэкенд-сервер для обработки логики и фронтенд для взаимодействия с пользователем.

- Подготовка данных: Исходная информация о концертах обрабатывается Node.js-скриптом, который извлекает нужные поля и сохраняет их в структурированном виде в базу данных MySQL.
- Бэкенд: Сервер на Flask (Python) выступает в роли API. Он запрашивает данные о предстоящих концертах из БД, обогащает их гео-координатами (используя внешний сервис и собственный кэш) и отдает фронтенду в формате JSON.
- Фронтенд: Клиентская часть, написанная на чистом JavaScript, получает данные от бэкенда и с помощью библиотеки Leaflet.js отрисовывает интерактивную карту с маркерами, всплывающими окнами и анимированным маршрутом.
3. Стек технологий
- Бэкенд: Python, Flask
- Фронтенд: HTML5, CSS3, JavaScript (ES6+), Leaflet.js
- База данных: MySQL
- Геокодинг: Geopy (Nominatim/OpenStreetMap)
- Парсинг данных: Node.js
- Оркестрация: Docker (docker-compose.yaml)
4. Ключевые функции и решения
Интерактивная карта тура
Основная «фишка» проекта. Использование Leaflet.js позволило создать быструю и функциональную карту. При клике на маркер города появляется всплывающее окно с датой, местом проведения и прямой ссылкой на покупку билета.
Анимированный маршрут
Чтобы визуально связать города в туре, между последовательными концертами рисуются линии. Эти линии анимированы, что создаёт эффект «движения» и наглядно показывает последовательность выступлений.

Эффективный геокодинг с кэшированием
Для отображения городов на карте нужны их географические координаты. Чтобы не перегружать внешние API (Nominatim) и ускорить загрузку, было реализовано кэширование:
- Приложение сперва ищет координаты в собственной таблице
city_coordinatesв БД. - Если для города координат в кэше нет, отправляется запрос к Geopy.
- Полученные координаты сохраняются в БД для будущих запросов.
Это значительно сокращает время ответа сервера и снижает зависимость от сторонних сервисов.
Разделение логики: от парсинга до отображения
Наличие отдельного скрипта (processPattern.js) для парсинга данных показывает продуманный подход. Вместо того чтобы «на лету» обрабатывать сложные данные при каждом запросе, информация заранее подготавливается и складывается в БД. Это делает основное приложение более быстрым, надёжным и менее зависимым от формата исходных данных.
5. Потенциальные улучшения (Точки роста)
- Автоматизация ETL: Процесс извлечения, преобразования и загрузки данных (ETL), который сейчас выполняется вручную с помощью скрипта, можно автоматизировать. Например, создать периодическую задачу (cron job), которая будет сама проверять обновления и добавлять новые концерты в БД.
6. Заключение
Проект «Карта концертов Stigmata» является отличным примером полнофункционального веб-приложения, решающего конкретную задачу. Он демонстрирует навыки в бэкенд- и фронтенд-разработке, работе с базами данных, использовании внешних API и продумывании архитектуры. Особого внимания заслуживают решения по оптимизации (кэширование) и наглядной визуализации данных.
