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.
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.