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)