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).
This week I worked on doing more research to ensure that MySQL would be the best database for our use case, and I looked into options of how to interact with the database from the Flutter front end.
This past week during one of the Capstone meetings, other options like hosting the database on the Cloud came up and so I looked into using Firebase instead for our database as it integrates well with Flutter and natively handles its scaling and security. Ultimately I came to the same conclusion that hosting our database on a server locally would be ideal, as Firebase is very convenient but it is also a NoSQL database which limits the queries we can use and it can also be expensive for scaling.
After officially coming to the conclusion that MySQL would be ideal for the project, I began planning out the database and decided on creating two tables, one with closet information and one for premade outfits. I then designed the table schema for the closet info table. I also set up MySQL on my computer and tested out running queries from the command line cli. Additionally, while planning out the schema, I discovered a potential issue with storing our clothing images directly in the database as it would lead to performance issues and a much larger database size. I looked into other options and decided it would be best to using a file storage system to hold the images and store the file path in the database instead. I feel that AWS S3 would be ideal for this because of its great scalability, availability and performance.
From here, I started looking into different options for interacting with the database from the front end. I mainly looked into using the HTTP Rest API, fastAPI, and using direct MySQL from Flutter. Ultimately I decided to go with fastAPI as it handles requests efficiently and works quickly because of its asynchronous capabilities. HTTP Rest API did not seem ideal because it can be difficult to scale and has performance limitation with high concurrency. Direct MySQL was also not the best choice for us because it has security vulnerability risks and was not good for scalability.
Then, I wrote up some simple fastAPI code to interact with a mySQL database based on this tutorial to get a better understanding of how I could get it to work for our application.
Besides this, I worked on the slides for the design presentation and have been practicing since I’m presenting this week.
Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the proiect schedule?
I had to update the schedule again to add connecting the web app to S3 and backend as a new task. I also am prioritizing fully setting up the database and backend over the UI of the web app as all of us will need to be able to use the database. Based on these new updates, I am on schedule.
What deliverables do you hope to complete in the next week?
I hope to complete setting up the database and backend, or at least get very far in doing so. I also want to finish up the design report.