# Video Compression Web App Roadmap

## MVP (Minimal Viable Product)

### Issue 1: Frontend - Single File Upload Page
**Description:**
Create a simple webpage allowing the user to upload a single video file.

**Checklist:**
- [ ] Create HTML upload form.
- [ ] Add "Upload" button.
- [ ] Display "Processing..." message while backend compresses video.
- [ ] Show download link after compression is complete.

### Issue 2: Backend - FFmpeg Compression for One File
**Description:**
Implement server-side compression for a single uploaded video file using FFmpeg.

**Checklist:**
- [ ] Receive uploaded file and store temporarily.
- [ ] Compress video using H.265/HEVC with preset fast and CRF ~24.
- [ ] Use AAC audio codec at ~128kbps.
- [ ] Send compressed file back to frontend.
- [ ] Delete temporary files after download.

## Intermediate

### Issue 3: Frontend - Multiple File Uploads
**Description:**
Extend the frontend to allow uploading multiple files simultaneously.

**Checklist:**
- [ ] Support selecting multiple files.
- [ ] Display individual progress bars for each file.
- [ ] Allow preset selection (codec, resolution, bitrate).

### Issue 4: Backend - Asynchronous Multiple File Processing
**Description:**
Enable backend to handle multiple file uploads asynchronously.

**Checklist:**
- [ ] Process multiple videos in parallel.
- [ ] Generate individual download links for each compressed file.
- [ ] Validate uploaded files to ensure they are videos only.

## Advanced

### Issue 5: Backend - Compression Job Queue
**Description:**
Implement a job queue to manage video compression tasks efficiently.

**Checklist:**
- [ ] Queue video compression jobs.
- [ ] Limit concurrent compression tasks to prevent server overload.
- [ ] Track job status (pending, processing, complete).

### Issue 6: Backend - User Authentication & File History
**Description:**
Add optional user accounts and allow users to track their uploaded videos.

**Checklist:**
- [ ] Implement user registration and login.
- [ ] Track uploaded files per user.
- [ ] Allow users to download their file history.
- [ ] Auto-delete files after a configurable number of days.

### Issue 7: Security Enhancements
**Description:**
Protect the server and users from misuse and unsafe uploads.

**Checklist:**
- [ ] Sanitize filenames to avoid malicious paths.
- [ ] Reject non-video files.
- [ ] Enforce max file size limit.
- [ ] Ensure temporary files are stored in a safe directory.

### Issue 8: Optional Features
**Description:**
Add advanced functionality to improve user experience.

**Checklist:**
- [ ] Provide multiple compression presets (H.264 1080p, H.265 1440p).
- [ ] Integrate with NAS or external storage for long-term retention.
- [ ] Add public/private mode for uploaded files.

