A browser-based file upload tool for pushing media assets to any S3-compatible object storage endpoint (RustFS, MinIO, AWS S3, etc.). Built for broadcast and post-production environments where large files need to land in a managed folder structure.
## Features
- Upload up to 50 files at once (50GB max per file)
- Hierarchical folder tree for organizing files into prefixed S3 keys
- Multi-user authentication with admin and standard user roles
- Optional live AMPP job monitoring panel (Grassvalley AMPP integration)
- Blocks executable file uploads server-side
- Persistent folder tree and user data stored in a Docker volume
- Timeout-tolerant uploads — treats slow S3 acknowledgements as success rather than failing
## Prerequisites
- Docker and Docker Compose
- An S3-compatible storage endpoint with access credentials
- (Optional) A Grassvalley AMPP account and API key for job monitoring
## Quick Start
1. Clone the repo and copy the example env file:
```bash
cp .env.example .env
```
2. Edit `.env` with your credentials:
```env
S3_ENDPOINT=https://your-s3-endpoint.com
S3_ACCESS_KEY=your-access-key
S3_SECRET_KEY=your-secret-key
S3_BUCKET=upload
S3_REGION=us-east-1
PORT=3000
# Optional — enables the AMPP job monitoring panel
When `AMPP_API_KEY` is configured, the dashboard displays a live panel showing the status of jobs running on the Grassvalley AMPP platform. The API key should be a Base64-encoded `client_id:client_secret` string, which is exchanged for a bearer token automatically using the OAuth2 client_credentials flow.