MIRROR
MIRROR lets you try on clothes from any shopping site, even though the site knows nothing about us.
Core trick
Chrome extension replaces product photos on any shopping site with image-model try-on renders of the user's own body.
Description
MIRROR lets you try on clothes from any shopping site, even though the site knows nothing about us.
You can do everything online except the part that actually makes you buy, which is trying it on. Right now you're looking at a product on someone else's body and guessing.
You upload a photo, we build one clean full-body shot of you, and a Chrome extension takes over from there. Browse Nike or Zara like normal and the product photos turn into you wearing them. Click one to flip between their photo and yours. Because the pieces can come from anywhere, a jacket from one store and trousers from another end up on the same body.
You can add other people too, like your kids or a friend you shop for, and each gets their own photos and measurements. Any look you build becomes a link you can send them, no account needed.
README excerpt
# MIRROR ### The fitting room for the internet. **The web has infinite products. MIRROR puts them on you.** Fashion is almost completely digitised — except the part that actually decides the purchase. You still have to try it on. MIRROR closes that gap on every website, without asking a single retailer for permission. --- ## What's here | | | |---|---| | `web/` | Next.js 16 app — the destination: your mirror, wardrobe, looks, stylist, discover | | `api/` | FastAPI backend — try-on engine, product import, the stylist agent | | `extension/` | Chrome MV3 extension — the layer that travels with you across the web | | `scripts/` | Dev tooling, including extension hot-reload | **Stack:** Next.js 16 · React 19 · Tailwind v4 · FastAPI · Neon Postgres · Tigris (S3) · OpenAI `gpt-image-2.5-flare` + `gpt-4.1` with web search. --- ## Configuration Copy `api/.env.example` to `api/.env` and fill it in. Every `.env` is gitignored; only the `.env.example` files are committed. Nothing in this repo contains a real key. You need an OpenAI API key, a Postgres URL (we use Neon) and an S3-compatible bucket (we use Tigris). ## Running it ```bash npm run install:all # web deps + api venv cp api/.env.example api/.env # fill in the keys npm run dev # api on :8000, web on :3000 ``` Then load the extension: `chrome://extensions` → Developer mode → **Load unpacked** → select `extension/`. You only do this once: `npm run dev` also starts a watcher, and the extension reloa