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.
Key Features
Section titled “Key Features”- 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
Page Structure
Section titled “Page Structure”| Route | Purpose |
|---|---|
/business/apps/filerequests | Filterable list of file requests with search and status filters |
/business/apps/filerequests/new | Create a new file request |
/business/apps/filerequests/[id] | Single request detail with submissions |
Data Model Overview
Section titled “Data Model Overview”FileRequest
Section titled “FileRequest”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.
FileRequestSubmission
Section titled “FileRequestSubmission”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.
FileRequestListFilters
Section titled “FileRequestListFilters”Filter parameters for listing: status, search, page, per_page.
Key Components
Section titled “Key Components”- 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 badges —
statusVariantmaps active to default, closed to secondary, expired to destructive
Notable Integrations
Section titled “Notable Integrations”- Services:
listRequestsfrom$lib/apps/filerequests/serviceswith pagination and filtering support - URL-based filtering: Uses
$app/navigationgotoand$app/statepagefor filter state via query parameters withreplaceState: true - UI components: Uses Bits UI
Select.Rootfor the status dropdown - Database: Stored in a separate
ext_filerequestsschema