npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

workout-planning-lib

v1.0.9

Published

Библиотека для планирования тренировок

Readme

Программное средство для планировки фитнес тренировок

Богданович Андрей 353504

UML диаграмма классов:

Диаграмма

Функциональные требования

Общее описание участников и случаев использования

  • Акторы: Пользователь (человек, взаимодействующий с веб-приложением для планирования тренировок).
  • Система: Веб-приложение для планирования фитнес тренировок.
  • Описание: Приложение для регистрации пользователей, создания и управления различными типами упражнений (силовые, кардио, на выносливость), планирования тренировок, а также отслеживания прогресса и параметров тела.

Случаи использования (Use Cases)

Управление учетной записью

Use Case 1: Регистрация нового пользователя

  • Цель: Создать новую учётную запись пользователя.
  • Акторы: Пользователь
  • Предусловие: Пользователь не зарегистрирован, открыта страница регистрации.
  • Основной сценарий:
    1. Пользователь открывает страницу регистрации.
    2. Пользователь заполняет форму регистрации: имя, email, пароль, текущий вес, рост.
    3. Пользователь нажимает кнопку "Зарегистрироваться".
    4. Система проверяет уникальность email и корректность данных.
    5. Система создаёт нового пользователя и перенаправляет на страницу входа.
    6. Система отображает сообщение об успешной регистрации.
  • Альтернативные сценарии:
    • Если email уже используется, система отображает сообщение об ошибке и просит ввести другой email.
    • Если данные некорректны, система выделяет проблемные поля и отображает соответствующие сообщения.

Use Case 2: Вход пользователя в систему

  • Цель: Получить доступ к персональной учётной записи.
  • Акторы: Пользователь
  • Предусловие: Пользователь зарегистрирован, открыта страница входа.
  • Основной сценарий:
    1. Пользователь открывает страницу входа.
    2. Пользователь вводит email и пароль.
    3. Пользователь нажимает кнопку "Войти".
    4. Система проверяет email и пароль.
    5. Система аутентифицирует пользователя и перенаправляет на главную страницу приложения.
  • Альтернативные сценарии:
    • Если введён неверный email или пароль, система отображает сообщение об ошибке.

Use Case 3: Редактирование профиля пользователя

  • Цель: Обновить данные профиля.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, открыта страница профиля.
  • Основной сценарий:
    1. Пользователь переходит в раздел "Профиль".
    2. Пользователь нажимает кнопку "Редактировать профиль".
    3. Система отображает форму с текущими данными пользователя.
    4. Пользователь редактирует желаемые поля (имя, email, пароль, рост).
    5. Пользователь нажимает кнопку "Сохранить изменения".
    6. Система обновляет данные пользователя и отображает сообщение об успешном обновлении.
  • Альтернативные сценарии:
    • Если данные некорректны, система выделяет проблемные поля и отображает сообщения об ошибках.

Use Case 4: Обновление веса пользователя

  • Цель: Внести новое значение веса для отслеживания прогресса.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, находится в разделе отслеживания веса.
  • Основной сценарий:
    1. Пользователь переходит в раздел "Отслеживание веса" или "Профиль".
    2. Пользователь нажимает кнопку "Добавить измерение веса".
    3. Система отображает форму для ввода нового значения веса и даты (по умолчанию текущая).
    4. Пользователь вводит вес и, при необходимости, корректирует дату.
    5. Пользователь нажимает кнопку "Сохранить".
    6. Система добавляет новую запись в историю веса и обновляет график прогресса.
  • Альтернативные сценарии:
    • Если введены некорректные данные, система отображает сообщение об ошибке.

Управление упражнениями

Use Case 5: Создание нового упражнения

  • Цель: Добавить персональное упражнение в базу.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, находится в разделе упражнений.
  • Основной сценарий:
    1. Пользователь переходит в раздел "Упражнения".
    2. Пользователь нажимает кнопку "Добавить новое упражнение".
    3. Система отображает форму с полями для создания упражнения.
    4. Пользователь выбирает тип упражнения (силовое, кардио, на выносливость).
    5. Система динамически обновляет форму, отображая поля, специфичные для выбранного типа.
    6. Пользователь заполняет общие поля (название, описание, изображение) и специфичные для типа.
    7. Пользователь нажимает кнопку "Создать упражнение".
    8. Система создаёт упражнение и добавляет его в список упражнений пользователя.
  • Альтернативные сценарии:
    • Если заполнены не все обязательные поля, система выделяет их и просит заполнить.
    • Пользователь может отменить создание, нажав кнопку "Отмена".

