Project 06

CloudSnap

Upload anything. Get a CDN URL.

A free media-hosting web app that uploads images and videos to GitHub and returns permanent jsDelivr CDN links in seconds.

Next.jsTypeScriptCloudflare PagesGitHub APIjsDelivrTailwind

Try it

CloudSnap landing page with upload CTA
The mission

Why this exists.

An image URL should not vanish, and a CDN should not require a credit card. CloudSnap exists so developers can drop a file, own the GitHub repo it lives in, and get a commit-pinned jsDelivr link that still works after the file is gone.

Inside the build

Thought through, end to end.

5 highlights

GitHub-as-CDN Pipeline: Engineered an upload flow that commits files to a public repo and returns commit-pinned jsDelivr URLs that stay online forever.

Full File Browser: Built drag-and-drop multi-file uploads, folder management, inline image/video previews, and one-click copy for CDN and raw links.

Developer API: Shipped public and private REST endpoints for upload, list, delete, and folder creation — usable from cURL, JS, or Python.

Edge Deployment: Designed for Cloudflare Pages with PIN login, API key auth, and support for images up to 100MB and videos up to 500MB.

UI/UX: Built a neo-brutalist yellow-and-black interface focused on speed and clarity for developers hosting media without paid CDNs.

The hard parts

Constraints I designed around.

The features that look effortless were the ones that fought back.

  1. 01

    Links that outlive the file

    The obstacle

    Branch-based CDN URLs break the moment someone deletes or overwrites the asset. Imgur and friends disappear later.

    How I solved it

    Commit-pin every upload. The jsDelivr URL points at a git SHA, so the bytes stay on the edge even if the repo moves on.

  2. 02

    GitHub is not a media library

    The obstacle

    The GitHub API speaks commits and blobs — not folders, previews, and copy-paste CDN links.

    How I solved it

    Built a full file browser: drag-and-drop, rename, folders, inline image and video preview, and one-click copy for CDN and raw URLs.

  3. 03

    UI for humans, API for scripts

    The obstacle

    A pretty uploader is useless if you cannot automate it; a raw API is useless if you have to curl from a phone.

    How I solved it

    Shipped public (bring-your-own token) and private (API key) REST endpoints next to a PIN-protected Cloudflare Pages UI — 100MB images, 500MB video, no origin server.

Product in motion

See how it feels.

A real walkthrough of the product, interactions, and complete flow.

Next project

News Snap

Headlines you can swipe through

View next project
9:41
News Snap trending home page