Droplet
Personal cloud storage that treats uploads as a first-class product: direct-to-CDN transfers, instant previews and a file tree that never lies.
What it is.
Droplet is cloud file storage that behaves like a native app. Files upload direct to ImageKit through short-lived signed tokens — they never touch the application server — while PostgreSQL keeps a fast, queryable record of every file, folder and permission.
Auth is handled by Clerk, the schema by Drizzle ORM, and the UI by Next.js App Router with server components doing the heavy lifting. The result: a storage product where the backend stays tiny, uploads stay fast, and the file tree is always consistent with the database.
Problems worth solving.
- Large uploads through a serverless-friendly backend — proxying bytes through Node was slow and expensive.
- Keeping the file tree, storage quotas and trash state perfectly consistent with what is actually on the CDN.
- Serving images fast worldwide without paying egress prices on every preview render.
- Making private files private — no guessable URLs, no leaked tokens.
Built in four moves.
Direct-to-cloud uploads
The server issues short-lived signed upload tokens; bytes flow straight from browser to ImageKit, so large files never hit the app server.
SQL as the source of truth
Drizzle ORM over PostgreSQL models folders, files, versions and trash — the tree view is one indexed query, never a CDN listing.
Clerk for identity
Session management, user profiles and route protection handled by Clerk — every file row is scoped to an authenticated user.
CDN-powered previews
ImageKit transformations generate thumbnails on the edge; previews load fast everywhere without full-size downloads.
What it does.
Drag & drop uploads
Multi-file, resumable uploads with live progress straight to the CDN.
Folder tree
Create, rename and move folders with instant, query-backed consistency.
Trash & restore
Soft-delete with a restore window — nothing is truly gone until you say so.
Image previews
Edge-transformed thumbnails for instant grids, full size on click.
Storage meter
Per-user quota tracking straight from the database, always accurate.
Secure by default
Signed, expiring URLs — private files are never publicly addressable.
How it fits together.
- Signed direct uploads over server proxying — cuts upload latency and server load dramatically.
- Drizzle over a heavyweight ORM — type-safe SQL with near-zero runtime overhead.
- Soft deletes in SQL — trash/restore is a status column, not a second storage bucket.
What it proved.
- The best upload server is the one that never sees the upload — signed URLs plus a metadata store beats byte proxying every time.
- Treat the database as the product's source of truth and the CDN as pure delivery.
- Server actions made the file operations feel local — one round trip, no hand-written API boilerplate.
