Introduction
Full-stack S3 toolkit for the React ecosystem — server handlers, client hooks, shadcn UI, and database tracking.
dimah-s3 is a modular, full-stack S3 toolkit for React and Node.js runtimes. It provides typed server handlers, headless React hooks, optional shadcn UI components, and a database plugin for object tracking.
It is not an S3 SDK wrapper. List, copy, tagging, and other operations stay in your own code with the AWS SDK.
Architecture flow
- Browserrequests signed URL
- Serverexecutes guards & signs URL
- S3 Bucketreceives direct upload bytes
It follows a presign-first architecture: the backend generates short-lived signed URLs, the browser communicates directly with your S3-compatible storage, and AWS credentials never leave your server.
Coding agents: llms.txt · llms-full.txt.
What you get
- Fast setup — a working upload in minutes, not a week of wiring
- Full stack — server, client, and optional shadcn UI; not a client uploader you have to back yourself
- Full lifecycle — upload, download, and delete, including multipart
- Server hooks — auth, quotas, confirm, and cleanup where they belong
- Optional database — ownership, listings, and resumable uploads when you need them
Frequently asked questions
Upload and download are presigned (the client communicates directly with S3). Deletion is executed server-side: the client sends a delete request to your API, the server runs your delete.guard, issues DeleteObjectCommand via the AWS SDK, and triggers onDeleted cleanup.
Yes. Any S3-compatible storage works out of the box. For Cloudflare R2, configure upload: { method: "PUT" }. For MinIO, pass forcePathStyle: true in your S3Client.
Explore documentation
Quickstart
Get a working upload flow running in under 5 minutes.
Server Guide
Configure routes, lifecycle hooks, guards, and runtimes.
React Client
Headless hooks for upload, download, and delete.
UI Components
Prebuilt shadcn components for buttons, dropzones, and status.
Providers
Setup guides for AWS S3, Cloudflare R2, and MinIO.
Database Plugin
Track object metadata, ownership scopes, and file listings.