Inspiration

Since, unfortunately, the group ended up all being ditched by their former groups, we ended up forming together, and during brainstorming, we all expressed our frustration and stress from being ditched. As a result of our sudden mood changes, Yonish came up with the idea to make an app that would record the user's emotions, in the form of colors, and then use that data to give the user results in a visual, and helpful way.

What it does

The web app is created to take in a user's data for their emotions through color inputs, all of which describe different emotions. The web app saves the color for that day and, over a span of some time, keeps accumulating the data to create a color palette that basically represents the emotions of the user over that amount of time. Using the exact proportions of the colors present in that color palette, the user can create any image of their choice, which best represents their soul and identity, turning their emotional colors into digital art.

How we built it

We made the app on a StreamLit Framework, which is a Python based web platform. We made the user be able to make inputs, both through text and clicking buttons. When the inputs are generated, they are pushed or pulled to the cloud database, where they will be checked for their existence within the database. The database was used to store data, and push it to the program, allowing us to manipulate it, and analyze it for the user. The app also generated graphs and helpful information paragraphs that helped explain each emotion. The database saved all this information for each user that entered. Then, once the user inputs their information, and their "soul", the program makes the pre-built prompt use an API to DALLE-3, which would prompt it, and generate an image using the soul description, and only with the colors that the emotions depicted.

Challenges we ran into

One challenge we ran into was the Framework, and how it worked. Since it constantly ran code, it led to results for saving user data being unreliable, since the way the database saved code, and the way the framework would run clashed, the data would end up getting erased or overwritten, which caused problems for us. As both a solution and a challenge, we had to use the StreamLit session states methods to create persisting variables for reading and writing to the database. They're really esoteric and hard to deal with, but their functionality is necessary for the way we built the web app and database.

Accomplishments that we're proud of

We are proud of how we managed to use a foreign framework, with most of the team being rusty in python, and managed to make a fully functioning web app in the language. We also managed to make it look nice, on top of everything else. We also learned how to work with cloud computing, through the MongoDB database, which allowed us to store user data into a cloud service, and push and pull it at will in the program's runtime. As a result, we turned a static website into a dynamic one, which would act differently to each user, and remember their data even after they've refreshed the page and left. Finally, we managed to learn how to integrate APIs into our software, particularly with AI. We learned about how to develop an effective prompt, that would give us accurate and helpful results, instead of vague hallucinations.

What we learned

We learned how to use the framework of StreamLit, learning the specific methodology of it. Since StreamLit doesn't allow for code to run normally, instead required a localhost to be established, we had to adapt, and work without the luxury of console logging to help with debugging. We also had to learn how to set up and integrate a MongoDB database into our program. After doing this, we were able to save data into the database, and make it accessible to us, and thus making it easier to use and analyze user data for the "emotional" side of the project. Finally, we figured out how to add APIs into the project, and make it work with Chat GPT 4, and generate an image for the user, through a carefully created prompt, which allows for it to be as accurate as we could make it.

What's next for SoulSketch

The potential usage for this web app is within the field of therapy, and mental health. Using the database of patients, therapists can make more accurate analysis of the patient's health, and be more effective when deciding how to provide treatment for it. Additionally, the image that is generated, can help give therapists and patients a more clear picture into how they feel in reality, vs what they see within themselves. Additionally, the web app could be used for artists, as it can help them get more in touch with their emotions, and as such give them more artistic expression in their art.

Built With

Share this project:

Updates