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?
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
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?
eduardogarza•1h ago
Cloudflare Images does this and it places the transformations in its CDN as well. What do I get from this that I don't get from them?
taehun•1h ago
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).
Upload an image, get a global CDN URL. Transform on the fly with query params:
- https://img-src.io/i/user/photo.jpg ← original - https://img-src.io/i/user/photo.jpg?w=800 ← resize - 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
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)
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 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?