Features - amanda-zambrana/What2Wear GitHub Wiki
Functional Features
Create Account
Each user will be first prompted to create an account for the What2Wear app, which will serve as their own personal digital wardrobe -- a place to store their closet inventory digitally to be accessed from anywhere, anytime.
Image Upload
Users are able to take images of their clothing and accessories and upload them to the app to be stored in their digital wardrobe. Users can categorize each image by choosing the type of clothing/accessory it is (ie. tee shirt, jacket, shorts, snow boots, etc.). Users can also add the colors of the item they upload as a feature of it to aid them in future interactions with their digital wardrobe.
Browse Inventory
Users can browse through their digital wardrobe inventory to see what they have. They have the option to view their entire inventory at once or to view it under custom filters such as tops only, all shoes inventory, everything in a certain color, etc. They can also choose to delete items from their closet (say they lost that item/sold it/donated it/etc.).
Outfit Shuffle
Users can shuffle through their clothes and accessories in each category (ie. tops, bottoms, shoes, accessories, outerwear, etc.) to create outfit combinations. Users have the option to shuffle all categories at once, as well as to lock any one or more category and shuffle the rest, enabling them to further customize the random shuffling. For example, if the user shuffles randomly and sees a shirt that they definitely want to wear, but they don't like the random choice of pants that come up, they can lock the shirt and shuffle the rest! Users can also further filter their randomized outfit shuffling by filtering the shuffle to only shuffle clothing of a certain type (ex: shorts only rather than shorts/pants/sweatpants/etc.) or color.
Smart Shuffle
Users can also take advantage of the Smart Shuffle feature, which uses an embedded API to provide artificially-intelligent outfit suggestions to users. The smart shuffle will suggest entire outfits to users based on what it thinks would coordinate well together, as opposed to the typical Outfit Shuffle feature, which simply provides a totally random shuffle of the user's entire digital inventory for each category. This feature is very beneficial for users who really want help coming up with matching outfit combinations.
Style Boards
Users can save the outfits that they design to custom style boards on their account. Style boards are completely custom, so users can choose whether they want to title them "Summer outfits", "Business Casual" or anything they desire! Style boards are the user's way of saving outfit ideas to come back to later or to save outfits they really like to refer back to when they need an idea of what to wear for a certain occasion.
Weather Suggestions
Users will get suggestions for what to wear on a daily basis based on their local weather. With an embedded WeatherAPI, What2Wear detects severe weather conditions and predictions in order to suggest certain clothing items to users. For instance, if the application detects that it is raining, it will suggest that users wear a jacket and a pair of rain boots. What2Wear will also integrate the current local temperature and weather on the interface, so users can determine what they want to wear on a daily basis by simply viewing the temperature.
Outfit Scheduling
With integrated calendars, users will be able to plan their outfits ahead of time and store them to specific dates in their personal styling calendar.
Additional Features for Future Implementation (If Time Allows)
- Schedule Notifications: Users have an accompanying option to the outfit scheduling feature such that they can receive notifications/reminders of outfits that the user has planned for a given day.
- Outfit Analytics: Users can view analytics on their styling tendencies such as their most and least worn wardrobe items.
- What2Wear Social: Users can view the wardrobe inventory of their friends and actually create outfit suggestions for them from their own digital closets!
- In-App Shopping: Users will be able to browse and/or purchase clothing directly through the app. Clothing suggestions will be presented to them based on the items that they already have in their personal wardrobe.
Non-Functional Features
Performance
- Response time: The app should fetch weather data and provide clothing recommendations within 2-3 seconds. This includes any communication with external weather APIs and any internal processing to generate recommendations based on weather conditions. The app should prioritize delivering information quickly to maintain user engagement, especially during peak usage times, such as mornings when users are checking the weather to plan their outfits.
- Scalability: As the user base grows, the app should maintain consistent performance. This requires a scalable backend architecture that can handle large numbers of concurrent users without significant delays. To achieve this, technologies like load balancing, server-side caching, and optimized database queries should be used.
Usability
- User-friendly interface: The interface should be designed to minimize the number of steps required for a user to get clothing recommendations. This can include clear icons, intuitive navigation, and quick access to key features such as weather reports, suggestions, and wardrobe customization.
Reliability
- Availability : The app must be available 24/7, as users might need it at any time of the day to plan their outfits. This requires reliable cloud infrastructure, redundancy mechanisms, and failover systems to ensure minimal downtime.
- Error Handling:The app should handle errors gracefully. For example, if the weather API is down or if there's a network issue, the app should show a user-friendly error message like “Unable to fetch the weather. Please check your internet connection and try again.
Security
- Data protection: Any personal data, especially location data used for weather predictions, should be encrypted both in transit (using SSL/TLS) and at rest. The app must comply with privacy regulations like GDPR or CCPA if handling users from relevant regions.
- Authentication : As the app allows users to create accounts (e.g., to store personalized outfit preferences), secure authentication mechanisms like OAuth 2.0 or Two-Factor Authentication (2FA) should be implemented to protect user accounts. Passwords should be stored securely using hashing algorithms like bcrypt.