3 ms·
Hey HN, After years of building web services on AWS, I got tired of setting up the same image optimization stack over and over: CloudFront + Lambda@Edge + S3,
by taehun 8mo ago
Hey HN,
After years of building web services on AWS, I got tired of setting up the same image optimization stack over and over: CloudFront + Lambda@Edge + S3, IAM policies, cache invalidation — 2-3 hours of config per project, every single time.
All I wanted was: upload an image, get a URL, add ?w=800 to resize it.
Why did that require stitching together 3 AWS services?
So I built img-src (https://img-src.io https://img-src.io).
Upload an image, get a global CDN URL. Transform on the fly with query params:
- https://img-src.io/i/user/photo.jpg https://img-src.io/i/user/photo.jpg ← original
- https://img-src.io/i/user/photo.jpg?w=800 https://img-src.io/i/user/photo.jpg?w=800 ← resize
- https://img-src.io/i/user/photo.webp?q=85 https://img-src.io/i/user/photo.webp?q=85 ← format + quality
- https://img-src.io/i/user/photo.avif?w=400&h=400&fit=cover https://img-src.io/i/user/photo.avif?w=400&h=400&fit=cover
No CloudFront. No Lambda. No S3 bucket config.
How it works:
- Upload via dashboard or REST API
- Images stored on Cloudflare R2 (zero egress fees = unlimited bandwidth)
- CDN Worker serves from 200+ edge locations
- Rust/libvips container handles transcoding (WebP, AVIF, JPEG, PNG)
Tech stack:
- Frontend: React 19 + Vite + TailwindCSS
- Backend: TypeScript + Hono on Cloudflare Workers
- CDN: Cloudflare Workers + R2 + KV
- Transcoder: Rust + Axum + libvips (Docker container)
- Auth: Clerk (JWT/JWKS)
- Docs: Mintlify (https://docs.img-src.io https://docs.img-src.io)
Pricing:
- Free: 10GB storage, 1K transforms/month, unlimited bandwidth
- Pro: $5/month — 50GB, 10K transforms, unlimited bandwidth
The unlimited bandwidth is possible because R2 has zero egress costs.
Pro plan infrastructure cost is ~$0.85/user/month.
I built this solo, pair-programming with Claude Code ~3 hours/day.
My role was mostly testing and providing feedback on the generated code.
API docs: https://docs.img-src.io https://docs.img-src.io
OpenAPI spec available for SDK generation (TypeScript SDK in progress).
Would love feedback from HN, especially on:
- Pricing — is $5/month the right price point vs Cloudinary ($99+), ImageKit ($49)?
- Missing features — what would make you switch from your current setup?
- API design — anything you'd change?
- Agent workflows — if your AI agent needed to handle images, what would the ideal integration look like?