learningequality / learningequality/studio
Add S3 multipart upload support for the dev/minio backend
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 191
- Forks
- 307
- Avg merge
- 5d 6h
- Merged PRs (30d)
- 10
Description
❌ This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.
Overview
Local dev runs on minio (S3), which has no GCS resumable session. Add S3 multipart support to the dev/minio backend so upload_url's resumable scheme works there, and the web frontend (#5988) can use one chunked-upload path everywhere.
Complexity: Medium
Target branch: unstable
Context
#5975 added the resumable scheme as a server-initiated GCS session; on the S3 backend upload_url still returns single-PUT. minio supports the S3 multipart API (initiate, upload parts, complete), an equivalent chunked, resumable-style upload.
Out of Scope
- Upload integrity enforcement on minio. This is dev-only, and mirrors today's S3 single-
PUT, which does not enforceContent-MD5.
Acceptance Criteria
- On the S3 backend, the resumable
upload_urlpath initiates an S3 multipart upload and returns what the client needs to upload parts and finalize. - A file uploads to dev/minio in multiple parts via this path.
- The web frontend uses this path in dev with no single-
PUTfallback.
References
- AWS S3 multipart upload overview: https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html
- Presigned URLs for multipart upload with boto3: https://github.com/boto/boto3/issues/2305
- Browser multipart and presigned-URL reference implementation (S3/minio): https://github.com/prestonlimlianjie/aws-s3-multipart-presigned-upload
AI usage
Drafted with Claude (Opus 4.8), which researched the minio/S3 multipart references; I reviewed and edited.
Revised later with Claude (Opus 5) to put the #5975 prerequisite in past tense now that it has closed, and to remove a one-line "The Change" section that restated an acceptance criterion.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
This issue centers on the S3 backend's resumable upload_url path and the web frontend integration; first read issue #5975 and the AWS multipart-upload references. Trace how upload_url currently handles S3 single-PUT uploads, then verify the acceptance criteria by uploading a file to dev/minio in multiple parts and confirming the frontend uses that path without fallback.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws, python
- Domain
- api, backend, cloud, frontend
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100