Serverless Userpics
Open-source code: Github
Try live: userpics.devclad.com
Background?
I had been using Dicebear avatars locally for my app (DevClad) but then I came across a better set of avatars by Craftworks.design (a free set) and thought I should use them for all my projects.
Gist of it
So, long story short, I created a Cloudflare R2 bucket, uploaded 100 avatars, created a serverless Go function using Vercel serverless functions and voila!
Run curl -XGET 'https://userpics.devclad.com/api/getpic'
and instantly get a random user avatar URL.
Why a URL?
So- why a URL? Why not streamed bytes directly in response?
It works for everyone this way.
✅ Case 1: Someone might be simply embedding the image. A permlink of the image is objectively better.
✅ Case 2: Save it to your own S3 bucket.
How does it work
✅ Case 1: curl -XGET 'https://userpics.devclad.com/api/getpic'
✅ Case 2: An example in Python (specifically tailored for Django) that works with userpics.devclad.com
def random_avatar(): name = str(uuid.uuid4())[:8] with open(f"media/avatars/{name}.png", "wb+") as f: url = requests.get("https://userpics.devclad.com/api/getpic") response = requests.get(url.text, stream=True) if not response.ok: raise Exception("Could not get avatar") for block in response.iter_content(1024): if not block: break f.write(block) return f"avatars/{name}.png"
That's it. Feel free to open feature requests or whatever.
The repo is here - github.com/arthtyagi/serverless-userpics
Top comments (0)