Ahmed Abdelaziz

EasyDownloadDesign Docs

Functional Requirements

What the app must do, in plain language.

Last updated August 2026

Overview

These are the product requirements in plain language — what a user should be able to do, and what the app should handle quietly.

How to read

Must = core value. Should = improves the experience. Can = nice to have.


Core User Tasks

IDRequirementPriority
FR-01Paste a URL and see title, thumbnail, duration, and qualities before downloadingMust
FR-02Pick a quality and download to a chosen folder with progress (percent, speed, ETA)Must
FR-03Pause, resume, cancel, and retry a downloadMust
FR-04Queue many downloads and control how many run at once (1–10)Must
FR-05Inspected URLs are remembered (unique, 30-day retention) so past searches are one click awayShould
FR-06History survives restarts — grouped Today / Yesterday / dateMust
FR-07Convert a completed video (MP4/MKV) or extract audio (MP3/AAC/Opus/FLAC)Should
FR-08No duplicate completed downloads for the same video + formatShould
FR-09Desktop notifications for completion/failure (toggleable)Can
FR-10Settings: folder, notifications, concurrency — persisted locallyMust

Behavior That Matters

  • Inspection before commitment — users pick from human labels like "1080p MP4", not raw format codes.
  • Retry is deliberate, not magical — failed or cancelled downloads can always be retried with their original settings (even after an app restart). Automatic retry with backoff for transient network failures is a documented future enhancement, not shipped behavior.
  • No wasted downloads — starting the same video + quality twice is rejected while a completed copy still exists.
  • File safety — each completed download prints its final path; the manager verifies it on disk. Missing files are repaired or pruned.

Out of Scope

To keep the app focused:

  • No cloud sync, no accounts, no sharing links.
  • No built-in video player — use the system player via "Open file".
  • No proxy settings or auto-update checks in the current version.
  • No playlist downloads — yt-dlp runs with --no-playlist by design; single videos only. Playlist support is a candidate for future versions, not a hidden half-feature.

Trade-off made visible

Writing what is not included avoids building a second product inside the first.


Acceptance in One Glance

  • A new user can download a single video in under a minute with no setup.
  • A failed download can be retried from history after a full app restart, restoring its original settings.
  • Closing and reopening the app shows the same downloads and history — nothing lost.

Why it matters

Requirements are written for real people, not for a spec shelf. If a feature doesn't help "save this video now," it waits.