- Add DELETE endpoints for tags, packages, and projects with proper ref_count
decrements for all affected artifacts
- Implement atomic ref_count operations using SELECT FOR UPDATE row-level locking
to prevent race conditions
- Add custom storage exceptions (HashComputationError, S3ExistenceCheckError,
S3UploadError) with retry logic for S3 existence checks
- Handle race conditions in upload by locking artifact row before modification
- Add comprehensive logging for all ref_count changes and deduplication events
- Include ref_count in upload response schema
- Backend: Python 3.12 with FastAPI, SQLAlchemy, boto3
- Frontend: React 18 with TypeScript, Vite build tooling
- Updated Dockerfile for multi-stage Node + Python build
- Updated CI pipeline for Python backend
- Removed old Go code (cmd/, internal/, go.mod, go.sum)
- Updated README with new tech stack documentation