Use Case 6: Просмотр списка упражнений

  • Цель: Просмотреть все созданные упражнения.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, находится в разделе упражнений.
  • Основной сценарий:
    1. Пользователь переходит в раздел "Упражнения".
    2. Система отображает список всех упражнений пользователя.
    3. Пользователь может использовать фильтры по типу упражнения для сортировки списка.
    4. Пользователь может воспользоваться поиском по названию упражнения.
  • Альтернативные сценарии:
    • Если упражнения отсутствуют, система отображает сообщение "У вас ещё нет упражнений" и предлагает создать первое.

Use Case 7: Редактирование упражнения

  • Цель: Изменить параметры существующего упражнения.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, находится на странице с упражнениями.
  • Основной сценарий:
    1. Пользователь находит нужное упражнение в списке и нажимает кнопку "Редактировать".
    2. Система отображает форму редактирования с текущими данными упражнения.
    3. Пользователь вносит необходимые изменения.
    4. Пользователь нажимает кнопку "Сохранить изменения".
    5. Система обновляет данные упражнения и возвращает пользователя к списку упражнений.
  • Альтернативные сценарии:
    • Пользователь может отменить редактирование, нажав кнопку "Отмена".
    • Если данные некорректны, система отображает сообщения об ошибках.

Use Case 8: Удаление упражнения

  • Цель: Удалить ненужное упражнение из базы.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, находится на странице с упражнениями.
  • Основной сценарий:
    1. Пользователь находит нужное упражнение в списке и нажимает кнопку "Удалить".
    2. Система отображает диалоговое окно с подтверждением удаления.
    3. Пользователь подтверждает удаление, нажав кнопку "Да, удалить".
    4. Система удаляет упражнение и обновляет список упражнений.
  • Альтернативные сценарии:
    • Пользователь может отменить удаление, нажав кнопку "Отмена" в диалоговом окне.
    • Если упражнение используется в планах тренировок, система предупреждает пользователя и предлагает варианты: "Удалить из всех планов" или "Отмена".

Управление планами тренировок

Use Case 9: Создание нового плана тренировки

  • Цель: Сформировать новую программу тренировок.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, находится в разделе планов тренировок.
  • Основной сценарий:
    1. Пользователь переходит в раздел "Планы тренировок".
    2. Пользователь нажимает кнопку "Создать новый план".
    3. Система отображает форму для создания плана.
    4. Пользователь вводит название плана и описание.
    5. Пользователь нажимает кнопку "Сохранить план".
    6. Система создаёт пустой план и перенаправляет на страницу редактирования плана.
  • Альтернативные сценарии:
    • Если не заполнено название, система выделяет поле и просит заполнить.
    • Пользователь может отменить создание, нажав кнопку "Отмена".

Use Case 10: Добавление упражнения в план тренировки

  • Цель: Включить упражнение в план тренировки.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, редактирует план тренировки.
  • Основной сценарий:
    1. Пользователь находится на странице редактирования плана тренировки.
    2. Пользователь нажимает кнопку "Добавить упражнение".
    3. Система отображает модальное окно со списком доступных упражнений.
    4. Пользователь выбирает упражнение и нажимает кнопку "Добавить".
    5. Система добавляет упражнение в план и закрывает модальное окно.
    6. Для силовых упражнений система предлагает указать количество подходов и повторений.
    7. Для кардио и упражнений на выносливость система предлагает указать длительность и другие параметры.
  • Альтернативные сценарии:
    • Пользователь может использовать поиск и фильтрацию для нахождения упражнений.
    • Если упражнений нет, система предлагает сначала создать упражнения.

Use Case 11: Редактирование параметров упражнений в плане

  • Цель: Настроить детали упражнений в плане тренировки.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, редактирует план с добавленными упражнениями.
  • Основной сценарий:
    1. Пользователь находит упражнение в плане и нажимает кнопку "Редактировать".
    2. Система отображает форму с параметрами упражнения.
    3. Для силовых упражнений пользователь может добавить/изменить сеты, задать повторения и вес.
    4. Для кардио упражнений пользователь может задать длительность, дистанцию и калории.
    5. Для упражнений на выносливость пользователь может задать длительность и сложность.
    6. Пользователь нажимает кнопку "Сохранить изменения".
    7. Система обновляет параметры упражнения в плане.
  • Альтернативные сценарии:
    • Пользователь может добавить несколько сетов/сессий для упражнения.
    • Пользователь может переупорядочить упражнения в плане перетаскиванием.

