VeggieCorner
A recipe journal focused on plant-based cooking, integrated with Claude AI for recipe and image creation. VeggieCorner helps me keep track of favorite recipes and lets users explore vegetarian and vegan dishes with a clean, modern interface built for everyday use.
What it does
- Browse, search, and filter a personal plant-based recipe collection by ingredient, category, or free text
- Full recipe detail pages with ingredients, step-by-step instructions, nutritional information, and chef tips
- Save favorites and manage personal collections across sessions
- Admin panel for full recipe CRUD — create, edit, and delete entries with structured forms
- Claude AI assists with recipe suggestions and ingredient substitutions on request
- fal.ai generates food photography automatically for recipes without an image
- Companion MCP server exposes the full recipe API as Claude tools — browse and save recipes mid-conversation
Why it matters
- Recipe additions via Claude in one message — no form-filling, no dashboard switching
- fal.ai food photography eliminates 10+ minutes of manual image sourcing per new recipe
- Full recipe database accessible mid-conversation via MCP — browse and save without leaving the chat
Architecture
- Next.js 15 App Router with Drizzle ORM + PostgreSQL for type-safe, schema-driven database access
- REST API routes handle recipe CRUD, favorites, and filtered search — consumed by both the web UI and the MCP server
- NextAuth handles user authentication; admin routes are server-side protected
- Companion MCP server (local stdio process wired via Claude Code .mcp.json) exposes `list`, `save`, `edit`, `delete`, and `generate_image` as callable tools — the full fal.ai → Cloudinary pipeline runs inside this server, bypassing Vercel serverless timeouts and fal.media's server-to-server fetch block
- Deployed at veggiecorner.mariansan.io
Philosophy
- A recipe journal that works the way I actually cook — browse fast, add without friction
- Claude can reach into the recipe database mid-conversation, so logging a new dish is one message
- Owned data and owned interface — not locked into a third-party recipe platform
- Next.js
- Drizzle
- PostgreSQL
- Claude AI
- fal.ai