I think compression also need to be done in client.
1. Client must support access to S3/R2 (user provide them)
2. When upload client will upload original resolution to S3. After completion client will send alternative lower resolution.
3. When other people check, it will try to get the lower version if available.
So there’s must be S3 naming convention for each format/quality