Skip to content

File Requests

The File Requests app lets users create request links that external parties can use to submit files. Each request can be configured with constraints like file limits, size caps, and allowed extensions, and includes a review workflow for approving or rejecting submissions.

  • Create file requests with subject, description, password protection, file limits, size caps, and allowed extensions
  • Shareable request links that external users can access to upload files
  • Status lifecycle — active, closed, expired (with optional expiration dates)
  • Submission review — approve or reject submitted files with rejection reasons
  • Import to documents — approved submissions can be imported into the Documents app via imported_document_id
  • Search and filter — search by keyword and filter by status with URL-based query parameters
RoutePurpose
/business/apps/filerequestsFilterable list of file requests with search and status filters
/business/apps/filerequests/newCreate a new file request
/business/apps/filerequests/[id]Single request detail with submissions

The core entity with subject, optional description, password_hash for protected requests, max_documents limit, max_file_size_mb, optional allowed_extensions array, status (active, closed, expired), and expires_at.

Tracks each file submitted to a request: submitter_name, submitter_email, file_name, storage_path, file_size, file_type, and a review status (pending, approved, rejected) with optional reviewed_by, reviewed_at, and rejection_reason. The imported_document_id links to a Document if the submission was imported.

Filter parameters for listing: status, search, page, per_page.

  • Header — shows a file upload icon, title, total count badge, and “New Request” button
  • Filter bar — search input with icon and a status dropdown (All Statuses, Active, Closed, Expired) using URL query parameters for state management
  • Request cards — each card shows subject, status badge, creation date, optional expiration date, and max file count. Cards are clickable links to the detail view.
  • Status badgesstatusVariant maps active to default, closed to secondary, expired to destructive
  • Services: listRequests from $lib/apps/filerequests/services with pagination and filtering support
  • URL-based filtering: Uses $app/navigation goto and $app/state page for filter state via query parameters with replaceState: true
  • UI components: Uses Bits UI Select.Root for the status dropdown
  • Database: Stored in a separate ext_filerequests schema