Рефакторинг базы данных и система мониторинга здоровья сервиса

July 05, 2025 v1.4.2 #database #monitoring #security #performance #bugfix #infrastructure

Привет, атлеты!

Сегодня мы выпускаем важное обновление, которое значительно повышает стабильность и надежность сервиса Peakline. Мы полностью переработали систему работы с базой данных и добавили современные инструменты мониторинга. Этот релиз решает критические проблемы с производительностью и делает сервис более устойчивым к нагрузкам.

🗄️ Полный рефакторинг работы с базой данных

Проблема решена: Сервис страдал от утечек соединений с базой данных и ошибок "Cannot operate on a closed database", что приводило к нестабильной работе.

Что изменилось: * Контекстный менеджер для БД: Заменили все прямые вызовы sqlite3.connect() на безопасный контекстный менеджер with get_db() as conn: * Автоматическое управление соединениями: Теперь все соединения автоматически открываются и закрываются, исключая утечки памяти * Убрали middleware: Удалили устаревший middleware, который некорректно управлял соединениями с БД * Таймауты для предотвращения блокировок: Добавили настройки таймаутов для избежания зависания операций * Единообразный подход: Все компоненты системы теперь используют одинаковую схему работы с БД

Области изменений: * Основной файл приложения * Система управления токенами * Модули аутентификации * Telegram интеграция * Слой работы с базой данных

🏥 Система мониторинга здоровья сервиса

Новые эндпоинты для мониторинга: * /api/health - базовый health check для проверки состояния сервиса * /api/health/db - детальная проверка состояния базы данных (защищена секретным ключом)

Возможности мониторинга: * Проверка соединения с БД: Автоматическая диагностика доступности и состояния базы данных * Информация о сервисе: Статус, версия, время работы * Безопасность: Детальная информация доступна только с правильным секретным ключом * Интеграция с Uptime Kuma: Готовые инструкции по настройке внешнего мониторинга

🔒 Улучшения безопасности

Защита мониторинга: * Детальная информация о состоянии БД скрыта от обычных пользователей * Секретный ключ для доступа к расширенной диагностике * Рекомендации по безопасной настройке внешних систем мониторинга

Аудит безопасности: * Проведен полный аудит всех компонентов, работающих с базой данных * Устранены все потенциальные уязвимости в работе с пользовательскими данными * Проверена корректность всех импортов и зависимостей

🚀 Производительность и стабильность

До обновления: * Частые ошибки "Cannot operate on a closed database" * Утечки соединений с БД * Нестабильная работа при высокой нагрузке * Отсутствие мониторинга состояния сервиса

После обновления: * Стабильная работа без ошибок БД * Автоматическое управление ресурсами * Возможность мониторинга в реальном времени * Быстрое выявление и устранение проблем

🛠️ Технические детали

Архитектурные изменения: * Внедрен паттерн Repository для работы с данными * Контекстный менеджер обеспечивает RAII (Resource Acquisition Is Initialization) * Единообразная обработка ошибок БД во всех компонентах

Мониторинг: * RESTful API для health checks * JSON-ответы с детальной информацией * HTTP статус коды для автоматического мониторинга * Поддержка различных систем мониторинга

📊 Влияние на пользователей

Прямые улучшения: * Сервис стал значительно стабильнее * Устранены случайные ошибки при работе с данными * Быстрее загрузка страниц благодаря оптимизации БД * Более надежная работа интеграций (Telegram, Strava)

Для администраторов: * Возможность мониторить состояние сервиса * Быстрое выявление проблем * Инструменты для диагностики * Простота интеграции с внешними системами мониторинга

🔄 Миграция и совместимость

Обратная совместимость: * Все существующие API эндпоинты работают без изменений * Пользовательские данные остаются нетронутыми * Настройки и конфигурации сохраняются

Автоматическое обновление: * Обновление происходит автоматически при перезапуске сервиса * Не требуется ручная миграция данных * Все изменения применяются прозрачно

📋 Что дальше

В следующих версиях планируем: * Добавить метрики производительности в health check * Расширить систему мониторинга для отслеживания пользовательской активности * Внедрить автоматические алерты при критических проблемах * Добавить дашборд для администраторов с визуализацией состояния сервиса

🙏 Благодарности

Спасибо всем, кто сообщал о проблемах с нестабильной работой сервиса! Ваши отчеты помогли нам выявить и устранить критические проблемы с базой данных.

P.S. Если заметите любые проблемы с работой сервиса - теперь у нас есть надежные инструменты для быстрой диагностики и устранения неполадок!

Большое обновление безопасности и стабильности

July 05, 2025 v1.4.0 #Безопасность #Стабильность #Обновление

Привет, атлеты!

За последние дни мы провели масштабную работу по укреплению безопасности и повышению стабильности нашей платформы. Эти изменения затрагивают ядро системы и делают использование Peakline еще более надежным и безопасным для всех.

✨ Что нового и что мы исправили:

a

1. Полностью переработанная система сессий

Мы внедрили новую, современную систему управления сессиями. Раньше в cookie хранился идентификатор пользователя, что было потенциально небезопасно.

  • Теперь: В cookie хранится только уникальный, криптографически случайный и короткоживущий токен. Этот токен связан с вашей сессией на сервере, что полностью исключает возможность подделки сессии или перебора идентификаторов.

2. Усиленная защита форм входа и регистрации

Для борьбы с ботами, спамом и попытками подбора паролей мы интегрировали передовую систему Cloudflare Turnstile.

  • Что это значит для вас: В большинстве случаев вы не заметите никаких изменений. Проверка происходит автоматически и невидимо. Это умная CAPTCHA, которая не заставляет разгадывать картинки, но при этом эффективно блокирует вредоносную активность.

3. Добавлено ограничение частоты запросов (Rate Limiting)

Чтобы защитить платформу от злоупотреблений и обеспечить ее стабильную работу для всех, мы добавили "рейт-лимиты" на ключевые операции, такие как попытки входа, загрузка файлов и вызовы API.

4. Безопасная загрузка файлов

Раньше система проверяла только расширение загружаемых файлов (например, .gpx). Теперь мы внедрили глубокую проверку MIME-типа, которая анализирует содержимое файла. Это гарантирует, что на сервер можно загрузить только настоящие и корректные файлы тренировок.

5. Исправлена критическая ошибка в аутентификации

Мы обнаружили и исправили несколько логических ошибок в коде, которые в редких случаях могли приводить к некорректной работе системы аутентификации, особенно в Telegram-боте.

Эти обновления — наш приоритет в обеспечении безопасности ваших данных и стабильности сервиса. Спасибо, что вы с нами!

— Ваша команда Peakline

Улучшения UX главной страницы и исправление определения языка

June 26, 2025 v1.3.2 #ux #improvement #language #animation #bugfix #mobile

Привет, атлеты!

Сегодня мы выпускаем обновление, которое значительно улучшает пользовательский опыт на главной странице и исправляет важную проблему с определением языка. Этот релиз основан на вашем фидбеке!

🌍 Исправление определения языка

Проблема решена: Некоторые пользователи из России получали украинскую версию сайта по умолчанию из-за особенностей работы браузеров.

Что изменилось: * Приоритетная логика языков: Теперь система сначала проверяет популярные языки (русский, немецкий, французский, словацкий) * Убрана автоконвертация: Код uk больше не конвертируется автоматически в ua * Английский по умолчанию: Если нет четкого совпадения с поддерживаемыми языками, показывается английская версия * Украинский только при выборе: Украинский язык доступен только при явном выборе через переключатель

✨ Анимации для лучшего UX

Проблема мобильных пользователей: Многие не понимали, что на главной странице можно прокручивать вниз для просмотра дополнительного контента.

