Grafit App — Idea to Award-Winning Startup

How a class project became Grafit, an AI-powered wardrobe app that earned an honorable mention at Startup Point 2025.

  • Oct 22, 2025

  • 5 min read

Grafit team winning honorable mention at Startup Point 2025

Co-built with Carlos RibeiroCarlos Ribeiro ↗, Lara ReginaLara Regina ↗ and Júlio PintoJúlio Pinto ↗, Grafit is a mobile app for your wardrobe: manage and share your daily outfits, find inspiration in what others wear, and discover new pieces and brands along the way. The best part? Snap a picture of your fit, and our AI-powered GrafitEye recognizes and catalogs every item in it for you.

After months of hard work, we pitched Grafit at Startup Point 2025 ↗ and walked away with an honorable mention. The app is still in development, and we can't wait to share it with the world!

Origins

It all started in a classroom. In the final year of our Software Engineering Master's, an Entrepreneurship and Innovation course challenged us to come up with a startup idea and build a prototype. A wardrobe app had been floating around Carlos's mind for a while, and this was the perfect excuse to bring it to life. Between us, we had development, design and business strategy covered, so we set out to build something fun.

The just-for-fun part didn't last long. Through the university's partnership with Startup Braga, we joined the Startup Point ↗ competition, which gave us mentorship, resources, exposure to industry experts, and bootcamps on everything from product strategy and business design to pitching and growth.

teams competing
12
bootcamps
6
honorable mention
1

The Graph

Grids are everywhere, and we wanted Grafit to feel different. So instead of scrolling, you explore: outfits live on an infinite canvas that you can wander in any direction. The idea is that outfits with a similar vibe sit close together, so the further you drift from where you started, the more new styles and niches you discover.

Grafit's graph-based navigation system

Bringing together the graph and the outfit, this idea is also what gave the app its name:

Graph+Outfit=Grafit

The Outfit

Most wardrobe apps show an outfit as a collage of items. We wanted ours to be immersive, with the photo front and center and its background removed as soon as it's added, so all the focus goes to the outfit itself.

Grafit's outfit viewGrafit's outfit view

From there, everything is a gesture away:

Swipe up
See the season, weather, number of wears, tags and extra shots of the outfit.
Swipe right
Move to the wardrobe view, with every item that makes up the outfit.
Tap an item
Explore and edit its details. Did the AI miss something? Add it yourself.

The Diary

The diary is Grafit's memory. It keeps a chronological record of every outfit you've worn, so you can look back at any day, see how your style has evolved, or remember what you wore to that special occasion.

Grafit's diary view
Streaks
A daily streak gives you a reason to check in every day and keep your diary up to date.
Wear it again
Wearing an outfit again? Log it as a new wear instead of adding it twice.

Tech Stack

App

  • Capacitor
  • Next.js
  • React
  • TypeScript
  • SQLite

With a deadline and no mobile experience between us, Capacitor.js ↗ was an easy pick. As the main frontend developer, it let me build with the web stack I already knew, while still reaching native features like the camera, the file system and haptics.

Grafit is a tool first and a social app second, so it works fully offline, with everything stored on the device. Smart features and weather catch up once you're back online, all except background removal, which runs on-device with Google's ML Kit ↗ when there's no connection.

Backend

  • Express
  • TypeScript
  • Prisma
  • PostgreSQL
  • nginx

Since the app owns its data, the backend is mostly a safety net: a copy of everything in the cloud, and the foundation for Grafit's social side. Outfits and items get their IDs on the device, so changes can pile up offline and sync in batches as soon as there's a connection. Users sign in with Google, and an nginx proxy puts the backend and GrafitEye behind a single API.

GrafitEye

  • Python
  • FastAPI
  • ONNX Runtime
  • Gemini

Led by Júlio, GrafitEye is where the magic happens. Every new outfit goes through a few steps:

  1. Cut outrembg ↗
    The person is separated from the background, so the outfit view can focus on them.
  2. Each piece of clothing is found and outlined, then sorted into tops, bottoms, outerwear, footwear or accessories.
  3. Pin
    The center of each item gives us its color and its exact spot on the photo, and the item is added to the wardrobe.
  4. The weather at that place and time is attached, even for outfits added offline days before.
  5. Vibe checkGemini 2.5 FlashSoon
    The outfit gets a name and a score for each of its aesthetics, like streetwear or cozy, so the graph can group outfits with a similar vibe.