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.