dropthejase reroutes document uploads straight to storage

Files now go from the browser directly into cloud storage, instead of being pushed through the server in the middle.

intakesecurity

dropthejase reworked how documents get into louis. The old path made every uploaded file pass through a server process that held the whole document in memory before storing it - fine for a contract, awkward for a 200-page deposition. The new flow asks the server only for a short-lived, single-use link, and the browser uploads the file directly to cloud storage. Nothing big is buffered server-side, and large files stop being a bottleneck.

The quieter win is on security. The earlier design handed the browser temporary cloud credentials to do the upload itself; dropthejase tore that out entirely. The browser now carries nothing but the user's ordinary sign-in token, and the server alone decides where each file is allowed to land - scoped to that specific user's folder. Less standing access in the browser is less to leak.

So what Anyone forking louis to handle real-world document volumes should look here - it's a cleaner, safer upload path that scales past small files.

View this fork on GitHub →

Spotted something wrong? Or know the PR text has fresher detail than the writeup above?

Commits in this thread

7 commits from dropthejase/louis, oldest first. Source extracted verbatim from the harvested git log.

SHA Subject Author Date
3985ac4f feat: replace multipart upload with direct S3 prepare/upload/register flow Jason Lee 2026-05-11 ↗ GitHub
commit body
- Add POST /single-documents/prepare and /:documentId/register
- Add POST /projects/:projectId/documents/prepare and /documents/:documentId/register
- Remove handleDocumentUpload, extractStructureTree, countPdfPages
- Remove multipart POST / and POST /:projectId/documents routes
- Replace uploadStandaloneDocument and uploadProjectDocument in mikeApi.ts
  with 3-step prepare→S3 uploadData→register flow
c8ebfa45 docs: mark upload refactor complete in FEATURE-PARITY.md Jason Lee 2026-05-11 ↗ GitHub
af14662b docs: update ARCHITECTURE.md upload flow to reflect direct S3 prepare/register Jason Lee 2026-05-11 ↗ GitHub
61e73c12 fix(upload): replace Amplify Identity Pool upload with backend presigned S3 PUT URLs Jason Lee 2026-05-12 ↗ GitHub
commit body
- /prepare endpoints now generate presigned PutObject URLs (15 min TTL)
- Frontend uploads via XHR PUT to presigned URL - no AWS credentials on client
- Revert IAM auth role to original cognito-identity sub variable; remove PutObject
- S3 paths stay as user pool sub (consistent with DB user_id)
- Update ARCHITECTURE.md and FEATURE-PARITY.md to reflect new upload flow
f14a2d96 Merge main into development Jason Lee 2026-05-16 ↗ GitHub
703ad3a2 refactor(auth): remove Cognito Identity Pool - uploads use presigned URLs Jason Lee 2026-05-16 ↗ GitHub
commit body
Identity Pool credentials were issued but never consumed. All uploads
go through backend-generated presigned URLs (mikeApi.ts). Removes:
- CfnIdentityPool, AuthenticatedRole, per-user S3 bucket policy (AuthStack)
- AwsContext.tsx, credentials.ts, storage.ts (dead frontend code)
- VITE_IDENTITY_POOL_ID env var and amplifyConfig Storage/identityPoolId

Also updates README highlight to reflect AgentCore microVM isolation
instead of the now-removed Identity Pool isolation claim.
04adf9ac Merge development into main Jason Lee 2026-05-16 ↗ GitHub

Capture this thread into my fork

Download a single Markdown prompt that tells Claude how to port every commit above into your working tree — adapting paths and structure to match your repo. Run it via claude -p < capture-thread-341.md from inside the repo you want the changes in.

⬇ Download capture-thread-341.md