Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

sviteribuben/workoutapp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

10 Commits

Repository files navigation

WorkoutApp 🏋️

Персональное приложение для отслеживания тренировок с текстовым интерфейсом (TUI), построенное на базе Textual.

📋 Описание

WorkoutApp позволяет фиксировать и отслеживать ваши тренировки в удобном текстовом интерфейсе. Приложение сохраняет данные о тренировках в JSON-файл и предоставляет статистику по выполненным упражнениям.

Скриншоты

Экран ввода данных

Экран статистики

✨ Функциональность

Экран ввода данных (Entry Screen)

  • Выбор типа тренировки: Push ups или Strengh set
  • Статус тренировки: Отметка о том, была ли выполнена тренировка
  • Комментарии: Опциональное поле для заметок к тренировке
  • Валидация: Проверка обязательных полей перед сохранением

Экран статистики (Stats Screen)

  • Таблица тренировок: Просмотр всех записей с датой, статусом, типом и комментариями
  • Статистика:
    • Общее количество выполненных тренировок
    • Количество тренировок по типам (Push ups, Strengh set)
  • Сброс прогресса: Возможность полностью очистить данные (с подтверждением)

🚀 Установка и запуск

Требования

  • Python >= 3.14
  • uv - современный менеджер пакетов Python

Установка uv

Если у вас еще не установлен uv, установите его:

# macOS и Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Запуск проекта

  1. Клонируйте репозиторий (или перейдите в директорию проекта):
cd workoutapp
  1. Установите зависимости с помощью uv:
uv sync
  1. Запустите приложение:
uv run src_workout/app.py

🎮 Управление

Экран ввода (Entry Screen)

Клавиша Действие
S Сохранить тренировку
2 Перейти к статистике
Q Выход из приложения

Экран статистики (Stats Screen)

Клавиша Действие
1 Вернуться к экрану ввода
R Сбросить прогресс (требует подтверждения - нажмите R дважды)
Q Выход из приложения

📁 Структура проекта

workoutapp/
├── src_workout/
│ ├── app.py # Главный файл приложения
│ ├── entry_screen.py # Экран ввода данных о тренировках
│ ├── stats_screen.py # Экран статистики
│ ├── storage.py # Модуль для работы с данными (JSON)
│ ├── messages.py # Система сообщений между экранами
│ ├── app.tcss # Стили для Textual
│ └── workouts.json # Файл с данными (создается автоматически)
├── pyproject.toml # Конфигурация проекта и зависимости
├── uv.lock # Файл блокировки зависимостей
└── README.md # Документация

💾 Хранение данных

Данные сохраняются в файл src_workout/workouts.json в формате JSON. Структура записи:

{
 "workouts": [
 {
 "id": 1,
 "date": "2026年01月09日",
 "was_done": true,
 "type": "push_ups",
 "comment": "Комментарий к тренировке"
 }
 ]
}

🛠️ Технологии

  • Python 3.14+ - язык программирования
  • Textual - фреймворк для создания TUI приложений
  • uv - менеджер пакетов и зависимостей
  • ty - статический анализатор типов для проверки кода

📝 Разработка

Установка зависимостей для разработки

uv sync --dev

Это установит дополнительные инструменты разработки, включая ruff для линтинга кода.

Проверка типов

Код проекта проверяется с помощью ty - высокопроизводительного статического анализатора типов от Astral.

Для проверки типов в проекте выполните:

uv run ty check .

Запуск линтера

uv run ruff check .

📄 Лицензия

Этот проект создан для личного использования.

🤝 Вклад

Вклад в проект приветствуется! Если вы нашли баг или хотите предложить новую функцию, создайте issue или pull request.


Приятных тренировок! 💪

About

TUI app for exercises

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /