* init uv project
* fix workflow for uv
* updated docs
* update dependabot to use uv
* lock python version
* fix python version
* update uv deps
* Address PR review feedback
- Match dependency versions to dev branch (Django 5.2.13, allauth 65.15.1,
health-check 4.2.2 with [celery,redis] extras, ruff 0.15.10, fakeredis[lua])
- Remove unused django-decorator-include
- Restore single-line ruff ignore array (unrelated whitespace)
- Drop description/readme; mark as non-package via [tool.uv]
- Install supervisor via apk in Dockerfile
- Fix CI: use 'uv run playwright install'; drop unused --all-extras
- README: set `dynamic = ["version"]` to avoid declaring version
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
* Fix container startup after switch to uv base image
- Dockerfile: prepend /.venv/bin to PATH so python/gunicorn/celery
resolve directly (entrypoint.sh and supervisord.conf invoke them by
name).
- entrypoint.sh: drop hardcoded /usr/local/bin/ prefix for supervisord;
apk installs it to /usr/bin/supervisord, so let PATH resolve it.
- uv.lock: regenerated after pyproject.toml switched to dynamic version.
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
* Add mkdocs and supervisor as uv deps; lint pyproject.toml
- Add a 'docs' dependency group with mkdocs and its plugins; switch
build-docs.yml to use uv and remove docs/requirements.txt.
- Add supervisor to project deps so it ships in /.venv/bin instead of
via apk in the Docker image.
- Add validate-pyproject and pyproject-fmt as dev deps and pre-commit
hooks; reformat pyproject.toml accordingly.
- Drop unused dynamic version metadata (app version comes from the
VERSION env var, not package metadata).
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
* Move uv virtualenv into /yamtrack workdir
Set WORKDIR before copying pyproject.toml and uv.lock so the
uv-managed virtualenv is created at /yamtrack/.venv. Update PATH
accordingly and ignore .venv in .dockerignore.
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
* Pin Python version to 3.12
Add .python-version so uv (and pyenv) consistently select the
same interpreter when creating the virtualenv.
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
* Enable uv bytecode compilation in Docker image
Set UV_COMPILE_BYTECODE=1 so uv precompiles .pyc files during
'uv sync'. This trades a small build-time cost for faster
container/worker startup since Python doesn't have to compile
modules on first import.
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
* Use multi-stage Docker build to slim the runtime image
Build the virtualenv with uv in a builder stage based on
ghcr.io/astral-sh/uv:python3.12-alpine, then copy /yamtrack/.venv
into a clean python:3.12-alpine final stage. The final image no
longer carries the uv binary or its build cache, and collectstatic
runs via 'python manage.py' since the venv is on PATH.
Set UV_LINK_MODE=copy in the builder so packages are copied (not
symlinked from a cache that the final stage will not see).
Reduces image size by roughly 150 MB in local testing.
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
* Drop validate-pyproject and pyproject-fmt; revert pyproject formatting
Remove the validate-pyproject and pyproject-fmt pre-commit hooks
and dev dependencies, and revert the cosmetic pyproject.toml
formatting that pyproject-fmt had applied (e.g. nested
[tool.ruff.lint.*] tables and tight list spacing) to match the
dev branch style.
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
* Pin Alpine version and preserve bytecode in Docker build
- Pin both builder and final stages to alpine3.21 for reproducibility
and binary compatibility between the virtualenv and runtime image.
- Stop deleting __pycache__ after uv sync so the bytecode compiled via
UV_COMPILE_BYTECODE=1 is actually shipped, giving faster startup and
avoiding runtime compilation on read-only filesystems.
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
* Add django-tailwind-cli for Tailwind integration
Replaces the standalone tailwindcss CLI workflow with django-tailwind-cli,
which downloads and manages the standalone Tailwind binary itself. The
output path (static/css/main.css) is preserved so base.html and the
production build are unchanged.
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
* Split dev dependency group into lint and test
The dev group now includes both via include-group, preserving the existing
'uv sync' behavior while allowing lint-only or test-only installs.
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
* Revert "Add django-tailwind-cli for Tailwind integration"
This reverts commit 3796e53e347b81784e69fa0328c4e3d35be90d55.
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
* Add back pinning version to `0.0.0`
Using `dynamic`, uv tries to build an egg every time dependencies are
added/removed.
* Switch docs group from mkdocs to zensical
Upstream migrated documentation tooling from mkdocs to zensical. Replace
the mkdocs-* plugins in the docs dependency group with zensical and the
squidfunk fork of mike that zensical expects.
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
---------
Co-authored-by: Eddi <75438446+minerop5000@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: David Davis <86290+daviddavis@users.noreply.github.com>