Use Case 12: Удаление упражнения из плана тренировки

  • Цель: Исключить упражнение из плана тренировки.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, редактирует план тренировки с упражнениями.
  • Основной сценарий:
    1. Пользователь находит упражнение в плане и нажимает кнопку "Удалить".
    2. Система отображает подтверждающее сообщение.
    3. Пользователь подтверждает удаление.
    4. Система удаляет упражнение из плана и обновляет список.
  • Альтернативные сценарии:
    • Пользователь может отменить удаление в диалоговом окне.

Use Case 13: Просмотр планов тренировок

  • Цель: Просмотреть все созданные планы тренировок.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, находится в разделе планов.
  • Основной сценарий:
    1. Пользователь переходит в раздел "Планы тренировок".
    2. Система отображает список всех планов пользователя с названиями и описаниями.
    3. Пользователь может выбрать план для просмотра деталей.
  • Альтернативные сценарии:
    • Если планов нет, система отображает сообщение "У вас ещё нет планов тренировок" и предлагает создать первый план.

Use Case 14: Удаление плана тренировки

  • Цель: Удалить ненужный план тренировки.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, находится в разделе планов тренировок.
  • Основной сценарий:
    1. Пользователь находит нужный план в списке и нажимает кнопку "Удалить".
    2. Система отображает диалоговое окно с подтверждением.
    3. Пользователь подтверждает удаление.
    4. Система удаляет план и обновляет список планов.
  • Альтернативные сценарии:
    • Пользователь может отменить удаление в диалоговом окне.
    • Если на основе плана уже созданы тренировки, система предупреждает об этом, но всё равно позволяет удалить.

Управление тренировками

Use Case 15: Создание новой тренировки на основе плана

  • Цель: Начать новую тренировку по выбранному плану.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, имеет хотя бы один план тренировок.
  • Основной сценарий:
    1. Пользователь переходит в раздел "Тренировки" или "Планы тренировок".
    2. Пользователь выбирает план и нажимает кнопку "Начать тренировку".
    3. Система запрашивает дату тренировки (по умолчанию текущая).
    4. Пользователь подтверждает или изменяет дату и нажимает "Начать".
    5. Система создаёт новую тренировку на основе плана и перенаправляет на страницу тренировки.
  • Альтернативные сценарии:
    • Пользователь может создать тренировку "с нуля", без плана, нажав "Создать тренировку без плана".
    • Пользователь может запланировать тренировку на будущую дату.

Use Case 16: Запись результатов упражнений в тренировке

  • Цель: Зафиксировать фактические результаты выполнения упражнений.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, открыта страница активной тренировки.
  • Основной сценарий:
    1. Пользователь видит список упражнений из плана тренировки.
    2. Для каждого упражнения система отображает форму для внесения результатов:
      • Для силовых упражнений: фактические веса и повторения для каждого сета
      • Для кардио упражнений: длительность, дистанция, калории
      • Для упражнений на выносливость: длительность, уровень сложности
    3. Пользователь заполняет результаты по мере выполнения упражнений.
    4. После заполнения результатов пользователь нажимает кнопку "Сохранить" для каждого упражнения.
    5. Система сохраняет данные и визуально отмечает упражнение как выполненное.
  • Альтернативные сценарии:
    • Пользователь может добавить дополнительные сеты/сессии сверх плана.
    • Пользователь может пропустить упражнение, отметив его как "Не выполнено" с указанием причины.

Use Case 17: Добавление упражнения в тренировку

  • Цель: Включить незапланированное упражнение в текущую тренировку.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, находится на странице активной тренировки.
  • Основной сценарий:
    1. Пользователь нажимает кнопку "Добавить упражнение".
    2. Система отображает модальное окно со списком доступных упражнений.
    3. Пользователь выбирает упражнение и нажимает "Добавить".
    4. Система добавляет упражнение в текущую тренировку.
    5. Пользователь может сразу записать результаты добавленного упражнения.
  • Альтернативные сценарии:
    • Система может предложить наиболее часто используемые упражнения пользователя.