Новые анимации: * Scroll Progress Bar: Тонкая оранжевая полоска сверху показывает прогресс прокрутки страницы * Bounce-анимация стрелки: Подпрыгивающая стрелка под hero-секцией с текстом "Прокрутить вниз" * Floating Scroll Hint: Круглая оранжевая кнопка справа внизу для навигации к следующей секции * Wave эффект: Анимированная линия "пробегает" по секциям при их появлении на экране * Улучшенные переходы: Элементы плавно появляются снизу с красивыми timing-функциями

🎨 Исправления контрастности

Проблема читаемости: При светлой теме текст на карточках был плохо виден на радужном градиентном фоне при наведении.

Что исправлено: * Белый текст на градиенте: Весь текст в карточках становится белым при наведении * Тени для читаемости: Добавлена тень для лучшего контраста на любом фоне * Адаптация под темы: Разная интенсивность теней для светлой и темной тем * Идеальная читаемость: Теперь все элементы (заголовки, иконки, описания) отлично видны

📱 Мобильные улучшения

Responsive дизайн: * Scroll hint адаптируется под размер экрана (50px на мобильных, 60px на десктопе) * Уменьшенные размеры анимационных элементов для мобильных устройств * Оптимизированные отступы и позиционирование для сенсорных экранов

🛠️ Технические детали

Performance: * Все анимации работают через CSS transitions и transforms для максимальной производительности * Использование cubic-bezier для естественных переходов * Минимальное влияние на скорость загрузки страниц

Совместимость: * Поддержка всех современных браузеров * Graceful degradation для старых браузеров * Полная поддержка touch-устройств

🎯 Влияние на пользователей

До обновления: * Пользователи могли получить неправильный язык * Неочевидность прокрутки контента * Плохая читаемость при наведении на карточки

После обновления: * Корректное определение языка для всех регионов * Интуитивно понятная навигация по странице * Отличная читаемость всех элементов интерфейса * Современные, плавные анимации

📋 Что дальше

В следующих версиях планируем: * Добавить больше языков на основе запросов сообщества * Расширить анимационную систему на другие страницы * Создать настройки анимаций для пользователей * Добавить более сложные micro-interactions

Спасибо за ваш фидбек! Именно благодаря вашим сообщениям мы смогли выявить и исправить эти проблемы.

P.S. Если заметите другие проблемы с языками или UX - обязательно сообщайте! Мы всегда готовы улучшать Peakline на основе ваших потребностей.

Патч безопасности, новые функции и множество UX-улучшений

June 22, 2025 v1.3.0 #security #new_feature #improvement #bugfix #ux

Привет, атлеты!

Мы продолжаем улучшать Peakline каждый день. Этот релиз — один из самых насыщенных. Мы укрепили безопасность, добавили долгожданные функции и исправили множество мелких недочетов, о которых вы нам сообщали. Спасибо за вашу вовлеченность!

🛡️ Безопасность и надежность

  • Усиление безопасности: После обсуждения потенциальной был провели аудит и превентивно усилили защиту. Теперь любой пользовательский контент, отображаемый на страницах, проходит дополнительную санацию. Безопасность ваших данных — наш главный приоритет.
  • Надежные лимиты API: Чтобы гарантировать стабильность сервиса для всех, мы ввели и настроили систему лимитов запросов ко всем ключевым функциям, включая скачивание треков, AI-анализ и загрузку активностей.

🚀 Улучшения и UX

  • Манифест Peakline на главной: Мы добавили на главную страницу новый блок, рассказывающий о наших ключевых принципах: безопасность, конфиденциальность и доверие сообщества.
  • Единое поведение ссылок на сегменты: Мы унифицировали логику. Теперь нажатие на сегмент в любой части сайта (дашборд, страница активности, список избранных) всегда ведет на его детальную страницу внутри Peakline.
  • Улучшения SEO и FAQ: Проведена работа по оптимизации сайта для поисковых систем. Мы также начали работу над созданием обширного раздела FAQ, чтобы новые пользователи могли легче находить ответы на вопросы и наш сайт.
  • Понятные поля для ссылок: Улучшили подсказки для полей, куда нужно вставлять ссылки, уточнив, что ожидается ссылка на тренировку или сегмент.
  • Постоянный футер: Теперь футер (подвал сайта) отображается на всех страницах, включая детальный просмотр экипировки, для единообразия навигации. В него также добавлены ссылки на важные информационные страницы.

