Wallpaper CDN screenshot

The problem

Shipping a wallpaper app usually means standing up an API, a database and a CDN just to serve a list of images — infrastructure that costs money and attention for content that changes a few times a month.

What I built

A public JSON endpoint any client can read. Drop images into category folders in a GitHub repo, push, and a workflow regenerates the index with full-resolution URLs and WebP thumbnails; jsDelivr serves it from the edge. Flutter, React Native and web apps read one file and get every category, filename, image URL and preview.

How I built it

A GitHub Action walks the wallpapers/ tree on every push and rebuilds images.json from the folder structure, writing both full-resolution and thumbnail entries. jsDelivr serves the repository at the edge, so reads are cached close to the client instead of hitting GitHub directly.

Key decisions

  • Made the folder structure the schema — a new category is a new directory, not a migration.
  • Generated the index in CI rather than at request time, so there is no runtime to deploy, monitor or pay for.

Result

Open source under MIT, with a documented endpoint and a reference index across five categories. It is the data layer behind my own Flutter wallpaper app, and any client can point at it.

Back to all work