Portfolio

Проект: Интерактивная карта концертного тура «Stigmata»

Проект: Интерактивная карта концертного тура «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) и ускорить загрузку, было реализовано кэширование:

  1. Приложение сперва ищет координаты в собственной таблице city_coordinates в БД.
  2. Если для города координат в кэше нет, отправляется запрос к Geopy.
  3. Полученные координаты сохраняются в БД для будущих запросов.

Это значительно сокращает время ответа сервера и снижает зависимость от сторонних сервисов.

Разделение логики: от парсинга до отображения

Наличие отдельного скрипта (processPattern.js) для парсинга данных показывает продуманный подход. Вместо того чтобы «на лету» обрабатывать сложные данные при каждом запросе, информация заранее подготавливается и складывается в БД. Это делает основное приложение более быстрым, надёжным и менее зависимым от формата исходных данных.

5. Потенциальные улучшения (Точки роста)

  • Автоматизация ETL: Процесс извлечения, преобразования и загрузки данных (ETL), который сейчас выполняется вручную с помощью скрипта, можно автоматизировать. Например, создать периодическую задачу (cron job), которая будет сама проверять обновления и добавлять новые концерты в БД.

6. Заключение

Проект «Карта концертов Stigmata» является отличным примером полнофункционального веб-приложения, решающего конкретную задачу. Он демонстрирует навыки в бэкенд- и фронтенд-разработке, работе с базами данных, использовании внешних API и продумывании архитектуры. Особого внимания заслуживают решения по оптимизации (кэширование) и наглядной визуализации данных.