尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证AI-assisted outfit planner: the AI does the combinations; you keep taste, dress-code judgement and spending decisions.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Plan outfits from clothes you already own, and think twice before buying more.
Live: https://rewear-henna.vercel.app (no login)
Rewear is a small AI-assisted outfit planner. It is a prototype for UNSW INFS5706 AI in Action, where the brief is to design and test a clear boundary between what the AI does and what the human keeps.
The AI does the combinations. The human keeps taste, dress-code judgement and spending decisions.
Most of us wear a small share of what we own and still feel we have "nothing to wear". That feeling drives repeat purchases of things we already have. Rewear works on both ends:
| AI may | Draft tags (type, colour, formality, warmth, notes) from a photo of one garment. Combine catalogue items into up to 3 outfits with a one-line reason, using the venue type and forecast as context. Refine looks in conversation as Hem, a clearly labelled AI persona. Show overlap between a possible purchase and the wardrobe, with an estimate of new combinations. Summarise trends only from the supplied articles and map them to owned items. |
| AI must not | Use items outside the catalogue. Save anything. Recommend buying or not buying, or comment on price. Give body-shape, size, fit or "flattering" advice. Suggest shopping when the wardrobe falls short. Claim to be human. Invent trends, brands or sources. |
| AI hands to the human when | The dress code is "not sure" or ambiguous, or the occasion is high-stakes (interview, formal event): a Your call note says what to check. A photo isn't a single garment: no tags, just the reason. Every purchase check ends with "This is information, not a recommendation. Your call." (fixed UI text, not AI-generated). The venue type suggests a different formality from the chosen dress code: the dress code wins and a Your call note asks them to check. |
| Human then | Checks and edits every drafted tag field, and nothing saves without Save. Edited fields are marked · edited. Picks the venue from search results, and can overwrite the forecast temperature (their number wins). Chooses which outfit, if any, to wear. Decides whether to buy, and whether a trend is for them. |
| How the user knows AI is involved | Everything AI-generated carries an oxblood label (AI suggestion, AI tags — check before saving). Oxblood is used for nothing else. The prompt version is in the footer, a session log lists every AI call, and an About dialog explains it all. |
Browser (components/, app/*/page.tsx)
│ catalogue (seed JSON + this browser's additions) and form inputs
│ photos re-encoded on a canvas first: EXIF/GPS stripped, ≤1024px, never stored on a server
▼
/api/plan · /api/stylist · /api/tag · /api/buy · /api/trends (AI routes)
└─ lib/runFeature.ts: validate → daily cap → versioned prompt → Gemini → parse
/api/locate · /api/venue · /api/forecast (no AI: lib/place.ts)
/api/trends also reads lib/feeds.ts (fashion media RSS) before calling the AI
├─ lib/prompts.ts prompts/<feature>_<version>.md, bundled at build time
├─ lib/gemini.ts the only module that calls the API (key is server-side only)
└─ lib/parse.ts all AI-response parsing in one place
app/globals.css), @google/genai. No database, no accounts.gemini-3.5-flash-lite, set in one constant in lib/gemini.ts. During the build, gemini-3.8-flash returned constant 503 "high demand" errors on the free tier, and gemini-3.6-flash allowed only 20 requests a day; Flash-Lite allows about 500. Transient 500/503 errors are retried twice. When Gemini's per-minute limit is hit, the photo queue waits and retries; when the daily quota is used up, the app says when it resets.lib/ and the API routes, so the front end can be redesigned without touching AI logic.data/catalogue.json. Items you add live in your browser's localStorage (rewear.added.v1); edits and removals of shipped items are kept separately (rewear.edits.v1). Export catalogue (JSON) downloads the full wardrobe in the seed format, and Reset to my catalogue undoes all local changes.RATE_LIMIT_PER_IP, default 80; , default 200). It's per server instance; cost safety comes from using a free-tier key with no billing attached.Versioned prompts. Each feature's system prompt is its own file in prompts/: plan_v1.md, plan_v2.md (adds venue, time and forecast context), stylist_v1.md (Hem's persona and rules), tag_v1.md, buy_v1.md and trends_v1.md. The active version is set in prompts/config.json:
{ "plan": "v2", "tag": "v1", "buy": "v1", "stylist": "v1", "trends": "v1" }
To test a redesign, add a new version file (e.g. prompts/plan_v3.md) and change one line in the config. The build fails if the config points to a file that doesn't exist. The active version shows in the footer (Prompt: plan v1) and is recorded with every call.
Session log. The footer's Session log panel lists every AI call in the current browser tab: timestamp, feature, prompt version, model, status, the inputs (never images) and the AI's raw output, including failures and responses that couldn't be parsed. Download log as CSV exports it for the test log. The log stays in sessionStorage and is never sent anywhere.
Requires Node 20+ and a Gemini API key from Google AI Studio.
npm install
cp .env.example .env.local # then set GEMINI_API_KEY=...
npm run dev # http://localhost:3000
npm run build bundles the prompts and makes a production build.
GEMINI_API_KEY (Production and Preview). Optionally add RATE_LIMIT_PER_IP and RATE_LIMIT_GLOBAL.main redeploys.To be completed. Test cases, inputs, expected and actual behaviour, with session-log CSV excerpts.
| # | Feature | Input | Expected | Actual | Pass? |
|---|---|---|---|---|---|
To be completed. What failed in testing, what changed (prompt version, code), and the result.
| Issue found | Before (v1) | Change | After | Evidence |
|---|---|---|---|---|
Student prototype for UNSW INFS5706 AI in Action. Uses a third-party AI API (Google Gemini); on the free tier, Google may use submitted content to improve its services. Suggestions can be wrong. AI-assisted build: made with Claude Code.
RATE_LIMIT_GLOBAL