Solution Overview - amanda-zambrana/What2Wear GitHub Wiki

Solution

Self-styling is a process ordinarily required to be done at home in one’s personal wardrobe. The process can often be time-consuming, frustrating or confusing. Our solution to this problem is What2Wear, a mobile application designed to help users manage their clothing inventory digitally and create outfits from their wardrobe via their mobile device.

Goals

The primary functional objectives of our application are to allow users to upload images of their wardrobe items, store them, and categorize them into a digital wardrobe. Additional features include outfit shuffle, smart shuffle, style boards, weather-based styling suggestions, and more!

Application Type

What2Wear will be a mobile application. We are choosing to develop with React Native, as it is an open-source framework that would allow us to develop and deploy the application for both IOS and Android (initial development will be iOS). We also chose React based on its capability to enable the development of our major project requirements. Please navigate to the “Major Features” page of this wiki for more detailed information on the application’s key features.

Infrastructure

To ensure scalability and performance, What2Wear will be hosted on a cloud-based infrastructure. Initially, we are targeting approximately 5 users to test the application but the cloud-based setup should easily allow us to scale as the user base grows.

Backend

The backend will be built in Firebase, allowing us to build a scalable, API-driven backend that is capable of managing different APIs like Cloudinary, OpenWeatherMap API, and Gemini. Firebase will be our database tool for managing user data, clothing inventories, user preferences, etc. We will be working with lots of structured data that needs to be interconnected to various data sets such as user profiles, clothing inventories, style boards and weather data.

CI/CD

GitHub actions will be our CI/CD pipeline tool to test and deploy our application under various conditions.

Artificial Intelligence

What2Wear use external services such as Hugging Face to integrate pre-trained fashion models providing intelligent outfit recommendations. Integrating existing models into our project serves three purposes:

  1. It reduces the complexity of our application
  2. Avoids the need for us to collect large datasets and build an ML model to train
  3. Makes it feasible for us to incorporate a proper smart AI assistant within the semester-long development phase

APIs

We selected three APIs to support our application's core features based on their ease of integration.

  1. OpenWeatherAPI or WeatherAPI will provide real-time weather data for our application.
  2. Gemini Pro will provide the AI component of our application.
  3. Cloudinary will handle the storage and data extrapolation of user-uploaded images including background removal.

Security

Our application will Auth0 for user authentication enabling users to create new accounts and login to pre-existing accounts.

Overall Architecture

What2Wear will be built on a micro-services architecture as our application is designed with a mobile-first approach incorporating an API-driven backend for most of our major features.

  • MVC(Model-View-Controller) as our design pattern for our backend
  • Observer pattern for providing real-time notifications to the user
  • Singleton pattern to simplify our API integrations and have them consistent across our codebase.