Senior Engineer at Haven
Get Pronto
A CDN-backed, developer-first asset storage and delivery service with a focus on affordability.
Get Pronto is a project I started over the Easter break. It’s a platform that lets developers store, transform, and deliver digital assets — images, videos, JSON — without the pricing cliff that comes with the bigger players in the space.
The idea came from a recurring frustration with the existing developer tooling landscape. Services like Cloudinary are excellent, but there’s a huge gap between the free tier and the entry-level paid plan. For a solo developer or a small team whose usage just tips over the free limits, that jump can be hard to justify. Get Pronto is aimed squarely at that gap: generous limits, transparent pricing, and no anxiety about unexpected charges.

How it works
Users upload files via the dashboard, the REST API, or the official getpronto-sdk Node/browser package. Uploads use a presigned URL flow — the client requests a presigned PUT, sends the file directly to storage, then confirms the upload with the API to create the file record.
Once a file is uploaded, it can be served either as the original or as an on-the-fly transformation. Transforms are driven by URL parameters (resize, crop, format conversion, blur, rotate, and so on), processed with Sharp, and cached back to storage so repeat requests are served straight from the CDN. A global CDN sits in front of everything to keep delivery fast regardless of where the user is.
Tech
The backend is a Node.js + TypeScript Fastify API, with Postgres and Prisma for the data layer. Files live in Backblaze B2 via the S3-compatible API, which keeps storage costs low enough to pass on to users. Sharp handles all image processing, and Stripe powers billing.
The dashboard is a Next.js + Tailwind app, and the marketing site is a separate Next.js project. Everything runs in Docker locally and is deployed to a self-hosted k3s cluster via Helm, with traces, metrics, and logs flowing into a self-hosted SigNoz instance over OpenTelemetry.
There’s also a small SDK published to npm as getpronto-sdk, built with tsup, which wraps the upload flow and exposes a fluent transform builder so consumers can chain operations like .resize(800).format('webp') rather than constructing URLs by hand.
It’s still early days, but the core flow — upload, transform, deliver — is live. If you’re after an efficient, budget-friendly way to manage your application’s assets, give it a try.