🐛 Исправления ошибок

  • Исправлена подсветка элементов при наведении на главной странице.
  • Поправлены иконки на странице "О нас" и в блоке "Почему Peakline?".
  • Устранен некорректный фон у кнопки переключения языка на второстепенных страницах.
  • Множество мелких исправлений верстки и улучшений локализации для русского языка.

Патч: Надежная погода, улучшения интерфейса и рост сообщества!

June 21, 2025 v1.2.1 #improvement #bugfix #ux #community

Привет, атлеты!

Спустя всего день после крупного релиза с погодой мы выкатываем важное сервисное обновление. Спасибо за ваши быстрые отзывы — они помогли нам оперативно найти и исправить несколько недочетов, а также добавить пару приятных улучшений для удобства использования Peakline.

Что нового и что исправлено:

1. "Железобетонная" погода

Мы полностью переработали логику получения данных о погоде, чтобы она работала надежно для абсолютно всех тренировок, как старых, так и новых.

  • Что было не так? Для некоторых тренировок (особенно очень старых или в удаленных локациях) почасовые данные о погоде были недоступны, из-за чего блок с погодой не отображался.
  • Что мы сделали? Теперь, если система не находит точных почасовых данных, она автоматически делает второй запрос и получает среднесуточные данные (минимальная/максимальная температура, порывы ветра) за день тренировки.
  • Результат: Больше никаких "белых пятен"! Вы получите погодный контекст для каждой своей активности.

2. Улучшенная навигация: Сегменты внутри сайта

Анализировать тренировки стало еще удобнее. Раньше для просмотра деталей сегмента из списка в тренировке приходилось переходить на Strava.

  • Нововведение: Теперь названия всех сегментов во вкладке "Сегменты" на странице анализа тренировки являются кликабельными ссылками.
  • Что это дает? Нажав на сегмент, вы мгновенно перейдете на его детальную страницу внутри Peakline, где сможете посмотреть профиль, статистику и скачать трек.

3. Пояснения в настройках

Мы прислушались к вашим вопросам и сделали настройку пульсовых зон более понятной.

  • Что добавлено? В разделе "Настройки профиля" под заголовком "Пользовательские зоны пульса" теперь есть подсказка: "Для каждой зоны укажите её ВЕРХНЮЮ границу. Например, значение для Зоны 2 — это максимальный пульс этой зоны."
  • Результат: Это поможет избежать путаницы и позволит вам настроить зоны максимально точно с первого раза.

4. Небольшие исправления интерфейса

  • Наложение элементов: Исправлена небольшая ошибка верстки на главной странице, где кнопка "Скачать GPX" для демо-сегмента могла накладываться на карту при определенных разрешениях экрана.
  • Улучшенная обработка ошибок: Мы добавили более детальное логирование и обработку ошибок при взаимодействии с внешними API, что повышает общую стабильность сервиса.

P.S. Нас становится больше!

Хотим поделиться радостной новостью: после публикации статьи о нашем проекте на Хабре (вот ссылка, если пропустили: habr.com/ru/articles/920402/) наше сообщество выросло с 5 до 21 пользователя всего за 5 часов!

Это невероятно мотивирует. Спасибо, что вы с нами! Продолжаю работать.

Peakline теперь можно установить как приложение! Плюс рефреш главной страницы

June 21, 2025 v1.2.2 #new_feature #ux #pwa #improvement

Привет, атлеты!

Мы не сбавляем темп! Пока вы тестировали вчерашние исправления, мы подготовили еще одно обновление, сфокусированное на удобстве использования и первом впечатлении от Peakline.

Что нового:

1. Установите Peakline на свой телефон или компьютер (PWA)

