Inspiration

Armoire (in French, a wardrobe, closet, or cabinet) is a project idea that my girlfriend inspired me to realize, and that I had been planning for a couple of months now. She's a very stylish person, and a great thrift shopper too - but with her numerous, high quality finds at the thrift, she often found it both difficult and tiresome to manage her wardrobe and find the right combination of clothes to wear for the day.

In an attempt to help her (and also challenge myself to create something new), I starting planning Armoire, a web app that could help her both organize and show off her lovely clothes.

Similar products

I took inspiration from a few other places as well:

What it does

Armoire is a closet organization app. At its core, it lets you store and add your clothing as digital records with tags such as their color and categorization.

It gives users statistics on their closet, and simple recommendations as to what they could wear for a given day based on their style.

I augmented this core functionality by making the tagging process automatic through the use of Gemini API. By having the AI do the tagging, it cuts out a lot on the manual work required to maintain this digital closet.

Furthermore, searching for specific clothing pieces in one's closet is made easier and more interactive through AI searching. Not only can you search by color and category, but you can search by "vibe", or in other words, by using terms that you would use to more abstractly describe an outfit. (e.g. searching using a fashion trend).

Another feature is the possibility to share links to certain articles of clothing you've recorded into Armoire. Users can then show off their finds, and brag about them (as my girlfriend loves to do...)

How we built it

I built it using Typescript and React for the frontend. Other tools I used were Vite.js, Bun.js, Material UI, and Tanstack Query.

The backend was written in Go, using Gin as the API framework.

As previously mentioned, I leveraged Google's Gemini API (gemini-2.0-flash) for multiple features, including auto-tagging images, and embedding the clothing as vectors. This, coupled with my use of MongoDB Atlas' indexing allowed me to implement a vector search to effectively search by "vibe" or related terms not necessarily tagged to articles that may fit a given query/theme.

Gemini was also used for generating friendly compliments/recommendations based on the user's closet's content.

Image processing is another big part of the project, and to accomplish it, I used Google Cloud Storage buckets for storing the images, but only after they were processed by 1. Clipdrop, an image processing API (for removing backgrounds), and 2. Google Gemini analyzing and embedding the images as vectors.

Challenges we ran into

The biggest challenge was certainly the background removal. I was hoping Gemini API and their newest models would be able to help me in creating transparent background for the clothing photos, but it took me quite a bit of trial and error to find out that it does not have the capability to create truly transparent .png backgrounds.

The next alternative I turned to was REMBG, a background removal tool written in Python, but after messing around with it for a few hours, I was not able to get it to work despite supposedly simple Docker running instructions the documentation provided me with.

The last choice was Clipdrop, which although was super simple to setup, was something I wanted to avoid as I was limited to 100 requests. Ultimately, this was enough for the hackathon, and I wish I realized this from the start.

Accomplishments that we're proud of

I'm proud of the work I was able to accomplish as a solo developer in 24 hours. This was my first time experimenting with any form of AI API, and I don't have much experience with Go. That being said, I certainly learnt a lot and felt like the final prototype I am demonstrating is a really strong foundation for what I plan to develop it into in the future.

What we learned

I think the main thing I learned during this hackathon was that integrating third party services into an app is not as daunting as I had expected it to be. Not only that, but also that it can be quite fun to do so with the right tools.

What's next for Armoire

I had initially planned many more features, including an outfits feature, and for the app to recommend outfits based on items in a user's wardrobe and maybe even an outfit inspiration picture that the user would provide.

This project was something I wanted to do, regardless of the hackathon - but I am definitely glad I chose to push myself to do as much as I could in 24 hours, as I'm very proud of the result I came out with.

The ultimate goal is to make Armoire into an application that my girlfriend really enjoys using, and that she would want me to maintain for years to come.

Disclaimer of AI Usage

The following AI tools were used:

  • Gemini 3 Pro: I used Gemini to help mostly guide me with the structure of the project. Roughly ~30% of the backend code was written by Gemini through prompting. The external services (Gemini API, MongoDB, ClipDrop) were put together following steps Gemini generated.

  • GitHub Copilot for VSCode (Claude Sonnet 4.5): I used Copilot to help with debugging and writing another ~40% of the backend code. It was also used for generating 2/3rds of the landing page. I also used Copilot's autocompletion to speed up the frontend code, but for the most part, anything written in React/Typescript was stuff I had already written before and remembered how to implement.

Share this project:

Updates