Implement PDF file upload functionality #4

Closed
opened 2026-03-28 12:33:45 +00:00 by KnallerKalle · 1 comment
KnallerKalle commented 2026-03-28 12:33:45 +00:00 (Migrated from github.com)

As part of Phase 1 (Foundation), we need to implement PDF file upload functionality to enable users to convert Feldenkrais lesson PDFs into text for audio generation.

Implementation

Frontend Component

FileUpload component with:

  • Drag-and-drop zone for PDF uploads
  • File picker alternative for mobile
  • File progress indication during upload
  • File validation (PDF format, 50MB size limit)
  • Upload modal integration in Library page

Backend Integration (Rust/Tauri)

  • save_uploaded_file() function with PDF magic byte validation
  • Cross-platform uploads directory creation
  • Unique filename generation
  • save_pdf_upload Tauri command
  • Database record creation in uploads table

Acceptance Criteria

  • Drag-and-drop zone works on desktop
  • File picker works on mobile
  • PDF files only accepted (magic byte validation)
  • 50MB size limit enforced
  • Upload progress displayed
  • File saved to app data directory
  • Database record created
  • Error handling for invalid files
  • Mobile-responsive design

Closes issue

As part of Phase 1 (Foundation), we need to implement PDF file upload functionality to enable users to convert Feldenkrais lesson PDFs into text for audio generation. ## Implementation ### Frontend Component FileUpload component with: - Drag-and-drop zone for PDF uploads - File picker alternative for mobile - File progress indication during upload - File validation (PDF format, 50MB size limit) - Upload modal integration in Library page ### Backend Integration (Rust/Tauri) - save_uploaded_file() function with PDF magic byte validation - Cross-platform uploads directory creation - Unique filename generation - save_pdf_upload Tauri command - Database record creation in uploads table ### Acceptance Criteria - Drag-and-drop zone works on desktop - File picker works on mobile - PDF files only accepted (magic byte validation) - 50MB size limit enforced - Upload progress displayed - File saved to app data directory - Database record created - Error handling for invalid files - Mobile-responsive design Closes issue
KnallerKalle commented 2026-03-28 12:33:53 +00:00 (Migrated from github.com)

Closed by commit b4c3c59. All acceptance criteria implemented:

  • ✅ Drag-and-drop zone works on desktop
  • ✅ File picker works on mobile
  • ✅ PDF files only accepted (magic byte validation)
  • ✅ 50MB size limit enforced
  • ✅ Upload progress displayed
  • ✅ File saved to app data directory
  • ✅ Database record created in uploads table
  • ✅ Error handling for invalid files
  • ✅ Mobile-responsive design
Closed by commit b4c3c59. All acceptance criteria implemented: - ✅ Drag-and-drop zone works on desktop - ✅ File picker works on mobile - ✅ PDF files only accepted (magic byte validation) - ✅ 50MB size limit enforced - ✅ Upload progress displayed - ✅ File saved to app data directory - ✅ Database record created in uploads table - ✅ Error handling for invalid files - ✅ Mobile-responsive design
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Kalle/ATM#4
No description provided.