The Upload That Stops at 40 MB
Work from the brief alone. Write what you would produce — actors, requirements, data, a first slice, your unknowns — before opening anything below it; the exercise stops working if you read the reality first.
The file-upload service works on the happy path. Now: the connection drops at 40 of 50 MB (illustrative); the same file is uploaded twice; a user downloads a file while another user replaces it; the object store returns an error after the database row was written. For each, say what the user should see, what the system must never do, and what the smallest handling is.
Your attempt
Nothing here is checked. It exists so that the reveal below is a comparison rather than a reading.
Designing a resumable, chunked, deduplicating, versioned upload pipeline because the failure list was long. Every item on it is a real feature and none was asked for; the four invariants are held by a status column, an upload id and immutable keys, and the pipeline would have taken the month the service had.
Read this even if you are confident. It is here rather than behind a button because it is the move most people actually make, it produces things that look like a project, and its cost arrives when the first hard requirement has nowhere to go.