What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).
I made many changes to the project this past week.
First, I set up the functionality for getting images from S3. I started by creating an AWS role with permissions for accessing the private S3 bucket with sensitive user data (images of clothing). I also installed the Boto3 module for S3. I used this module on the backend to fetch images from the S3 bucket, and create signed urls that I sent to the frontend. These signed urls allow us to display the clothing images on the frontend to users in a secure way. I tested this feature by uploading some test clothing images to the bucket and using different features of the application that show images.
I also fully reworked the outfit generation algorithm on the backend. I worked with Alanis to develop a more clear definition of what a “correctly” generated outfit would be based on different user requests. For example, for a casual request in a warm location, the new algorithm always generates a top/bottom or one piece (dress/jumper) outfit. It will never return a jacket or sweater. I also updated the algorithm to take user preferences into account 20% of the time.
I updated the select outfit feature on the backend and frontend to be compatible with dresses, jackets, and overwear (overwear in our application is defined as any sweaters, cardigans, blazers, or hoodies). I also got rid of the athletic usage type from the backend and frontend logic as it made more sense for the ML model to identify clothing as casual/formal instead of athletic, casual, or formal.
Alanis added the changes for the new closet inventory page on the frontend, and I added the backend functionality to paginate through the clothing items in the closet as well as edit clothing item classifications on the database.
I added a new location field to the database settings table, and made it possible for users to update their location from the frontend in settings. If the user inputs invalid locations or an invalid number for “Number of uses before dirty”, I added an error popup so users know that their change did not go through.
I also updated the backend to send the image url given by the Jetson Nano with the clothing item to the database table. Additionally, on the frontend, I updated the outfit generation page to display the clothing items in different formats based on how many items are in the outfit. This change was made for outfits to be more clear to the user.
This week I also ran into many issues with merging on git, and discovered that this entire semester I had been committing backend code under my name instead of my github accounts. This caused a majority of my commits, besides my newer ones to not show up in contributor insights. I now have this fixed for my future changes, but it is still inaccurate for my past ones, so for accurate insights into my backend code changes, please look through the individual commits under my name or github account instead of the contributor insights.
Overall, this week I finished all of my goals for the backend/frontend and have tested all of my features for basic functionality. I also set up a testing plan for more specific insights like intuitiveness of the application and the speed of outfit generation. I also added my testing information to the final presentation.
Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?
My progress is on schedule.
What deliverables do you hope to complete in the next week?
This next week, I hope to finish up all of my testing and start working on the final report, poster, and video.
As you’ve designed, implemented and debugged your project, what new tools or new knowledge did you find it necessary to learn to be able to accomplish these tasks? What learning strategies did you use to acquire this new knowledge?
I had to learn how to use FastAPI to set up the backend. I learned this by reading through the documentation online and following a tutorial. I also learned how to use Flutter to develop the frontend, which I also learned by following a tutorial and reading documentation.
I followed both tutorials for FastAPI and Flutter during the beginning of the semester and documented my experience doing this in previous status reports. I felt that getting an initial exposure through the tutorials was very effective for me, as I was able to get a basic grasp of the frameworks. I also found it helpful to look up documentation later on as I had more specific goals and features I wanted to implement.
I learned how to create, manage, and query a MySQL database in a class I am taking this semester, 70455 Data Management Fundamentals. I feel that this class helped me get a thorough understanding of how to set up and use the database securely and effectively.