Tejas VinayBengaluru

Work 01 AI product MVPs

AURA

A social wardrobe app. Photograph a piece and Gemini tags it; describe an occasion and it builds an outfit from clothes you already own. One Next.js codebase ships to web, iOS and Android.

Platform
Web, iOS and Android
Year
2025
Code
Private repo, code walkthrough on request.
Stack
  • Next.js 16
  • TypeScript
  • MongoDB
  • NextAuth
  • Gemini
  • Cloudinary
  • Capacitor 8

01 The problem

People forget what they own. Wardrobe apps that could help ask you to type in every item's type, colour, material and season by hand, so nobody keeps them up to date.

AURA turns a single photo into a fully tagged item, then uses those tags to suggest outfits from your own wardrobe, with friends, wishlists and purchase links on top.

02 My role

Sole developer: product, the web app, the native shells and the AI features.

03 Architecture

A Next.js app on MongoDB. The server signs each upload, the phone sends the photo straight to Cloudinary, and Gemini Vision returns structured metadata: category, type, subtype, colours, material, seasons, formality and tags. The user can correct anything before saving.

Outfit suggestions work on that metadata, not on images. Gemini gets the user's items as JSON, plus their style preferences and the occasion, and must answer with two to five clothing items and one to three accessories by ID, a reason, a confidence score and any gaps in the wardrobe. A separate image model handles virtual try-on.

Around it is a social layer: friends, public profiles, wishlists, per-item visibility, and purchase links that count clicks and notify the owner.

AURA: from photo to tagged item to outfitADD AN ITEMGET DRESSEDPhotocamera or libraryCloudinaryserver-signed uploadGemini Visiontype, colour, material,seasonYour wardrobeMongoDB, per-itemvisibilityOccasion"dinner, warm evening"Outfit generatorpicks item IDs you own, says whyAURA: from photo to tagged item to outfitPhotocamera or libraryCloudinaryserver-signeduploadGemini Visiontype, colour,material, seasonYour wardrobeMongoDB, per-itemvisibilityOccasion"dinner, warmevening"Outfitgeneratorpicks item IDs youown, says why
the path this case study is about outside the system

04 Two hard decisions

  1. A

    One web app, three platforms

    The iOS and Android apps are Capacitor shells that load the deployed dashboard, so a single deploy updates every platform at once, with no app-store release for a UI fix.

    Native features (camera, haptics, the Android back button) load only when the app is running inside the shell. The browser and PWA versions never pay for them.

  2. B

    Tag once, reason over text

    Images are analysed once, at upload. Every outfit request after that sends compact JSON about the items instead of photos. Requests stay small, and the model's answer has to point at real item IDs.

    When the model's quota runs out, the try-on screen tells the user when to retry, using the wait time Gemini returns, instead of showing a generic failure.

05 The result

platforms from one codebase
3
API routes
25
data models
6
screens
17

The clip shows the real flow on a demo account with eight illustrated wardrobe pieces: upload, automatic tagging, then an outfit built only from items in the wardrobe.

AURA screens with a demo wardrobe: inventory, AI tagging of a watch, and an outfit suggestion

Screens show seeded demo data on local or emulated devices. No real users or records.

Sources: every claim on this page traces to the aura repo (README.md, package.json, capacitor.config.ts, app/api/vision/classify/route.ts, lib/outfitGenerator.ts, app/api/items/[id]/track-click/route.ts, models/Item.ts).

Next case studyAtlas