100 Recipes: Building an AI Cooking Assistant as a Solo Dev
My little cooking experiment just hit 100 recipes! This whole project started as a side project to learn more about AI integration and React, and somehow turned into a full-fledged cooking assistant. It's been a wild ride building this solo, and I wanted to share what I've learned along the way.
Why I Started This: Scratching My Own Itch
Let's be honest: finding the right recipe online is frustrating. You have to scroll through someone's life story, battle with aggressive ads, and often end up with something that doesn't match your skill level, dietary needs, or what's actually in your fridge.
I figured AI might be able to solve this. Not just searching better, but actually having a conversation about what you want to cook. So I started tinkering. That's how Recipe Studio was born—literally just me, my laptop, and too much coffee.
The Tech Stack: What I'm Working With
I wanted to move fast and learn modern tools, so here's what I ended up with:
- Frontend: React 18 with React Router v7 (learning the new framework patterns)
- UI: Tailwind CSS + shadcn/ui (because I'm not a designer and these components look great)
- Backend: Supabase (PostgreSQL, Auth, Storage, Edge Functions—seriously this saved me months)
- AI: Google Gemini API for conversational chat and recipe generation
- Deployment: Vercel (free tier for now, deploys are ridiculously fast)
I tried to keep the architecture clean from the start: pages handle routing, feature components manage state, and UI components just render. It's made refactoring way less painful when I inevitably realize I did something wrong the first time.
The AI Personas: A Fun Experiment
One of the most fun parts of this project was creating 8 different AI cooking personas. I wanted to see if I could make the AI feel like different people with different cooking styles:
- Personal Chef: Classic, sophisticated, technique-focused
- Home Cook: Practical, approachable, family-friendly
- Quick & Easy: Fast, efficient, minimal cleanup
- Health Nut: Nutrition-focused, balanced, wholesome
- Budget-Friendly: Cost-conscious, smart shopping tips
- Gourmet Explorer: Adventurous, exotic ingredients, bold flavors
- Comfort Food: Nostalgic, hearty, soul-warming
- Plant-Based: Vegetarian and vegan creativity
They all use the same Gemini API under the hood, but I tuned the system prompts to give each one a distinct personality. It's surprisingly effective—talking to the Quick & Easy persona feels totally different from chatting with the Gourmet Explorer.
The Context System: Making AI Actually Remember You
Here's where I probably got a bit carried away. I built a dual-context system so the AI can remember things about you:
Short-term context tracks your current situation:
- Energy level (exhausted vs. energized)
- Time available (15 min vs. 2 hours)
- Current cravings
- Cooking mood
- Ingredients on hand
- Stress level
Long-term context stores your stable preferences:
- Dietary restrictions
- Skill level
- Favorite cuisines
- Kitchen equipment
- Budget level
- Household size
- Spice tolerance
Before the AI generates a recipe, it checks all of this. So when you tell it "I'm tired and have 20 minutes," it knows what that means for you specifically—based on your skill level, what equipment you have, and what kind of recipes you usually like. It's probably overkill, but it works surprisingly well.
Things That Were Harder Than I Expected
Some stuff I thought would be easy turned out to be way harder:
1. Making AI Conversations Feel Natural
Getting the AI to ask questions without feeling like a boring form took forever. I must have rewritten the onboarding flow 20 times before it felt conversational. Now it asks just 5 questions and actually feels like chatting with someone, not filling out paperwork.
2. Rate Limiting Without Annoying People
AI recipe generation costs money. Like, real money. I had to implement a 7-recipes-per-month limit for now (it's just me paying for this), but I didn't want it to feel super restrictive. So I added a usage tracker in the UI and made sure all saved recipes are unlimited to browse. Hopefully it feels fair.
3. Structured Recipe Generation
Holy crap, getting AI to output consistent, well-formatted recipes was a nightmare. Even with structured JSON mode and schema validation, I kept hitting weird edge cases:
- The AI would include conversational text in ingredient lists ("you'll need about...")
- Units of measurement were all over the place
- Sometimes it just... forgot nutritional information
- Instructions would be way too complicated
I spent weeks tweaking prompts and adding validation. It's better now, but I still find weird cases occasionally.
4. Keeping It Simple
I wanted this to be useful for both beginners and experienced cooks, which meant not overwhelming people with options. I'm constantly fighting my urge to add more features and instead trying to keep the interface clean. It's a work in progress.
Features I'm Actually Excited About
Interactive Onboarding
The 5-question onboarding flow turned out really nice. It feels like a conversation and gathers just enough context without being annoying. First time I've built something that feels this natural.
Camera-Based Ingredient Detection
This was a fun addition—point your camera at your fridge and the AI vision model identifies ingredients. Works better than I expected, honestly. No more typing out what you have on hand.
Smart Meal Planning
You can add recipes to a weekly meal plan and it auto-generates a grocery list. You can even share the meal plan with a unique link. This was surprisingly useful when I started actually using it myself.
Sharable Recipes
Every recipe gets a clean URL you can share. No login required to view, which was important to me—I hate when recipe sites force you to create an account.
Design That Doesn't Suck
I'm not a designer, but I spent way too much time on typography and colors. Used serif fonts (Cormorant Garamond, Crimson Pro) to give it that magazine feel, and went with terracotta/olive colors because they felt warm. It's no Behance project, but I'm happy with how it looks.
What I Might Build Next
Hitting 100 recipes feels like a milestone, but there's so much I still want to experiment with:
Recipe Scaling & Substitutions
Would be cool if the AI could help you double a recipe or suggest substitutions when you're missing an ingredient. Seems doable.
Community Features
Maybe add favorites, let people share recipes with friends, see what others are cooking. Not sure if this needs to be a social network or if simple sharing is enough.
More AI Personas
Thinking about adding specialized personas for specific diets (keto, gluten-free) or cooking styles (BBQ master, pastry chef). Could be fun.
Mobile App
The responsive design works okay on mobile, but a native app with offline support would be sweet. That's a huge project though, so we'll see.
Better Search
Right now search is pretty basic. Would love to add filtering by ingredients, cook time, difficulty, cuisine, etc. Just need to find the time to build it.
Try It Out If You Want
This project has been a fun experiment in AI, UX design, and honestly just learning new stuff. It's not perfect, but it's genuinely useful (at least I use it, which is the main metric that matters to me).
If you're curious, give it a shot. It's in beta, so expect some rough edges. I'm always tweaking things and adding features when I get the time.
Shout out to everyone who's tried it and sent feedback. Building in public is weird and humbling, but it's also the most fun I've had on a side project in years.
Now back to fixing bugs and probably over-engineering some new feature.
— Nick
I might write more posts about the technical details of building this (the context system, prompt engineering, React patterns, etc.) if anyone's interested. Still figuring out this whole "blogging" thing.