Back to projects
⭐ Flagship Project
MonAmiChef logo

MonAmiChef

Your AI-powered personal chef

MonAmiChef is an AI-powered cooking assistant that generates personalized recipes and meal plans based on user preferences, nutrition goals, and time constraints. Available on mobile and accessible via API on RapidAPI.

Generates personalized recipes in secondsDesigned to scale across mobile and webProduction-ready AI backend
LiveReact NativeTypeScriptNestJSGemini APITailwind

The Problem

Generic recipe apps don't know who you are. Whether you're trying to build muscle, eat low-carb, or cook something quick on a weeknight — every session starts from scratch. No preferences, no memory, no context. And when AI is involved, hallucinated ingredients or nutritionally inconsistent recipes make the problem worse for users with real health goals.

The Solution

🎯

Personalized preferences

Users define nutrition goals, cuisine preferences, meal occasion, and timing — once. Every recipe adapts to these constraints.

💬

Conversational recipe generation

A structured AI chat surfaces relevant recipes instantly. Quick prompts like "Quick dinner in 20 minutes" or "High protein" get straight to the point.

📅

Meal plan & grocery list

MonAmiChef generates weekly meal plans and the corresponding grocery list automatically — no manual planning needed.

🔁

Chat history

Past recipe conversations are saved and accessible. Users can revisit previous meals or regenerate variations from old sessions.

Screenshots

Chat screenAI Chat
Preference pickerPreference Picker

System Architecture

Both the mobile app and the web dashboard share the same backend API, ensuring consistent recipe generation, preferences, and chat history across platforms. The NestJS API is the single source of truth — it handles authentication, preference management, and all LLM calls.

MonAmiChef architecture diagram

The API is also published on RapidAPI, making the recipe engine accessible for third-party integrations and developers who want to build on top of it.

Tech Stack

React Native
Mobile app
Expo
Build & distribution
TypeScript
Everywhere
NestJS
REST API
PostgreSQL
Database
Prisma
ORM
Gemini API
LLM
Tailwind CSS
Web dashboard

AI Reliability

AI hallucinations are a real problem in nutrition apps. MonAmiChef reduces unreliable outputs at the architecture level:

  • 🧱

    Structured JSON outputs

    The LLM is instructed to return strict JSON. Responses are parsed and validated server-side before being stored or returned to the client.

  • 🔒

    Prompt constraints from user preferences

    Dietary restrictions, cuisine types, occasions, and timing are injected into the system prompt as explicit rules — scoping what the model can generate.

  • 🎛️

    Predefined categories, not free generation

    For cuisine type, occasion, and timing, the model selects from a fixed set of options rather than generating them freely — eliminating an entire class of inconsistent outputs.

  • 📋

    Server-side validation

    All LLM responses are validated against expected schemas on the backend before being forwarded to the client — malformed or incomplete outputs are rejected.

Full Gallery

LoginLogin
AI ChatAI Chat
PreferencesPreferences
HistoryHistory

What I Learned

Designing a shared API for mobile and web

Building a single NestJS backend consumed by both a React Native app and a web dashboard forced me to think carefully about API contracts — versioning, payload shapes, and consistency across clients.

LLM reliability is an engineering problem

Making AI outputs trustworthy required the same rigor as any production system: typed schemas, server-side validation, and systematic prompt testing. Calling an API is the easy part.

UX is the foundation of AI quality

The preference picker wasn't a nice-to-have — it was the backbone of reliable outputs. Structured user context injected at the prompt level made every generated recipe dramatically more relevant.

Shipping a public API is a different discipline

Publishing on RapidAPI meant thinking about rate limiting, auth flows, and developer documentation in a way internal APIs don't require. A valuable exercise in building for external consumers.

Back to projects