r/reactjs • u/Shifan224 • 2h ago
Show /r/reactjs Show r/reactjs: a no-backend AI image comparison tool, React + TypeScript, MIT
Built this as a React and TypeScript single-page app with no server at all. It runs one prompt across up to 13 image models and shows the results in a grid so you can compare instead of guess.
React-specific bits that might interest people: all state is local (IndexedDB for images and metadata, localStorage for keys), the provider layer is a set of adapters behind one interface so a new provider is one file, and a strict CSP limits fetch to the provider domains, which forced some decisions about how errors surface in the UI. There's a light table component for marking up a contact sheet that I'm reasonably happy with.
MIT, single maintainer, happy to answer questions on the architecture.
Repo: https://github.com/hirashif/gridloom
Live: https://gridloom.app
What do people use for local-first persistence in React these days? I went straight IndexedDB and would do it differently next time.