Inspiration

As a college student, sometimes I dont know what to eat and I happen to have a lot of ingredients already at home, but they are always scattered around and after several months I forgot that I even have half the stuff. Especially with multiple roommates, it gets hard to keep track of what we have. To solve this I made Satchel, a site where you can put in all your inventory and use a built in chat bot (Satchy) to ask it for ideas on what to cook, what to buy, and help you on planning anything you wanna make or do!

What it does

The app allows you to upload your inventory either manually, or through a picture of a list or a shopping bill or any image uploaded which will extract items and give an option to add it to a selected inventory. The site offers inventory groups for multiple people to join into group inventories (ex a roommate group inventory for your dorm, a personal inventory for yourself, an inventory for a club etc.) These inventories can be managed manually or with the chatbot which is connected to perform CRUD operations on the inventories. If you want a recipe the bot is built to take in your inventory find the most recent expiring item, see what is already expired and suggest recipies to finish up what is going to go bad soon. It will also suggest to throw away anything that is expired, and will also take you suggestions on what kind of food you want to eat for the day. Satchy also gives the recipe in chat to make it easier to use for the user. This is not limited to daily menus, but can also be used for event planning and for parties. If you want to throw a party, you can ask Satchy and you will get to see what you have already at home and what you might need to buy to help you plan.

How we built it

I have built the application using Springboot along with PostgreSQL and React for the frontend. I have used the following stack as I have always wanted to learn Springboot and I took this as an opportunity to complete a course on Springboot, learn about Spring security authentication, and Spring JPA as well as data management, Docker containerization and hosting all through this app. I also find this as something I personally as student would need and hopefully many other students would find useful as well. I hence even made sure to build it in a scalable way to expand in the future as a mini startup.

Challenges we ran into

One of the biggest challenges I have run into was getting authentication to work. Although many of my problems were able to be solved through videos and help documents, getting authentication to work was a bit new to me. I took time to study how the whole process of authentication works and tried to integrate it, but after it not working I found out that I had made some silly mistakes and learned how to prevent it for the future. Also being my first time making a full app with Springboot, I was trying to get the project organization to be properly done and that took a bit of an effort. I also faced problems with my PostgreSQL where after I have built everything, I realized I made some core mistakes in my db schema and ended up having to redo the whole schema to properly follow the idea I had in mind. This was also conflicting with my authentication and new user creation at the time where I had no access to usernames at the time of testing, but realized that I would need to use that to access each individual inventory.

Accomplishments that we're proud of

  • It looks awesome, I am really glad the UI came out well
  • The backend is working and has all been hosted up on servers now. (only problem is timeout due to inactivity and 60 second startup time)
  • I have learn about security, databases, and formatting of my db schema.
  • I have built a complete inventory management system with an inventory-aware chatbot that can perform CRUD operations.
  • Implemented Docker containerization to my springboot application
  • Build a scalable database
  • Can form multiple groups with friends and families with a joining code

What we learned

I have taken a course on all of the following technologies during my time making this site: SpringBoot, Spring Data JPA, Spring AI, Spring Security, Oauth 2.0, Auth0, Docker, PostgreSQL, and React. I have also learned about how connecting PostgreSQL, making the proper DB design, and hosting on a server works now, as well as how to implement security in a project while understanding Auth and how the whole flow works.

What's next for Satchel

I will be working on creating a mobile app Features -user will get notifications on ther phone at triggered times set by the user with a recipe for the day given their inventory -if a user is attempting to host a party or needs to do shopping grocery recommendations can be generated. User can tick off while shopping. All this in a new tab. -social chat inside the created groups Bugs/add -Expand to include object location in db schema -fix gpt prompting to reduce tokens -fix db for constant calls to avoid inactivity in supabase -get the app running with dev account for ios

Built With

Share this project:

Updates