Это большое и важное нововведение! Теперь Peakline можно установить как полноценное приложение.

  • Что это дает?
    • На телефоне: Вы можете добавить иконку Peakline прямо на главный экран, как у любого другого приложения.
    • На компьютере: Приложение будет запускаться в собственном окне, без лишних вкладок и панелей браузера.
  • Как установить? Просто зайдите на сайт. Современные браузеры (Chrome, Edge, Safari) сами предложат вам установить приложение через иконку в адресной строке или пункт в меню.
  • Зачем это нужно? Это быстрее, удобнее и дает ощущение работы с нативным приложением. Мы также добавили базовую офлайн-поддержку — если интернет пропадет, вы увидите специальную страницу, а не стандартную ошибку браузера.

2. Обновленный рассказ о возможностях на главной странице

Мы поняли, что секция "Почему Peakline?" на главной странице устарела и не отражала всех крутых функций, которые появились в последнее время. Мы полностью ее переработали!

  • Что добавлено: Мы добавили карточки, рассказывающие про "Погодный контекст" (исторические данные и прогноз) и "Инструменты Pro-уровня" (кастомные зоны и гонка с целью в FIT-файлах).
  • Результат: Теперь новые пользователи сразу видят всю мощь нашего сервиса, а не только базовые функции.

3. Финальные штрихи в интерфейсе

Спасибо за вашу внимательность! Мы исправили еще пару мелочей, которые вы заметили:

  • Центрирование кнопок: На главной странице кнопки в последнем блоке ("Перейти в панель" и "Connect with Strava") теперь идеально отцентрованы.
  • Фон у блока статистики: Убрали лишний фоновый цвет у блока "Наше сообщество в цифрах", теперь он выглядит более органично.

Мы продолжаем работать над вашими предложениями. Следующие на очереди — еще более глубокие аналитические метрики. Спасибо, что помогаете делать Peakline лучше!

Погода в каждой тренировке и AI-анализ нового уровня

June 20, 2025 v1.2.0 #new_feature #improvement #ai #weather #roadmap

Привет, атлеты! Лето в разгаре, а мы выкатываем обновление, которое добавит контекста вашим тренировкам и сделает нашего AI-помощника настоящим экспертом. Мы внимательно изучили ваши предложения и реализовали самые ожидаемые функции.

Что нового:

1. Погода в ваших активностях: Прошлое и Будущее!

Мы запускаем большую погодную интеграцию, которая изменит ваш подход к анализу и планированию.

  • Историческая сводка (уже доступно!): Для всех новых загруженных тренировок система теперь автоматически подтягивает данные о погоде (температура, скорость и направление ветра) на момент старта. Анализируйте, как встречный ветер влиял на вашу скорость или как жара сказывалась на пульсе. Больше никаких догадок — только факты!

  • Анонс: Прогноз для планирования (скоро!): Это только начало! В следующих обновлениях мы добавим прогноз погоды для ваших избранных маршрутов. Вы сможете выбрать дату и время будущей поездки, а система покажет не только ожидаемую температуру, но и визуализирует направление ветра прямо на карте трека. Планируйте свои усилия и выбирайте лучшее время для рекордов!

2. AI-тренер стал еще умнее: Анализ по пульсовым зонам

Мы кардинально улучшили наш AI-анализатор. Раньше он видел только общие цифры, теперь — понимает структуру вашей тренировки.

  • Новый контекст: В промпт для AI мы добавили информацию о времени, проведенном в каждой из ваших пульсовых зон.
  • Качество выводов: Вместо общих фраз вроде "у вас был высокий средний пульс", AI теперь дает конкретные рекомендации.
    • Пример: "Отличная темповая работа! Ты провел 40% времени в 3-й пульсовой зоне, что идеально для развития выносливости. Однако, обрати внимание, что 10% времени в 5-й зоне могли быть излишними для этой цели."

3. Улучшенные графики: Теперь с единицами измерения

Небольшое, но важное исправление для удобства анализа. Мы вернули на место единицы измерения на оси Y в графиках детального анализа.

  • Что исправлено: Вместо "150" теперь вы увидите "150 Вт" или "150 уд/мин".
  • Результат: Графики стали более информативными и профессиональными. Больше не нужно гадать, о каких значениях идет речь.

