This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend I built Meal Mate for my daughter to help her decide what to cook after a long day at work and university.
She enters the ingredients she already has, chooses 10, 20 or 30 minutes, and can select dairy-free or gluten-free preferences. Meal Mate suggests one simple meal for one person, with quantities and cooking instructions.
I chose to return just one meal to make the decision easier. There is also a Copy Recipe button so she can keep the instructions handy.
She tried the app and said it would save her time and effort after a long day at work and uni. That was exactly the everyday problem I wanted to help with.
The screenshots shows Meal Mate running locally on my Mac, generating a recipe from available ingredients and copying the result.
The frontend uses React and Vite, with Express handling recipe requests. The backend sends a prompt to Gemma 3 4B through Ollama, running locally on my machine.
The prompt includes the available ingredients, time limit and dietary preferences. It asks for realistic quantities, minimal extra ingredients and five consistent recipe sections.
Testing helped me improve the instructions. One early result listed dry rice but told the user to reheat it. I refined the prompt to distinguish uncooked ingredients from leftovers and to check consistency between the ingredient list and cooking steps.
I also added input validation, states, error handling, Markdown rendering and a responsive layout.
Recipes are AI-generated suggestions, so the interface reminds users to check ingredients, cooking instructions and product labels.
Local inference is at the centre of Meal Mate. The recipe request goes to Ollama on my machine rather than a hosted AI service.
That means no hosted inference API key is required, and ingredient inputs do not need to leave the computer for recipe generation. Once the model and dependencies are installed, local generation can run without an internet connection.
Using an open-weight model also gives me room to experiment. I can swap models and adjust the instructions as I learn what works best for my daughter. There is a trade-off: generation speed depends on the computer running the model. For this small project, that was a useful way to learn about local AI while building something for someone I care about.