Dockerfile was failing because we tried to install in editable mode
before copying the src directory. Copy src/ first so that uv can
find the package structure properly.
Change from requirements.txt to pyproject.toml as source of truth for
dependencies. This ensures pyotp is properly installed in the Docker image
when built. Using 'uv pip install -e .' will install the package
with all dependencies from pyproject.toml.