Skip to content

Improve upload workflow with queue and progress states #27

@longobucco

Description

@longobucco

Description

Upgrade the document upload flow to properly support real course materials and repeated internal testing.

The workflow must support:

  • multi-file upload
  • per-file upload progress
  • per-file backend processing state
  • retry for failed uploads
  • clear and actionable error messages

Scope

Implement a queue-based upload UI where each file is tracked independently.

Include:

  • multi-file selection / drag-and-drop

  • per-file client-side state (queued, uploading, uploaded, processing, indexed, failed)

  • per-file upload progress bar

  • per-file backend processing status polling

  • per-file retry action

  • clear distinction between:

    • upload failure
    • backend processing failure

Technical notes

  • Model each file as an independent queue item
  • Store backend documentId after successful upload
  • Poll processing status only for uploaded/processing items
  • Keep upload progress and processing status as two separate concepts
  • Support limited upload concurrency (recommended: 2–3 files max)
  • Validate files client-side before upload when possible

Suggested queue item shape

type UploadStatus =
  | "queued"
  | "uploading"
  | "uploaded"
  | "processing"
  | "indexed"
  | "failed";

Each queue item should track at least:

  • local id
  • file metadata
  • upload progress
  • status
  • backend document id
  • processing stage
  • error message
  • retry count

Deliverables

  • working multi-file upload queue
  • live per-file upload progress
  • processing state updates in UI
  • retry support for failed files
  • clear error messages for validation, network, server, and processing failures

Acceptance criteria

  • users can upload multiple files in one action
  • each file is shown as an independent queue item
  • each file displays upload progress
  • each file displays backend processing state after upload
  • failed files can be retried individually
  • upload errors and processing errors are clearly distinguished
  • one failed file does not break the rest of the queue

Why it helps

If you’re working with real PDFs/slides, this significantly improves team productivity during testing, debugging, and internal demos.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions