Inspiration
The inspiration behind MyChefJeff comes from our day to day struggles as college students figuring out what to cook with our tight budgets and busy schedules. We wanted to create an app that addresses these issues but also something that's approachable and cute. This is why we chose Chef Jeff as our mascot, a friendly chef that you can talk to and ask questions about what kinds of meals you'd be able to make on a budget and with specific ingredients or restrictions.
What it does
MyChefJeff comes with 3 different different options. You can choose a meal plan based off budget, you can search for specific recipes based off ingredients, or you can have Chef Jeff come up with a specially made meal plan for you! Chef Jeff will also work with any dietary restrictions that you may have. If you need a meal plan or recipe that has specific ingredients and follows your budget, look no further.
How we built it
Backend Development: We began by setting up a Flask server (app.py) to handle incoming requests from the frontend. Endpoints such as /api/message were defined to process user messages, determine their type (recipe, budget plan, general chat), and interact with the Gemini API accordingly.
Integrating Gemini API: Using the Gemini API, we configured AI models (GenerativeModel) to respond to specific prompts related to recipes, budget plans, and general chat queries. This integration allowed our application to provide intelligent responses based on user input.
Frontend Development: For the frontend, we used Tailwind CSS to design a clean and intuitive user interface. Components such as prompts, chatboxes, and response displays were styled using Tailwind's utility classes, ensuring a consistent design language throughout the application.
Data Handling: JSON was used extensively for data exchange between the frontend and backend. User messages and AI responses were serialized as JSON objects to facilitate seamless communication and data processing.
Logging and Error Handling: Throughout development, we implemented logging to track user interactions and AI responses. Error handling (try-except) ensured robustness, providing appropriate error messages in case of exceptions during message processing.
Deployment: Once development was complete, the application was deployed to https://mychefjeff.netlify.app/ using pythonanywhere.com to host our website.
Challenges we ran into
Navigating Flask and the Gemini API for the first time presented a steep learning curve, which we worked together to figure out. Integrating frontend and backend components posed additional challenges, particularly in establishing a connection and data flow between front and backend. Determining the correct port configuration was another challenge we faced as we learned Windows and Mac users use different ports. Overcoming these challenges strengthened our team's technical skills and collaboration, culminating in a successful integration of AI-driven backend and responsive frontend.
Accomplishments that we're proud of
This was our first hackathon and that we're proud that we were able to come together as a group of friends this summer to create our first full stack hackathon project. We're proud of being able to pick up a new API as well as learn Flask and Tailwind CSS along the way.
What we learned
Participating in our first hackathon was an incredible experience, and we're really proud of how we came together as a group of friends this summer to create our very first full-stack project, MyChefJeff. Grappling with a new API and learning Flask and Tailwind CSS along the way felt like big achievements for us.
What's next for MyChefJeff
Looking forward, we're focused on refining MyChefJeff to make it even more user-friendly and reliable. Our goal is to iron out any remaining bugs and enhance its functionality, ensuring it's a go-to tool for students needing meal ideas that fit their dietary needs and budget constraints. We're excited about making MyChefJeff a trusted companion for meal planning, whether for a week or just a day, providing practical support where it's needed most.
Log in or sign up for Devpost to join the conversation.