Project Info
Inspiration
With 40% of the entire US food supply ending up in the waste, helping to eliminate food waste—even at a small scale—can go a long way. We wanted to tackle the problem at a consumer level to help individual households use their leftovers more effectively. Furthermore, many people (our team included) spend parts of the day worrying about what they want to make for dinner with the ingredients in their fridge. We decided to chip away at both of these problems with a new app household cooks can use on a daily basis.
What it does
Snap chef just requires a picture of your fridge, either taken live or previously taken and uploaded. With this, it is able to use Google Gemini to parse the image and create delicious recipe ideas with the data and other parameters specified by the user. Features The app allows the user to manually edit the number and name of each ingredient in case Gemini incorrectly counted or some items were hidden. It has several sorting and filtering modes, so you can make sure you see recipes that use specified ingredients, or make sure you see recipes that meet your dietary restrictions. Lastly, you can also save recipes Snap Chef generated for later use. App structure The foundation of the app is built upon react native, developed with expo. It has a back-end server built with flask to pass user input to the Gemini Generative AI API. Challenges The free trial plan of Gemini we were using has a rate limit of 1 query every 5 minutes, which forced us to get creative with our development process and testing. The Gemini API servers were also having severe connection issues by the end of the final day, making testing and recording a test take over two hours. Our group barely had any react experience, so doing an entire react project and integrating it with other software was very challenging for us. In particular, getting the image picker and camera to work along with flask and the Gemini API took a lot of troubleshooting.
Accomplishments we're proud of
Above all, we are happy to have competed in our first hackathon! Honestly, we're extremely proud that we managed to get the whole thing working and talking to each other and learning entire frameworks on the fly, given our lack of experience in this area. We are very proud of how far we've learned and grown from this project.
What we learned
Together, we all learned react-native, the Gemini GenerativeAI API, and flask for the first time! We also learned that it might not be the best idea to develop the frontend of a project before the backend.
What's next
We hope to incorporate an actual recipe API, such as allrecipes or edamam, so we don't have to rely on Gemini for recipes. Furthermore, we hope to activate a paid plan for Gemini so we can get passed the 5 minute rate limit on requests. With these, it would be possible to put the app on the google play store and app store.
⭐ Snap Chef App - TreeHacks 2025 ⭐
For many people, making the decision for what to cook each night is a source of stress. With Snap Chef, decisions can be made for you while taking into account the contents of your fridge.
Click, Cook, Enjoy!
Transforming your fridge's leftovers into a delicious meal has never been easier! First, Point the camera at your fridge, or upload a previously taken photo. Then, input any specific ingredients you want to make sure are used as well as any dietary restrictions. Snap chef will instantly respond with several great ideas for any meal that day!
Using Snap Chef
First, upload a photo to the app or take a live photo Second, hit the analyze fridge button Third, edit any ingredients (names, amounts) or add new ingredients entirely Fourth, view recipes, feel free to bookmark!
Building Snap Chef
Snap Chef is currently very early in it's development and so is not on the Apple app store or the Google play store. Thus, Snap Chef needs to be compiled directly from source on a computer and then transferred to a phone.
Step 1
Install the Expo Go app on your phone
Step 2
Install homebrew (MacOS only) running the following in terminal` /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Step 3
Clone this github repository with
git clone https://github.com/ryan-tock/snap-chef.git
Step 4
Install Node.js by running
brew install node
Step 5
Navigate to the source directory with
cd snap-chef
Step 6
Install dependencies with
npm i
Step 7
start the expo server with
npx expo start
Step 8
Scan the qr code on your phone to launch the app on phone
Analysis
View
Metric
- 51
- 49
- 26
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- JavaScriptIn code
- PythonIn code
- ReactIn code
- TypeScriptIn code
- FlaskClaimed
- Google GeminiClaimed
4 of 6 appear in the indexed code. 2 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
122 KB
Source files
34
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
ryan-tock/snap-chef
55 files · 2.4 MB · @ 25dda44
Structure
Interface
25 files · 45%Screens, components and styles rendered to the user.
Application logic
11 files · 20%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript80%
- Python16%
- JavaScript3%
- Markdown1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 39- @expo/vector-icons
- @react-native-async-storage/async-storage
- @react-native-picker/picker
- @react-navigation/bottom-tabs
- @react-navigation/native
- axios
- expo
- expo-blur
- expo-camera
- expo-constants
- expo-font
- expo-haptics
- expo-image-picker
- expo-linking
- expo-router
- expo-splash-screen
- expo-status-bar
- expo-symbols
- +21 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.