SmartFit is a mobile iOS application that enables college students to virtually manage and style their wardrobe and try on clothing items using their smartphone camera before making online purchases.
How does this MVP add value to the user, how is it better than their current alternatives. When comparing to google's version of clothing fit check, Doppl, we noticed that you were forced to upload the entire outfit at once in a top/down picture format. This means that their algorithm is only able to detect clothes if you submit a picture of:
- An full body image of someone wearing an outfit and Doppl will recognize the clothes they are wearing and equip it onto your model.
- An image where the tops (shirt/jacket/etc) is directly above the bottoms (pants/shorts/etc)
Doppl lacks a wardrobe feature since they only have suggested outfits that are pre-registered and only WHOLE outfit uploads, so mixing and matching different tops/bottoms are difficult. [Doppl] (https://labs.google/doppl)
SmartFit provides a virtual wardrobe + outfit builder:
- Store real-world clothing items digitally with a photo + metadata
- Filter by category (tops, bottoms, shoes, accessories, etc.)
- Build outfits using three outfit slots (Outfit 1–3)
- Quickly see which items are equipped in the current outfit
Our MVP focuses on delivering a functional virtual wardrobe backed by a real database:
- Users can:
- Upload a clothing item manually or via link
- (Manual) Enter details: name, brand, size, color, material, price.
- (Link) Enter url link of a clothing item.
- Save items to a database and viewed within their personal virtual wardrobe.
- Upload a clothing item manually or via link
- Users can:
- View items by category
- Equip one item per category into Outfit 1–3
- Additional features:
- Allows user to upload a clothing item via:
- Manual Entry (add item form)
- Import from URL (in-progress flow)
- Allows user to upload a clothing item via:
Frontend (iOS)
- Swift / SwiftUI
- PhotosUI for image selection
- REST API calls to the backend using URLSession
Backend
- Node.js + Express
- MongoDB via Mongoose
- Jest for tests
- ESLint + Prettier for code quality
DevOps / Tooling
- GitHub Actions workflows for:
- Backend CI (lint + tests)
- iOS build/test checks
Testing Framework & Execution
- Jest for backend (configuration file present) Code Quality Tools Backend
- npm run lint (esLint)
- npm run format (prettier) FrontEnd
- brew install swiftlint (Install brew first if not already)
- swiftlint lint --quiet
- Clone repository onto xCode
- Click on smartfit on the top of right bar (not the folder but above it)
- Click on SmartFit under "Targets" and open "Signing and Capabilities" to sign with your apple ID
- If not already set, set the bundle identifier to "edwin.SmartFit"
- On the very top bar of Xcode, select which device you want to run.
- If paired with physical iphone device, please connect it via cord
- Product -> Clean Build Folder (Shift + Command + K)
- Manually press the right arrow, or Product -> Run (Command + R)
Testing Instructions
- Backend
- Clone repository to local device
- cd into backend
- Run command 'npm ci', then 'npm test'
- Frontend Please use xCode for easier testing
- Clone repository to xCode
- Product -> Clean Build Folder (Shift + Command + K)
- Open 'Test Navigator' (Icon on right in horizontal bar with a check mark in a square)
- Press run on any test
Linting Instructions
- Backend
- Clone repository to local device
- cd into backend
- Run command 'npm ci', then 'npm run lint'
-Frontend
- Clone repository to local device
- cd into SmartFit
- brew install swiftlint
- run command 'swiftlint lint --quiet --config .swiftlint.yml'
Burn Chart
Burn Chart Sprint 1
Burn Chart Sprint 2
Burn Chart Sprint 3
Burn Chart Sprint 4
CI/CD Pipeline
Project Board
Deployement Link
- Note: Camera is not viewable in appetize
- Appetize Link
