Skip to content

guillermodotn/apno

Repository files navigation

Apno

Apno Logo

A cross-platform apnea and breath-holding training app built with Python and Kivy.

uv Python Kivy

Features

  • O2 Tables - Fixed hold time with decreasing rest periods to improve oxygen efficiency
  • CO2 Tables - Increasing hold time with fixed rest periods to build CO2 tolerance
  • Free Training - Practice breath holds at your own pace with a simple timer
  • Customizable Settings - Adjust hold times, rest periods, and number of rounds
  • Visual Progress - Animated progress circle with phase-based color feedback

Development

Setup

# Install development dependencies
uv sync --group dev

# Install pre-commit hooks
uv run pre-commit install

Running in Development Mode

Development mode stores the database in the project directory instead of the system data directory:

uv run --env-file .env.development apno

Or set the environment variable manually:

APNO_DEV=1 uv run apno

Code quality

uv run ruff check .
uv run ruff format .

Versioning

The single source of truth for the app version is apno/__init__.py:

__version__ = "0.2.0"

The version script updates all files that reference it (apno/__init__.py, pyproject.toml, buildozer.spec):

# Get current version
python scripts/version.py get

# Set a specific version
python scripts/version.py set 0.3.0

# Bump patch/minor/major
python scripts/version.py bump patch
python scripts/version.py bump minor
python scripts/version.py bump major

After bumping, run uv lock to sync the lockfile.

About

A cross-platform apnea and breath-holding training app

Topics

Resources

License

Stars

Watchers

Forks

Contributors