All Projects
Confidential context: Product buildAI / MLLive

Chefy

A focused software project built around a real workflow.

Chefy cover screenshot

How the project is put together

Architecture map

6 layers / 5 directed links

100%

feedsfeedsfeedsfeedsfeeds
  1. 01
    Interface

    Ingredient input and generated recipe result UI.

    React / TypeScript / Tailwind / shadcn/ui
  2. 02
    Application

    Ingredient validation, request state, and generated output handling.

    Client state / Validation / Error boundaries
  3. 03
    Services/API

    Server-side OpenAI proxy protects API keys and structures recipe generation.

    Vercel functions / OpenAI
  4. 04
    Data

    Generated recipes are request-scoped in the current implementation.

    No persistent database
  5. 05
    Auth/Permissions

    No user auth; API credentials remain on the server.

    Server-side API key handling
  6. 06
    Runtime

    Serverless deployment for a focused AI utility.

    Vercel / Analytics / Speed Insights

From broken workflow to operating system

A workflow needed clearer structure and better software support.

A shipped system made the workflow easier to operate and maintain.

The workflow constraint

Home cooks waste food because they don't know what to make with what they have. Existing recipe apps require you to search by dish name, not by ingredients on hand.

What changed

Live in production on Vercel
Clean, responsive UI on all devices
Secure API key handling via server-side routes

Decisions and trade-offs

Serverless API routes over dedicated backend

Only one API call needed (recipe generation) — a full backend server would be overkill.

Decision: Used Vercel serverless functions to proxy OpenAI calls, keeping the architecture simple and cost-effective.

Trade-off: Cold start latency on first request, but zero infrastructure management and free tier sufficient for traffic.

Shadcn UI over building custom components

Needed polished, accessible UI components quickly without heavy dependencies.

Decision: Adopted Shadcn UI (copy-paste Radix primitives) for full control over styling while getting accessibility for free.

Trade-off: More initial setup than a full component library, but zero runtime dependency and full customization.

Constraints, architecture, and proof

React SPA built with Vite, Shadcn UI (Radix primitives) and Tailwind CSS for the interface, serverless API routes for OpenAI integration, deployed on Vercel with Vercel Analytics and Speed Insights.

Minimum 4 ingredients required for meaningful recipe generation
API keys must never be exposed to the client (server-side calls only)
Responsive design — works on both desktop and mobile
Fast response time despite LLM latency

Deployment, security, and maintenance

Server-side API key handling, input validation for ingredient lists, error boundaries for failed generation attempts, Vercel Analytics for monitoring.

What I would improve next

Add image generation for recipe previews
Implement recipe saving and history
Add dietary restriction and cuisine preference filters