Import files from Dropbox into Texera datasets
- Dominant language
- Scala
- Stars
- 314
- Forks
- 187
- Avg merge
- 1d 21h
- Merged PRs (30d)
- 214
Description
### Task Summary
## Background
Sub-task of #5242. Builds on the provider abstraction introduced in the Google Drive import task (sibling sub-issue), adding **Dropbox** as the second import source. A second provider validates that the connection layer is genuinely extensible, as proposed by @xuang7 in #4240.
Same design principles as the Google Drive task (per @aicam's decisions in #4240): **no token persistence** (one-time OAuth token per import, discarded after the transfer) and **backend streaming** directly into dataset storage (LakeFS/S3).
## Proposed changes
- **Backend (file-service):**
- A Dropbox implementation of the import provider interface, using `POST https://content.dropboxapi.com/2/files/download` for streaming download and `files/list_folder` for listing.
- Dropbox app key configuration via env vars.
- **Frontend:**
- Add Dropbox as a provider option in the "Import from cloud" flow, using the official **Dropbox Chooser** for file selection (OAuth2 with PKCE, short-lived token — nothing stored).
- Unlike Google Drive, Dropbox has no restricted-scope review process, so an in-app browsing experience via the provider interface's `listFiles` can be considered here without any verification burden.
## Out of scope
- Folder / bulk import; background jobs for very large files (consistent with the Google Drive sub-issue).
### Task Type
- [ ] Refactor / Cleanup
- [ ] DevOps / Deployment / CI
- [ ] Testing / QA
- [ ] Documentation
- [ ] Performance
- [x] Other
Contributor guide
Assessment
This issue has not been assessed yet.