# Trade-In MVP

# Backend Python
backend/.venv/
backend/__pycache__/
backend/**/__pycache__/
backend/*.egg-info/
backend/.pytest_cache/
backend/.ruff_cache/
backend/.mypy_cache/
# backend/uv.lock — ИГНОРИРУЕТСЯ НАМЕРЕННО, это не забытый файл.
# Мера — uv-workspace: единственный лок живёт в корне (tradein-mvp/uv.lock), и
# именно его берёт сборка (context: ./tradein-mvp, `COPY pyproject.toml uv.lock ./`
# + `uv sync --frozen`). `uv lock`, запущенный из backend/, создаёт ВТОРОЙ лок,
# который никто не читает и который тихо расходится с рабочим: на 2026-08-29
# в нём висели pillow 12.2.0, starlette 1.0.1, python-multipart 0.0.29,
# pydantic-settings 2.14.1 и weasyprint 68.1 — пять пакетов с открытыми
# advisory, которых в реальной сборке Меры нет вообще.
# Локи обновлять из корня: `cd tradein-mvp && uv lock`.
backend/uv.lock

# Frontend Node
frontend/node_modules/
frontend/.next/
frontend/out/
frontend/dist/
# frontend/package-lock.json — TRACKED с #2770: Dockerfile и CI ставят `npm ci`,
# которому лок обязателен. Правишь frontend/package.json — регенерируй лок
# (`npm install --legacy-peer-deps --no-audit --no-fund`) в том же PR, иначе
# `npm ci` роняет сборку образа и весь deploy откатывается.
frontend/next-env.d.ts

# Docker
postgres-data/
caddy-data/
caddy-config/

# Env (никогда не коммитим)
.env
.env.local
.env.*.local
backend/.env
backend/.env.runtime
frontend/.env.local

# Public html mockup (исходник от gendsgn.ru — не наш код, держим в docs)
frontend/public/tradein.html

# Test PDF outputs
docs/sample-svg-test.pdf
docs/sample-vps-*.pdf
*.tmp.pdf

# IDE / OS
.vscode/
.idea/
.DS_Store
Thumbs.db
*.swp

# Logs
*.log
