Local development uses Nix (nix develop) for a reproducible toolchain — nothing is hand-installed on the host.
- Nix (with flakes enabled): local development toolchain
- Mistral AI API Key: For transcription service
nix develop
# bootstraps .venv and installs Python + frontend deps automaticallypython --version # Should be 3.11.x
ffmpeg -version # Should be installed
pytest --version # Should be installed
node --version # Should be 24.xmake test
# or, from inside `nix develop`:
pytest# Open the nix dev shell (backend + frontend toolchain)
make shell
# Run tests
make test
# Run tests with coverage
make test-cov
# Format code
make format
# Lint code
make lint
# Type check
make typecheck
# Run all quality checks
make quality- Defined in:
flake.nix defaultshell: Python 3.11 + build toolchain,ffmpeg,redis, Node 24 — full backend + frontend dev tools (pytest, black, ruff, mypy, npm)frontendshell (nix develop .#frontend): lean, Node-only shell for frontend-only work- State: bootstraps a gitignored
.venvin the repo root on first entry, gated on a hash ofrequirements.txt/requirements-dev.txt/pyproject.tomlso it only reinstalls when they change
Usage: Development, testing, code quality checks (also what CI runs, via nix develop)
- Enter dev shell:
nix develop(ormake shell) - Verify installation: check tools (see Quick Start above)
- Create API secret:
make secret-create
- Write failing test: Edit
tests/test_*.py - Run tests:
make test(should fail) - Implement code: Edit
audio_to_subs/*.py - Run tests:
make test(should pass) - Check quality:
make quality - Commit changes
# Force a clean rebuild of the venv
rm -rf .venv
nix develop
# Check nix itself is healthy
nix flake check# Enter the dev shell
nix develop
# Run tests with verbose output
pytest -vv# On Fedora/RHEL, use :Z flag for SELinux relabeling
podman run -v .:/app:Z ...
# Or temporarily set SELinux to permissive (not recommended)
sudo setenforce 0# Verify secret exists
podman secret ls
# Recreate secret
podman secret rm mistral_api_key
make secret-create# List all available make targets
make help
# Podman help
podman --help
podman run --help
podman-compose --helpRemember: Local development happens inside the Nix dev shell (nix develop) — never install Python/Node packages directly on the host. Production always runs in containers.
For detailed deployment documentation, see the developer docs in docs/dev/.