VisionStyle Report
VisionStyle Report
RECOMMENDATION
A PROJECT REPORT
Submitted by
YUVARAJ T R (211422244246)
RUTHRESH M (211422244180)
SANJAYKUMAR N (211422244183)
in partial fulfillment for the award of the degree
of
BACHELOR OF TECHNOLOGY
in
COMPUTER SCIENCE AND BUSINESS SYSTEMS
SIGNATURE SIGNATURE
Certified that the above candidate(s) were examined in the Project Viva-Voce Examination
held on...........................
We would like to extend our heartfelt and sincere thanks to our directors
Tmt. C. VIJAYARAJESWARI, Dr. C. SAKTHIKUMAR, M.E., Ph.D., and
Dr. SARANYASREE SAKTHIKUMAR, B.E., M.B.A., Ph.D., for providing
us with the necessary facilities for completion of this project.
We also express our gratitude to our Principal Dr. K. MANI, M.E., Ph.D., for his timely
concern and encouragement provided to us throughout the course.
We thank the Head of Department of Computer Science and Business Systems Department,
Dr. D. ANURADHA, M.E., Ph.D., for the support extended throughout the project.
YUVARAJ T R
RUTHRESH M
SANJAYKUMAR N
ABSTRACT
Online fashion platforms are growing, creating a need for systems that assist
users in selecting clothing that matches their style and preferences. To address
this challenge, the proposed system VISIONSTYLE AI: AI-DRIVEN
OUTFIT RECOMMENDATION is introduced as a smart platform designed to
improve the digital fashion experience. By combining artificial intelligence
techniques with an interactive web application, the system enables users to
explore clothing options and receive personalized outfit suggestions efficiently.
The platform focuses on delivering both practicality and simplicity for users. By
integrating technologies such as recommendation algorithms, virtual outfit
visualization, and responsive user interface design, the system simplifies the
process of discovering suitable clothing combinations. Users can upload images
or select garments from available collections and view recommended styles that
complement their appearance and fashion preferences. One of the major
advantages of VISIONSTYLE AI is its ability to provide personalized fashion
suggestions while maintaining compatibility with modern web technologies and
scalable backend services. The platform architecture supports continuous
enhancement and allows integration of advanced computer vision models and
recommendation methods for future improvements. By emphasizing
personalization, usability, and smart recommendations, the system helps users
make confident decisions when choosing outfits online. Overall,
VISIONSTYLE AI introduces a modern approach to digital fashion styling by
offering a unified platform for outfit discovery, recommendation, and interactive
visualization.
IV
TABLE OF CONTENTS
ABSTRACT IV
TABLE OF CONTENTS V
LIST OF FIGURES VI
1. INTRODUCTION 10
1.1 Overview 10
2. LITERATURE REVIEW 13
3. SYSTEM ANALYSIS 22
4. SYSTEM DESIGN 26
V
4.5 AI Suggestion 34
5. SYSTEM ARCHITECTURE 37
6. SYSTEM IMPLEMENTATION 40
7. CONCLUSION 81
7.1 Conclusion 81
8. APPENDICES 84
9. REFERENCES 90
VI
LIST OF FIGURES
4.5 AI Suggestion 34
VII
LIST OF ABBREVIATIONS
TERMS EXPLANATION
AI Artificial Intelligence
UI User Interface
ML Machine Learning
VIII
CHAPTER 1
INTRODUCTION
1.1 OVERVIEW
In the modern era of online fashion retail, customers often face uncertainty
when purchasing clothing without physically trying them on. To address this
challenge, VISION STYLE AI, an AI-powered virtual try-on platform, is
proposed to enhance the online shopping experience. The system enables
customers to visualize how different outfits would appear on their own image
before making purchasing decisions. By integrating artificial intelligence with
fashion technology, the platform provides an interactive and personalized
clothing selection experience. VISION STYLE AI offers a user-friendly
interface where customers can upload their image and explore a wide variety of
clothing options such as shirts, pants, hoodies, and sweatshirts. Once a clothing
item is selected, the platform utilizes an AI-powered virtual try-on engine to
generate a realistic image of the customer wearing the selected outfit. In
addition to visualization, the system analyzes the user’s skin tone and evaluates
whether the selected clothing color suits the individual, providing a
compatibility score along with a brief explanation. Another significant feature
of the platform is occasion-based outfit analysis, which helps users determine
whether a selected dress is appropriate for specific occasions such as casual
events, office meetings, parties, or festivals. The system also includes an AI
suggestion module, which automatically recommends clothing items that best
match the user’s skin tone or selected occasion.
10
1.2 PROBLEM STATEMENT:
11
CHAPTER 2
LITERATURE SURVEY
13
2.3 TITLE: Computer Vision Approaches for Realistic Virtual
Garment Fitting in Online Retail Platforms
AUTHOR: K. Wang, Y. Zhao, and L. Chen
YEAR OF PUBLISHING: 2026
The authors proposed computer vision techniques to simulate clothing fitting
for online retail environments. The system processed human body images
and garment models to produce realistic outfit previews. The findings
highlighted the importance of visual accuracy in improving online shopping
satisfaction.
14
segmentation and neural style transfer methods. The system identified body
regions and mapped garments accordingly. This approach improved the
realism of virtual try-on applications.
15
Style Recommendation
AUTHOR: N. Kapoor, V. Bansal, and R. Malhotra
YEAR OF PUBLISHING: 2025
This research presented a deep neural network architecture for automated
fashion style recommendations. The framework analyzed clothing textures,
colors, and patterns. Experimental evaluation showed enhanced outfit
matching capabilities.
16
2.11 TITLE: Image Based Garment Recommendation System
Using Convolutional Neural Networks
AUTHOR: B. Nguyen, T. Tran, and H. Le
YEAR OF PUBLISHING: 2024
The research proposed a garment recommendation system using
convolutional neural networks. The model extracted visual features from
clothing images to generate outfit suggestions. The study highlighted the
effectiveness of CNN models in fashion analysis.
17
features in retail platforms. The system detected garment style and pattern
information from images. The study emphasized the potential of deep
learning in fashion analytics.
18
This work proposed a generative deep learning model for real-time clothing
visualization. The system produced realistic garment overlays for digital
fashion platforms. The results demonstrated improved visual representation of
outfits.
19
The research developed an outfit recommendation system using visual
attribute learning techniques. The system analyzed clothing color
combinations and style attributes. The results indicated better garment
compatibility detection.
20
CHAPTER 3
SYSTEM ANALYSIS
Current online fashion shopping platforms mainly provide static product images
for customers to view clothing items. These systems allow users to browse
different clothing products and purchase them based on visual appearance or size
information. However, they do not provide a realistic way for customers to
visualize how a particular dress will appear on their own body before purchasing
it. Most existing fashion websites rely on model photographs or mannequin
displays, which may not accurately represent how the clothing fits or suits
different individuals. Customers often struggle to determine whether a particular
clothing color matches their skin tone or whether the outfit is suitable for a
specific occasion. As a result, users must rely on imagination rather than actual
visualization. Another major limitation of existing systems is the lack of
intelligent recommendation features. Therefore, existing systems fail to provide
an interactive and personalized shopping experience for customers.
LIMITATIONS:
22
3.1 PROPOSED SYSTEM
ADVANTAGES:
Smart Recommendations.
Personalized Styling.
Interactive Interface.
Efficient Selection.
23
DEVELOPMENT ENVIRONMENT:
SOFTWARE REQUIREMENTS:
24
CHAPTER 4
SYSTEM DESIGN
27
4.2 CLOTHING DATASET DISPLAY:
28
Clothing Structure Representation: The entire catalog tree of the fashion
dataset is displayed, allowing users to view the hierarchical arrangement of
garments and clothing categories.
Filters and Sorting: Users can apply filters or sort garments based on attributes
like color, clothing type, or category, helping them focus on specific outfit
styles.
The clothing display module is valuable for users because it enables quick
identification and selection of suitable outfits while maintaining the organization
of the fashion catalog. This feature improves the efficiency and usability of the
virtual try-on platform. The clothing display feature systematically presents
garments from the fashion dataset for easy browsing. It includes detailed
clothing attributes, ensuring users have essential information at a glance. This
functionality enables efficient selection of garments while maintaining visual
clarity. Filtering and sorting options further enhance its usefulness for fashion
exploration.
29
4.3 SKIN TONE ANALYSIS:
30
information from the user’s facial region and body areas where skin is visible.
These color values are then compared with the color of the selected clothing
item to determine compatibility.
Key functionalities of the Skin Tone Analysis module:
Skin Tone Detection: The system analyzes the uploaded user photograph to
detect the user’s skin tone using image processing and color extraction
techniques. This step ensures accurate identification of the user’s complexion.
Color Compatibility Evaluation: The system compares the detected skin tone
with the color of the selected clothing item. This comparison helps determine
whether the garment enhances the user’s appearance.
31
4.4 OCCASION ANALYSIS:
32
Key functionalities of the Occasion Suitability Analysis module:
Outfit Evaluation: The system analyzes the selected clothing item and
evaluates whether it matches the selected occasion. The evaluation considers
factors such as clothing type, color style, and general fashion guidelines.
Suitability Score: The platform generates a numerical score that indicates how
appropriate the outfit is for the selected occasion. This score allows users to
quickly understand the compatibility level.
33
4.5 AI SUGGESTION:
34
Key functionalities of the AI Suggestion module:
Skin Tone and Appearance Analysis: The platform evaluates the user’s skin tone
and general appearance to determine clothing colors and styles that may look
suitable when worn.
Virtual Try-On Generation: After selecting the recommended outfit, the artificial
intelligence engine applies the garment to the user’s image and produces a
realistic preview of the suggested clothing.
Additional Styling Guidance: Once the preview is generated, the system may
provide additional suggestions related to outfit suitability, helping users
understand why the recommended clothing matches their appearance.
35
CHAPTER 5
SYSTEM ARCHITECTURE
Fig 5.1
37
5.2 BLOCK DIAGRAM:
Fig 5.2
The block diagram illustrates the workflow of the VISION AI system used for
intelligent fashion analysis and virtual try on. The process begins with the
user, who interacts with the VISION AI platform to perform outfit
visualization. Within the platform, the user first uploads a personal image for
processing. The user can then browse through the clothing catalog to examine
available garments and styles. Virtual try on follows to generate a realistic
outfit preview, confirming how the clothing appears. Next, the system
analyzes the result for skin tone compatibility and occasion suitability,
applying intelligent models to detect style matches. Finally, the platform
generates outfit suggestions, providing the user with guidance about suitable
fashion combinations to support confident clothing selection.
38
CHAPTER 6
SYSTEM IMPLEMENTION
IMAGE UPLOAD:
40
return (
<div className="flex flex-col items-center gap-4">
<[Link]
whileHover={{ scale: 1.02 }}
onClick={() =>
[Link]?.click()}
className="relative w-48 h-64 md:w-56 md:h-72 rounded-2xl border-2 border-
dashed border-primary/40 hover:border-primary cursor-pointer overflow-hidden flex items-
center justify- center bg-muted/30 transition-all group"
>
{userImage ? (
<>
<img src={userImage} alt="Your photo" className="w-full h-full object-cover" />
<button
onClick={(e) => { [Link](); setUserImage(null); }}
className="absolute top-2 right-2 p-1 bg-background/80 rounded-full"
>
<X className="w-4 h-4" />
</button>
</>
41
) :(
<div className="flex flex-col items-center gap-3 text-muted-foreground
group- hover:text- primary transition-colors">
<div className="w-16 h-16 rounded-full bg-muted flex items-center justify-center">
export default
ImageUpload; import * as
React from "react";
42
[Link]<"input">>( ({ className, type, ...props }, ref) =>
{ return (
<input
type={type
}
className
={cn(
"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base
ring- offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium
file:text- foreground placeholder:text-muted-foreground focus-visible:outline-none focus-
visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-
allowed disabled:opacity-50 md:text-sm",
className,
)}
ref={ref}
{...props}
/>
);
},
);
[Link] =
43
PRODUCT DISPLAY AND SELECTION:
44
"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base
ring- offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium
file:text- foreground placeholder:text-muted-foreground focus-visible:outline-none focus-
visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-
allowed disabled:opacity-50 md:text-sm",
className,
)}
ref={ref}
{...props}
/>
);
},
);
[Link] =
return (
<div className="mb-10">
<h2 className="font-display text-lg md:text-xl text-
gradient mb-6 tracking-widest">{title}</h2>
<div className="grid grid-cols-3 sm:grid-cols-4 md:grid-cols-5 lg:grid-cols-6 gap-
3 md:gap-
4">
45
{[Link]((product, i) => (
<[Link]
key={[Link]}
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ delay: i * 0.02 }}
onClick={() => onSelect?.(product)}
className={`fashion-card cursor-pointer group ${
selectedId === [Link] ? "ring-2 ring-primary glow-rose" : ""
}`}
<div className="aspect-square overflow-hidden bg-foreground/5">
<img
src={[Link]}
alt={[Link]}
className="w-full h-full object-cover group-hover:scale-110 transition-transform
duration-500"
loading="lazy"
/>
</div>
<div className="p-2">
<p className="text-[10px] md:text-xs font-medium truncate">{[Link]}</p>
<div className="flex items-center justify-between mt-1">
<span className="text-[10px] md:text-xs text-glow-yellow
font- bold">₹{([Link]
/ 100).toFixed(0)}</span>
<button
46
onClick={(e) => handleAddToCart(e, product)}
className="p-1 rounded-md bg-muted hover:bg-primary transition-colors"
>
{[Link]([Link]) ? (
<Check className="w-3 h-3 text-glow-green" />
) :(
<ShoppingCart className="w-3 h-3" />
)}
</button>
</div>
</div>
</[Link]>
))}
</div>
</div>
);
};
47
import
shirtPink from "@/assets/shirts/[Link]";
import shirtMaroon from "@/assets/shirts/shirt-
[Link]"; import shirtYellow from
"@/assets/shirts/shirt- [Link]"; import shirtPurple
from "@/assets/shirts/[Link]"; import
shirtTeal from "@/assets/shirts/[Link]";
import shirtLavender from "@/assets/shirts/[Link]";
// Pants images
import pantsBlue from "@/assets/pants/pants-
[Link]"; import pantsBlack from
"@/assets/pants/[Link]"; import pantsGrey
from "@/assets/pants/[Link]"; import
pantsKhaki from "@/assets/pants/[Link]";
import pantsNavy from "@/assets/pants/pants-
[Link]"; import pantsOlive from
"@/assets/pants/[Link]"; import
pantsWhite from "@/assets/pants/[Link]";
import pantsBurgundy from "@/assets/pants/pants-
[Link]"; import pantsBrown from
"@/assets/pants/[Link]"; import pantsCharcoal
from "@/assets/pants/[Link]";
// Hoodie images
import hoodieBlack from
"@/assets/hoodies/hoodie- [Link]"; import
hoodieGrey from "@/assets/hoodies/hoodie-
[Link]";
48
import hoodieBurgundy from "@/assets/hoodies/hoodie-
[Link]"; import hoodieNavy from "@/assets/hoodies/hoodie-
[Link]";
import hoodieOlive from "@/assets/hoodies/[Link]";
import hoodieCoral from "@/assets/hoodies/[Link]";
import hoodieMustard from "@/assets/hoodies/hoodie-
[Link]"; import hoodieSkyblue from
"@/assets/hoodies/[Link]";
export type Product
= { id: string;
name: string;
category: "shirts" | "pants" |
"hoodies"; color: string;
price:
number;
image:
string;
};
const shirtNames = [
49
"Classic Red Button-Up", "Navy Crew Tee", "Midnight Black Tee", "Pure White Tee",
"Forest Green Polo",
"Blush Pink Shirt", "Maroon V-Neck", "Sunshine Yellow Shirt", "Royal Purple Tee", "Teal
Henley",
"Lavender Henley", "Crimson Sport Tee", "Deep Blue Oxford", "Charcoal Slim Tee",
"Ivory Linen Shirt",
"Sage Green Tee", "Coral Button-Down", "Steel Grey Polo", "Ocean Blue Tee", "Dusty
Rose Shirt",
"Emerald Crew Neck", "Burnt Orange Tee", "Sky Blue Oxford", "Wine Red Henley",
"Moss Green Shirt",
"Powder Blue Tee", "Copper Tone Shirt", "Arctic White Polo", "Slate Navy Tee", "Amber
Gold Shirt"
];
const shirtColors = [
"Red", "Navy", "Black", "White", "Green", "Pink", "Maroon", "Yellow", "Purple", "Teal",
"Lavender", "Crimson", "Deep Blue", "Charcoal", "Ivory", "Sage", "Coral", "Steel Grey",
"Ocean Blue", "Dusty Rose",
"Emerald", "Burnt Orange", "Sky Blue", "Wine Red", "Moss", "Powder Blue", "Copper",
"Arctic White", "Slate", "Amber"
];
const pantsNames = [
"Classic Blue Denim", "Black Formal Trousers", "Grey Joggers", "Khaki Chinos", "Navy
Cargo Pants",
"Olive Track Pants", "White Linen Pants", "Burgundy Slim Chinos", "Brown Corduroy",
"Charcoal Track Pants",
50
"Stone Wash Jeans", "Jet Black Skinny", "Silver Grey Slacks", "Tan Pleated Pants", "Dark
Navy Chinos",
"Army Green Cargos", "Cream Cotton Pants", "Maroon Joggers", "Camel Straight
Leg", "Graphite Trousers",
"Indigo Slim Jeans", "Onyx Black Joggers", "Ash Grey Chinos", "Sandy Beige Pants",
"Midnight Cargo",
"Forest Slim Pants", "Pearl White Slacks", "Rust Red Trousers", "Mocha Brown Jeans",
"Smoke Grey Tracks"
];
const pantsColors = [
"Blue", "Black", "Grey", "Khaki", "Navy", "Olive", "White", "Burgundy", "Brown",
"Charcoal",
"Stone", "Jet Black", "Silver", "Tan", "Dark Navy", "Army Green", "Cream",
"Maroon", "Camel", "Graphite",
"Indigo", "Onyx", "Ash", "Sandy", "Midnight", "Forest", "Pearl", "Rust", "Mocha", "Smoke"
];
const hoodieNames = [
"Noir Pullover Hoodie", "Heather Grey Sweatshirt", "Burgundy Zip-Up", "Navy
Pullover Hoodie",
"Olive Zip Hoodie", "Coral Crewneck", "Mustard Pullover", "Sky Blue Sweatshirt",
"Obsidian Oversized", "Ash Fleece Hoodie", "Cherry Red Zip-Up", "Dusk Blue
Pullover", "Sage Zip Hoodie", "Peach Crewneck", "Sunflower Hoodie", "Powder Blue
Pullover", "Shadow Black Crew", "Fog Grey Zip-Up", "Cranberry Pullover", "Indigo
Hoodie",
"Pine Green Crew", "Salmon Sweatshirt", "Honey Zip Hoodie", "Ice Blue
Crewneck", "Carbon Pullover", "Mist Grey Hoodie", "Crimson Zip-Up", "Steel
51
Blue Crew",
"Fern Green Pullover", "Blush Pink Sweatshirt"
];
const hoodieColors = [
"Black", "Grey", "Burgundy", "Navy", "Olive", "Coral", "Mustard", "Sky Blue",
"Obsidian", "Ash", "Cherry", "Dusk Blue", "Sage", "Peach", "Sunflower", "Powder Blue",
"Shadow", "Fog", "Cranberry", "Indigo", "Pine", "Salmon", "Honey", "Ice Blue",
"Carbon", "Mist", "Crimson", "Steel Blue", "Fern", "Blush Pink"
];
function
generateProducts(
names: string[],
colors:
string[],
images:
string[],
category: "shirts" | "pants" |
"hoodies", count: number
): Product[] {
return [Link]({ length: count }, (_, i)
=> ({ id: `${category}-${i + 1}`,
name:
names[i],
category,
color: colors[i],
price: [Link]([Link]() * 40 + 20) * 100
52
+ 99, image: images[i % [Link]],
}));
}
53
SKIN TONE ANALYSIS:
useEffect(() => {
if (userImage && selectedProduct) {
generateTryOn(userImage, [Link]).catch(() =>
{ [Link]("Try-on generation failed. The demo API may be
rate- limited.");
});
}
}, []);
54
if (!userImage || !selectedProduct) {
navigate("/dashboard");
return null;
}
return (
<div className="min-h-screen bg-background">
<Navbar />
<div className="container mx-auto px-4 pt-24 pb-16 max-w-4xl">
<button onClick={() => navigate("/dashboard")} className="flex items-center gap-
2 text- muted-foreground hover:text-foreground mb-8 transition-colors">
<ArrowLeft className="w-4 h-4" />
<span className="text-sm font-heading tracking-wider">BACK TO STUDIO</span>
</button>
55
widest">SKIN TONE ANALYSIS RESULT</h1>
56
{/* Score Card */}
<[Link] initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} transition={{
delay:
0.2 }} className="fashion-card p-6 mb-8">
<div className="flex items-center gap-6 mb-4">
<div className={`w-20 h-20 rounded-full flex items-center justify-center text-
2xl font- display ${
score >= 85 ? "bg-glow-green/20 text-glow-green" : score >= 70 ? "bg-glow-
yellow/20 text-glow-yellow" : "bg-primary/20 text-primary"
}`}>
{score}
</div>
<div>
<h3 className="font-heading text-xl tracking-wider">{matchLevel} Match</h3>
<p className="text-sm text-muted-foreground">Skin Tone Compatibility Score</p>
</div>
</div>
<p className="text-sm text-muted-foreground leading-relaxed">{reason}</p>
<button
onClick={() => { addToCart(selectedProduct); [Link]("Added to
cart!"); }} className="mt-4 flex items-center gap-2 px-4 py-2 bg-
muted rounded-lg hover:bg-
muted/80 transition-colors text-sm"
>
<ShoppingCart className="w-4 h-4" />
Add to Cart — ₹{([Link] / 100).toFixed(0)}
</button>
57
</[Link]>
<AnalysisButton
label="GET AI SUGGESTION"
icon={Sparkles}
onClick={() => navigate("/ai-suggestion/skin-tone")}
variant="gold"
/>
</div>
</div>
);
};
export default SkinToneResult;
import { motion } from "framer-
motion"; import { LucideIcon }
from "lucide-react";
interface
AnalysisButtonProps {
label: string;
icon:
LucideIcon;
onClick: () =>
void;
variant?: "rose" | "blue" | "gold" |
"green"; disabled?: boolean;
}
58
const variantStyles = {
rose: "bg-gradient-to-r from-primary to-glow-rose/80 glow-
rose", blue: "bg-gradient-to-r from-secondary
to-glow-blue/80 glow-blue", gold: "bg-gradient-to-r from-
accent to-glow- yellow/80 glow-gold", green: "bg-gradient-
to-r from-glow- green to-glow-green/80",
};
59
export default AnalysisButton;
OCCASION ANALYSIS:
return (
<div className="mb-6">
<h3 className="font-display text-base md:text-lg text-gradient-blue mb-4 tracking-
widest">SELECT OCCASION</h3>
<div className="grid grid-cols-4 md:grid-cols-8 gap-2 md:gap-3">
{[Link]((occ) => (
<[Link]
key={[Link]}
whileHover={{ scale: 1.05
}} whileTap={{ scale:
0.95 }}
onClick={() => setSelectedOccasion([Link] === selectedOccasion ? null : [Link])}
className={`flex flex-col items-center gap-1 p-3 rounded-xl border transition-all $
{ selectedOccasion === [Link]
? "border-secondary bg-secondary/10 glow-blue"
: "border-border/50 hover:border-secondary/40 bg-muted/20"
60
}`}
>
<span className="text-xl">{[Link]}</span>
<span className="text-[9px] md:text-[10px]
font- heading tracking-wider">{[Link]}</span>
</[Link]>
))}
</div>
</div>
);
};
61
const OccasionResult = () => {
const { userImage, selectedProduct, selectedOccasion, addToCart } =
useApp(); const navigate = useNavigate();
const { resultImage, isLoading, error, generateTryOn } = useTryOn();
useEffect(() => {
if (userImage && selectedProduct) {
generateTryOn(userImage, [Link]).catch(() =>
{ [Link]("Try-on generation failed. The demo API may be
rate- limited.");
});
}
}, []);
62
: score >= 70
? `The ${[Link]} works well for ${occasion?.[Link]()} events.
Slight adjustments in accessories could elevate the look.`
: `For a ${occasion?.[Link]()} occasion, consider more tailored options.`;
return (
<div className="min-h-screen bg-background">
<Navbar />
<div className="container mx-auto px-4 pt-24 pb-16 max-w-4xl">
<button onClick={() => navigate("/dashboard")} className="flex items-center gap-
2 text- muted-foreground hover:text-foreground mb-8 transition-colors">
<ArrowLeft className="w-4 h-4" />
<span className="text-sm font-heading tracking-wider">BACK TO STUDIO</span>
</button>
63
garmentImage={[Link]
age} resultImage={resultImage}
isLoading={isLoading}
error={error}
glowClass="glow
-blue"
borderClass="border-secondary/50"
/>
{error && (
<div className="flex justify-center mt-4">
<button
onClick={() => generateTryOn(userImage, [Link])}
className="flex items-center gap-2 text-sm text-secondary
hover:underline"
>
<RefreshCw className="w-4 h-4" /> Retry
</button>
</div>
)}
</[Link]>
64
yellow/20 text-glow-yellow" : "bg-primary/20 text-primary"
}`}>
{score}
</div>
<div>
<h3 className="font-heading text-xl tracking-wider">{matchLevel}</h3>
<p className="text-sm text-muted-foreground">Occasion Compatibility Score</p>
</div>
</div>
<p className="text-sm text-muted-foreground leading-relaxed">{reason}</p>
<button
onClick={() => { addToCart(selectedProduct); [Link]("Added to
cart!"); }} className="mt-4 flex items-center gap-2 px-4 py-2 bg-
muted rounded-lg hover:bg-
muted/80 transition-colors text-sm"
>
<ShoppingCart className="w-4 h-4" />
Add to Cart — ₹{([Link] / 100).toFixed(0)}
</button>
</[Link]>
<AnalysisButton
label="GET AI SUGGESTION"
icon={Sparkles}
onClick={() => navigate("/ai-suggestion/occasion")}
variant="gold"
/>
65
</div>
</div>
);
};
AI SUGGESTION:
66
const occasion = [Link]((o) => [Link] ===
selectedOccasion); const isSkinTone = type === "skin-tone";
67
if (!userImage || !selectedProduct || !suggestedProduct) {
navigate("/dashboard");
return null;
}
return (
<div className="min-h-screen bg-background">
<Navbar />
<div className="container mx-auto px-4 pt-24 pb-16 max-w-4xl">
<button onClick={() => navigate(-1)} className="flex items-center gap-2 text-muted-
foreground hover:text-foreground mb-8 transition-colors">
<ArrowLeft className="w-4 h-4" />
<span className="text-sm font-heading tracking-wider">BACK</span>
</button>
68
<h4 className="font-heading text-xl text-gradient-gold mb-
2">{[Link]}</h4>
<p className="text-sm text-muted-foreground mb-4">
{isSkinTone
? `This ${[Link]} ${[Link](0, -1)} has
been selected by our AI as the optimal match for your skin undertone.`
: `This ${[Link]} ${[Link](0, -1)} is the
ideal choice for a ${occasion?.[Link]()} setting.`
}
</p>
<div className="flex items-center gap-4">
<span className="text-lg font-display text-glow-yellow">₹{([Link]
/ 100).toFixed(0)}</span>
<button
onClick={() => { addToCart(suggestedProduct); [Link]("Added to cart!"); }}
className="flex items-center gap-2 px-4 py-2 bg-gradient-primary rounded-lg
text- sm
font-heading tracking-wider">
<ShoppingCart className="w-4 h-4" />
ADD TO CART
</button>
</div>
</[Link]>
</div>
</div>
);
};
69
export default AISuggestion;
// Shirt images
import shirtRed from "@/assets/shirts/[Link]";
import shirtNavy from "@/assets/shirts/shirt-
[Link]"; import shirtBlack from
"@/assets/shirts/[Link]"; import shirtWhite
from "@/assets/shirts/[Link]"; import
shirtGreen from "@/assets/shirts/[Link]";
import shirtPink from "@/assets/shirts/shirt-
[Link]";
import shirtMaroon from "@/assets/shirts/shirt-
[Link]"; import shirtYellow from
"@/assets/shirts/[Link]"; import
shirtPurple from "@/assets/shirts/[Link]";
import shirtTeal from "@/assets/shirts/shirt-
[Link]";
import shirtLavender from "@/assets/shirts/[Link]";
// Pants images
import pantsBlue from "@/assets/pants/pants-
[Link]"; import pantsBlack from
"@/assets/pants/[Link]"; import
pantsGrey from "@/assets/pants/[Link]";
import pantsKhaki from "@/assets/pants/pants-
[Link]"; import pantsNavy from
"@/assets/pants/[Link]"; import
pantsOlive from "@/assets/pants/[Link]";
70
import
pantsWhite from "@/assets/pants/[Link]";
import pantsBurgundy from "@/assets/pants/pants-
[Link]"; import pantsBrown from
"@/assets/pants/[Link]"; import pantsCharcoal
from "@/assets/pants/[Link]";
// Hoodie images
import hoodieBlack from
"@/assets/hoodies/hoodie- [Link]"; import
hoodieGrey from "@/assets/hoodies/hoodie-
[Link]";
import hoodieBurgundy from "@/assets/hoodies/hoodie-
[Link]"; import hoodieNavy from "@/assets/hoodies/hoodie-
[Link]";
import hoodieOlive from "@/assets/hoodies/[Link]";
import hoodieCoral from "@/assets/hoodies/[Link]";
import hoodieMustard from "@/assets/hoodies/hoodie-
[Link]"; import hoodieSkyblue from
"@/assets/hoodies/[Link]";
export type Product
= { id: string;
name: string;
category: "shirts" | "pants" |
"hoodies"; color: string;
price:
number;
image:
string;
71
};
const shirtNames = [
"Classic Red Button-Up", "Navy Crew Tee", "Midnight Black Tee", "Pure White Tee",
"Forest Green Polo",
"Blush Pink Shirt", "Maroon V-Neck", "Sunshine Yellow Shirt", "Royal Purple Tee", "Teal
Henley",
"Lavender Henley", "Crimson Sport Tee", "Deep Blue Oxford", "Charcoal Slim Tee",
"Ivory Linen Shirt",
"Sage Green Tee", "Coral Button-Down", "Steel Grey Polo", "Ocean Blue Tee", "Dusty
Rose Shirt",
"Emerald Crew Neck", "Burnt Orange Tee", "Sky Blue Oxford", "Wine Red Henley",
"Moss Green Shirt",
"Powder Blue Tee", "Copper Tone Shirt", "Arctic White Polo", "Slate Navy Tee", "Amber
Gold Shirt"
];
const shirtColors = [
"Red", "Navy", "Black", "White", "Green", "Pink", "Maroon", "Yellow", "Purple", "Teal",
"Lavender", "Crimson", "Deep Blue", "Charcoal", "Ivory", "Sage", "Coral", "Steel Grey",
"Ocean Blue", "Dusty Rose",
72
"Emerald", "Burnt Orange", "Sky Blue", "Wine Red", "Moss", "Powder Blue", "Copper",
"Arctic White", "Slate", "Amber"
];
const pantsNames = [
"Classic Blue Denim", "Black Formal Trousers", "Grey Joggers", "Khaki Chinos", "Navy
Cargo Pants",
"Olive Track Pants", "White Linen Pants", "Burgundy Slim Chinos", "Brown Corduroy",
"Charcoal Track Pants",
"Stone Wash Jeans", "Jet Black Skinny", "Silver Grey Slacks", "Tan Pleated Pants", "Dark
Navy Chinos",
"Army Green Cargos", "Cream Cotton Pants", "Maroon Joggers", "Camel Straight
Leg", "Graphite Trousers",
"Indigo Slim Jeans", "Onyx Black Joggers", "Ash Grey Chinos", "Sandy Beige Pants",
"Midnight Cargo",
"Forest Slim Pants", "Pearl White Slacks", "Rust Red Trousers", "Mocha Brown Jeans",
"Smoke Grey Tracks"
];
const pantsColors = [
"Blue", "Black", "Grey", "Khaki", "Navy", "Olive", "White", "Burgundy", "Brown",
"Charcoal",
"Stone", "Jet Black", "Silver", "Tan", "Dark Navy", "Army Green", "Cream",
"Maroon", "Camel", "Graphite",
"Indigo", "Onyx", "Ash", "Sandy", "Midnight", "Forest", "Pearl", "Rust", "Mocha", "Smoke"
];
const hoodieNames = [
73
"Noir Pullover Hoodie", "Heather Grey Sweatshirt", "Burgundy Zip-Up", "Navy
Pullover Hoodie",
"Olive Zip Hoodie", "Coral Crewneck", "Mustard Pullover", "Sky Blue Sweatshirt",
"Obsidian Oversized", "Ash Fleece Hoodie", "Cherry Red Zip-Up", "Dusk Blue
Pullover", "Sage Zip Hoodie", "Peach Crewneck", "Sunflower Hoodie", "Powder Blue
Pullover", "Shadow Black Crew", "Fog Grey Zip-Up", "Cranberry Pullover", "Indigo
Hoodie",
"Pine Green Crew", "Salmon Sweatshirt", "Honey Zip Hoodie", "Ice Blue
Crewneck", "Carbon Pullover", "Mist Grey Hoodie", "Crimson Zip-Up", "Steel
Blue Crew",
"Fern Green Pullover", "Blush Pink Sweatshirt"
];
const hoodieColors = [
"Black", "Grey", "Burgundy", "Navy", "Olive", "Coral", "Mustard", "Sky Blue",
"Obsidian", "Ash", "Cherry", "Dusk Blue", "Sage", "Peach", "Sunflower", "Powder Blue",
"Shadow", "Fog", "Cranberry", "Indigo", "Pine", "Salmon", "Honey", "Ice Blue",
"Carbon", "Mist", "Crimson", "Steel Blue", "Fern", "Blush Pink"
];
function
generateProducts(
names: string[],
colors:
string[],
images:
string[],
74
category: "shirts" | "pants" |
"hoodies", count: number
): Product[] {
return [Link]({ length: count }, (_, i)
=> ({ id: `${category}-${i + 1}`,
name:
names[i],
category,
color: colors[i],
price: [Link]([Link]() * 40 + 20) * 100
+ 99, image: images[i % [Link]],
}));
}
75
{ id: "wedding", label: "WEDDING", icon: "◻⁰" },
{ id: "sports", label: "SPORTS", icon: "◻⁰"},
{ id: "office", label: "OFFICE", icon: "◻⁰" },
{ id: "date", label: "DATE NIGHT", icon: "❤"},
{ id: "travel", label: "TRAVEL", icon: "✈"},
];
import { motion } from "framer-motion";
import { Sparkles, Loader2 } from "lucide-react";
interface
TryOnPreviewProps {
personImage: string;
garmentImage: string;
resultImage: string | null;
isLoading: boolean;
error: string | null;
glowClass?:
string;
borderClass?:
string;
}
const
TryOnPreview =
({ personImage,
garmentImage,
resultImage,
76
isLoading
, error,
glowClass = "glow-rose",
borderClass = "border-
primary/50",
}: TryOnPreviewProps) =>
{ return (
<div className="flex flex-col md:flex-row gap-6 items-center justify-center">
<div className="w-44 h-60 md:w-48 md:h-64 rounded-xl overflow-hidden border
border- border/50 flex-shrink-0">
77
<p className="text-[10px] text-muted-foreground/60 mt-1">This may take
10-30s</p>
</div>
) : resultImage ? (
<[Link]
initial={{ opacity: 0, scale: 0.9 }}
78
);
};
export default TryOnPreview;
79
CHAPTER 7
CONCLUSION
7.1 CONCLUSION:
81
7.2 FUTURE ENHANCEMENT:
82
CHAPTER 8
APPENDICES
8.1 SCREENSHOTS:
84
Fig 8.2. PRODUCT DISPLAY AND SELECTION
85
Fig 8.3. SKIN TONE ANALYSIS
86
Fig 8.4. OCCASION ANALYSIS
87
Fig 8.5. AI SUGGESTION
88
CHAPTER 9
REFERENCES
90
[6] A. Kumar, P. Singh, and S. Reddy, “Personalized Clothing
Suggestion System Based on Visual Appearance Analysis,” IEEE Int.
Conf. on Intelligent Human Computer Interaction (IHCI), IEEE, 2025.
91
[12] S. D’Souza, A. Fernandes, and P. Rodrigues, “Artificial
Intelligence for Personalized Clothing Recommendation in E-
Commerce Systems,” IEEE Int. Conf. on Emerging Technologies and
Smart Systems (ICETSS), IEEE, 2024.
92
[18] R. Das, P. Ghosh, and S. Dutta, “Intelligent Image-Based
Fashion Recommendation Framework for Digital Retail,” IEEE Int.
Conf. on Intelligent Computing and Information Systems (ICICIS),
IEEE, 2024.
93