Use Case 18: Завершение тренировки

  • Цель: Завершить тренировку и сохранить результаты.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, выполняет тренировку.
  • Основной сценарий:
    1. После выполнения всех упражнений пользователь нажимает кнопку "Завершить тренировку".
    2. Система отображает сводку выполненных упражнений и достижений.
    3. Пользователь может добавить комментарий к тренировке.
    4. Пользователь нажимает "Сохранить и завершить".
    5. Система сохраняет тренировку в историю и перенаправляет на страницу с результатами.
  • Альтернативные сценарии:
    • Если есть незаполненные результаты упражнений, система предупреждает и предлагает: "Завершить как есть", "Вернуться и заполнить", "Отметить как не выполненные".
    • Система может предложить обновить план тренировки на основе фактических результатов.

Use Case 19: Просмотр истории тренировок

  • Цель: Просмотреть прошлые тренировки и их результаты.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, имеет прошлые тренировки.
  • Основной сценарий:
    1. Пользователь переходит в раздел "История тренировок".
    2. Система отображает список прошлых тренировок с датами и планами.
    3. Пользователь может фильтровать тренировки по датам, планам или типам упражнений.
    4. Пользователь выбирает тренировку для просмотра деталей.
    5. Система отображает подробную информацию о выполненных упражнениях и результатах.
  • Альтернативные сценарии:
    • Пользователь может экспортировать историю тренировок в различных форматах.

Use Case 20: Обновление плана на основе тренировки

  • Цель: Модифицировать план тренировки на основе фактических результатов.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, просматривает завершённую тренировку.
  • Основной сценарий:
    1. При просмотре деталей тренировки пользователь нажимает "Обновить план на основе этой тренировки".
    2. Система отображает предпросмотр изменений, которые будут внесены в план.
    3. Пользователь может выбрать, какие изменения применить (все или выборочно).
    4. Пользователь нажимает "Применить изменения к плану".
    5. Система обновляет исходный план и отображает сообщение об успешном обновлении.
  • Альтернативные сценарии:
    • Пользователь может выбрать опцию "Создать новый план" вместо обновления существующего.

Анализ и статистика

Use Case 21: Просмотр прогресса веса пользователя

  • Цель: Отследить динамику изменения веса.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, имеет историю измерений веса.
  • Основной сценарий:
    1. Пользователь переходит в раздел "Прогресс" или "Профиль".
    2. Пользователь выбирает вкладку "Вес".
    3. Система отображает график изменения веса с течением времени.
    4. Система показывает ключевые метрики: начальный вес, текущий вес, изменение, среднее изменение за период.
    5. Пользователь может выбрать временной диапазон для анализа.
  • Альтернативные сценарии:
    • Пользователь может экспортировать данные прогресса.
    • При отсутствии достаточных данных система предлагает начать регулярно записывать вес.

Use Case 22: Анализ прогресса тренировок

  • Цель: Получить общее представление о прогрессе всех тренировок.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, имеет историю тренировок.
  • Основной сценарий:
    1. Пользователь переходит в раздел "Статистика".
    2. Система отображает дашборд с графиками и метриками:
      • Количество тренировок
      • Общий поднятый вес за период
      • Общая дистанция (для кардио)
    3. Пользователь может настраивать временные диапазоны и фильтры.
  • Альтернативные сценарии:
    • При малом количестве данных система предлагает продолжать тренировки для более точного анализа.

Use Case 23: Анализ прогресса по конкретным упражнениям

  • Цель: Отследить прогресс по выбранному упражнению.
  • Акторы: Пользователь
  • Предусловие: Пользователь вошёл в систему, имеет историю выполнения упражнения.
  • Основной сценарий:
    1. Пользователь переходит в раздел "Прогресс" или "Упражнения".
    2. Пользователь выбирает конкретное упражнение для анализа.
    3. Система отображает детальную статистику по упражнению:
      • Для силовых: графики роста максимального веса, общего веса
      • Для кардио: графики дистанции, времени
      • Для упражнений на выносливость: прогресс по времени и сложности
    4. Система показывает личные рекорды и достижения.
    5. Пользователь может настраивать временные диапазоны и параметры анализа.
  • Альтернативные сценарии:
    • Система может предложить рекомендации по прогрессивной перегрузке на основе анализа прогресса.