Public
Like
untitled-3286
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Viewing readonly version of main branch: v6View latest version
A sophisticated file upload system for processing multiple invoice documents with batch management, progress tracking, and real-time status updates.
- Bulk Upload: Upload up to 100 files simultaneously
- Progress Tracking: Real-time upload progress with detailed status
- Batch Management: Group uploads with statistics and status monitoring
- Multiple View Modes: List and grid views for different file quantities
- File Management: Select, remove, retry, and cancel individual files
- Format Support: PDF, JPG, PNG, TIFF, DOCX files up to 50MB each
- Responsive Design: Works on desktop and mobile devices
├── backend/
│ ├── index.ts # Main Hono server
│ ├── routes/
│ │ ├── upload.ts # File upload endpoints
│ │ └── batch.ts # Batch management endpoints
│ └── database/
│ ├── schema.ts # Database schema
│ └── queries.ts # Database operations
├── frontend/
│ ├── index.html # Main HTML template
│ ├── index.tsx # React app entry point
│ ├── components/
│ │ ├── App.tsx # Main app component
│ │ ├── BulkUploadPage.tsx # Main upload interface
│ │ └── upload/ # Upload component library
│ │ ├── index.ts # Component exports
│ │ ├── types.ts # TypeScript types
│ │ ├── utils.ts # Utility functions
│ │ ├── UploadContainer.tsx
│ │ ├── EnhancedFileUploader.tsx
│ │ ├── FileGalleryView.tsx
│ │ └── BatchStatusManager.tsx
│ └── style.css # Custom styles
└── shared/
├── types.ts # Shared TypeScript types
└── utils.ts # Shared utility functions
POST /api/v1/batch/upload- Upload multiple files as a batchGET /api/v1/batch/:batchId/status- Get batch upload statusPOST /api/v1/batch/:batchId/retry- Retry failed uploads in a batchDELETE /api/v1/batch/:batchId- Cancel/delete a batch
- Frontend: React 18, TypeScript, TailwindCSS
- Backend: Hono, SQLite
- Storage: Val Town Blob Storage
- File Processing: Built-in validation and metadata extraction
- The backend automatically serves the frontend at
/ - Upload files by dragging and dropping or clicking "Select Files"
- Monitor progress in real-time with the batch summary
- Switch between list and grid views for better file management
- Use batch operations for efficient file handling
No API keys required - uses Val Town's built-in services.