4. Обновленный дашборд и главная страница

Мы провели полный рефакторинг главной страницы и личного кабинета (дашборда). Хотя внешние изменения могут быть не сразу заметны, вы точно почувствуете результат.

  • Что это дает? Страницы загружаются быстрее, интерфейс работает отзывчивее, особенно на мобильных устройствах. Мы заложили прочный фундамент для будущих нововведений!

Мы продолжаем работать над тем, чтобы Peakline был вашим лучшим тренировочным партнером. Функция прогноза погоды для маршрутов — наш следующий приоритет. Как всегда, ждем ваших отзывов!

PRO-уровень: Кастомные зоны и гонка с целью!

June 16, 2025 v1.1.0 #new_feature #improvement #pro

Привет, атлеты! Сегодня мы выкатываем крупное обновление, которое превращает Peakline в еще более мощный инструмент для серьезных тренировок. Мы внимательно прислушались к вашим отзывам и добавили функции, которые дают полный контроль над анализом и подготовкой.

Что нового:

1. Персональные тренировочные зоны

Теперь вы — главный тренер! В новой секции "Настройки профиля" (доступна из вашего личного кабинета) можно вручную задать границы для всех ваших зон мощности и пульса.

  • Как это работает? Просто введите пороговые значения для каждой зоны.
  • Что это дает? Анализ ваших тренировок на странице активности теперь будет использовать именно ваши персональные зоны, а не стандартные проценты от FTP/Max HR. Это обеспечивает максимальную точность и релевантность данных.
  • Умный fallback: Если вы не задали свои зоны, система, как и раньше, будет использовать стандартные расчеты или данные из вашей подписки Strava.

2. FIT-генератор Pro-уровня: Гонка с целью

Просто скачать трек сегмента — это хорошо. А скачать его, чтобы соревноваться с конкретной целью — еще лучше! Мы полностью переработали скачивание FIT-файлов.

  • Интерактивное окно: Теперь при нажатии на кнопку скачивания FIT-файла появляется модальное окно.
  • Выберите соперника: Вы можете сгенерировать файл для гонки против:
    • KOM/QOM: Бросьте вызов лидеру сегмента.
    • Вашего PR: Попробуйте превзойти самого себя.
    • Кастомной цели: Установите любое целевое время (например, 5m30s или 330) и соревнуйтесь с ним.

3. Наглядный GPX Fixer

Мы не просто исправляем "телепорты" в ваших треках, мы теперь показываем, как мы это делаем.

  • Визуальное сравнение: После загрузки файла на странице GPX Fixer появляется карта, где красным цветом показан оригинальный, "сломанный" трек, а зеленым — уже исправленный.
  • Статистика: Вы сразу видите, сколько лишних точек было удалено и на сколько километров сократилась дистанция.

4. Интерактивная связка "Карта-График"

Анализ тренировок стал еще более захватывающим. Теперь график и карта на странице активности полностью синхронизированы.

  • Просто наведите мышь на любую точку на графике (скорости, высоты, пульса).
  • На карте тут же появится маркер, показывающий ваше точное местоположение в этот момент времени. Исследуйте каждый метр вашего трека!

Мы уверены, что эти нововведения помогут вам тренироваться еще эффективнее и с большим удовольствием. Как всегда, ждем ваших отзывов и предложений!

Большой запуск Peakline!

June 15, 2025 v1.0.0 #new_feature #release

Всем привет! Мы рады объявить о запуске Peakline — вашего нового помощника в мире Strava.

Что уже доступно:

  • Личный кабинет с полной статистикой и последними активностями.
  • Анализ сегментов с интерактивной картой и профилем высот.
  • Скачивание FIT и GPX файлов для ваших устройств Garmin.
  • GPX Fixer для исправления "телепортов" в треках.
  • Segment Hunter для поиска новых вызовов на карте.

Мы только начинаем наш путь и будем рады вашим отзывам!