Expert in Blazor development. Available for project collaborations!
Contact me

MenuMuse - AI Smart Menu Generator

🍜 MenuMuse - AI Smart Menu Generator

✨ Product Overview

MenuMuse is an advanced AI-powered menu generator that transforms ordinary menu photos into poetic culinary stories. Through deep learning and natural language processing technologies, MenuMuse not only intelligently recognizes dish information but also creates unique literary descriptions for each dish and generates professional-grade food photography images.

🎯 Core Values

  • 🧠 Smart Recognition: Advanced AI vision technology for precise identification of every dish on the menu
  • 🎨 Poetic Copy: Create unique literary descriptions for each dish, giving food the warmth of literature
  • 🌍 Bilingual Presentation: Chinese-English dish names that let cuisine transcend language barriers
  • πŸ“Έ Food Photography: AI-generated professional-grade food images, presenting each dish like a work of art
  • πŸ’ Personalized Recommendations: Intelligent pairing suggestions to help you discover perfect taste combinations
  • πŸ›οΈ Cultural Heritage: Deep analysis of dishes’ cultural backgrounds and the artistry of culinary craftsmanship

πŸš€ Tech Stack

Frontend Technologies

  • Next.js 15 - React full-stack framework with App Router and Server Components support
  • React 19 - User interface library with latest RSC features
  • TypeScript - Type-safe JavaScript superset
  • Tailwind CSS 4 - Utility-first CSS framework
  • shadcn/ui - Modern React component library (Neutral style)
  • Lucide React - Beautiful icon library
  • Zustand - Lightweight state management

AI and Backend Technologies

Development Tools


πŸ› οΈ Quick Start

Requirements

  • Node.js 18.17+
  • npm 9.0+
  • Docker (optional, for containerized deployment)

Local Development

  1. Clone the project
git clone https://github.com/neozhu/menu-muse-app.git
cd menu-muse-app
  1. Install dependencies
npm install
  1. Environment configuration
cp .env.example .env.local

Edit .env.local file and configure API keys:

# OpenAI
OPENAI_API_KEY=your_openai_api_key

# Google Vertex AI
GOOGLE_VERTEX_API_KEY=your_vertex_api_key
GOOGLE_PROJECT_ID=your_google_project_id

# Google AI (Gemini)
GOOGLE_AI_API_KEY=your_google_ai_api_key

# Next.js
NEXT_PUBLIC_BASE_URL=http://localhost:3000
  1. Start development server
npm run dev
  1. Open browser Visit http://localhost:3000 to view the application

🐳 Docker Deployment

  1. Build image
docker build -t menu-muse-app .
  1. Run container
docker run -p 3000:3000 --env-file .env.local menu-muse-app
  1. Using Docker Compose
docker-compose up -d

πŸ“± Features

🎯 Core Functions

πŸ” Smart Menu Recognition

  • Support for multiple image formats (JPG, PNG, HEIC)
  • Intelligent text recognition (OCR) and content parsing
  • Multi-language menu support (Chinese, English, Japanese, etc.)
  • Automatic image preprocessing and optimization

🎨 AI Content Generation

  • Poetic Copy Creation: Generate unique literary descriptions for each dish
  • Bilingual Dish Translation: Chinese-English bilingual display for international presentation
  • Cultural Background Analysis: Deep exploration of dishes’ historical and cultural significance
  • Culinary Craft Description: Professional cooking methods and technique introductions

πŸ“Έ AI Food Photography

  • Based on Google Vertex AI Imagen model
  • Professional-grade food photography styles
  • Automatic optimization of lighting and composition
  • Multiple styles and angle options

πŸ’‘ Smart Recommendation System

  • Personalized taste matching
  • Nutritional pairing suggestions
  • Seasonal recommendations
  • Regional specialty recommendations

🌟 User Experience

πŸš€ Three Simple Steps

  1. Upload menu photo - Capture or select menu images
  2. AI smart analysis - Automatically identify and parse dish information
  3. Get culinary stories - Generate poetic descriptions and professional images

🎨 Modern Design

  • Neutral Γ— Half-Flat Minimalism design style
  • Liquid Class fluid design elements
  • Glassmorphism glass-like visual effects
  • Complete dark mode support
  • Responsive design, perfectly adapted to all devices

β™Ώ Accessibility

  • WCAG AA standard contrast ratios
  • Complete keyboard navigation support
  • Screen reader friendly
  • Semantic HTML structure

πŸ—οΈ Project Architecture

menu-muse-app/
β”œβ”€β”€ app/                          # Next.js App Router
β”‚   β”œβ”€β”€ api/                     # API routes
β”‚   β”‚   β”œβ”€β”€ analyze-menu/        # Menu analysis endpoint
β”‚   β”‚   β”œβ”€β”€ generate-image/      # Image generation endpoint
β”‚   β”‚   └── health/              # Health check endpoint
β”‚   β”œβ”€β”€ menu-magic/              # Menu magic feature page
β”‚   β”œβ”€β”€ layout.tsx               # Root layout
β”‚   └── page.tsx                 # Home page
β”œβ”€β”€ components/                   # React components
β”‚   β”œβ”€β”€ ui/                      # shadcn/ui base components
β”‚   β”œβ”€β”€ menu/                    # Menu-related components
β”‚   β”œβ”€β”€ hero-section.tsx         # Hero section component
β”‚   └── ...
β”œβ”€β”€ lib/                         # Core libraries
β”‚   β”œβ”€β”€ ai/                      # AI client wrappers
β”‚   β”‚   β”œβ”€β”€ aiClient.ts         # Multi-model AI client
β”‚   β”‚   └── index.ts            # Unified exports
β”‚   β”œβ”€β”€ env.ts                   # Environment variable configuration
β”‚   └── utils.ts                 # Utility functions
β”œβ”€β”€ hooks/                       # Custom React Hooks
β”œβ”€β”€ types/                       # TypeScript type definitions
β”œβ”€β”€ stores/                      # Zustand state management
└── public/                      # Static assets

πŸ”§ Core Modules

AI Client (lib/ai/aiClient.ts)

  • Unified multi-model AI interface
  • Support for OpenAI, Google Vertex AI, Google Gemini
  • Automatic error handling and retry mechanisms
  • Type-safe API calls

Component System (components/)

  • Design system based on shadcn/ui
  • Reusable UI component library
  • Strict TypeScript type checking
  • Accessibility support

State Management (stores/)

  • Zustand lightweight state management
  • Middleware extension support
  • Server-side rendering friendly

πŸ§ͺ Testing

Running Tests

# Unit tests
npm run test

# Integration tests
npm run test:integration

# E2E tests
npm run test:e2e

# Test coverage
npm run test:coverage

Testing AI Features

# Test image generation
npm run test:image

# Test menu analysis
npm run test:menu-analysis

πŸ“Š Performance Optimization

πŸš€ Loading Performance

  • Server Components first, reducing client-side JavaScript
  • Dynamic Imports for lazy loading large components
  • Image Optimization using next/image for automatic optimization
  • Font Optimization using next/font to reduce CLS

🎯 Runtime Performance

  • React 19 concurrent features
  • Suspense for graceful async UI
  • useOptimistic for optimistic updates
  • Caching Strategy intelligent data caching

πŸ“ˆ Monitoring Metrics

  • Web Vitals core web vitals monitoring
  • Lighthouse performance auditing
  • Bundle Analyzer bundle analysis
  • Performance Profiling performance analysis

πŸ” Security

πŸ›‘οΈ Data Protection

  • API Key Management: Secure environment variable configuration
  • Input Validation: Zod schema validation
  • Error Handling: Error responses that don’t leak sensitive information
  • Rate Limiting: API request frequency limiting

πŸ”’ Privacy Compliance

  • Data Minimization: Only collect necessary data
  • Temporary Storage: Automatic image deletion after processing
  • Transparency: Clear privacy policies
  • User Control: Complete data control rights

🌍 Internationalization

πŸ—ΊοΈ Multi-language Support

  • Chinese: Simplified Chinese (default)
  • English: English
  • ζ—₯本θͺž: Japanese (planned)
  • ν•œκ΅­μ–΄: Korean (planned)

🎨 Localization Adaptation

  • Cultural Adaptation: Localized design elements
  • Cuisine Features: Optimization for different regional cuisines
  • Timezone Handling: Automatic timezone recognition and conversion

🀝 Contributing

We welcome and appreciate all forms of contributions!

πŸ“‹ How to Contribute

  1. Report Issues: Report bugs or suggest features in Issues
  2. Submit Code: Fork the repository, create branches, submit PRs
  3. Improve Documentation: Enhance documentation and examples
  4. Testing Feedback: Participate in testing and provide feedback

πŸ› οΈ Development Workflow

  1. Fork this repository
  2. Create feature branch: git checkout -b feature/amazing-feature
  3. Commit changes: git commit -m 'Add amazing feature'
  4. Push branch: git push origin feature/amazing-feature
  5. Create Pull Request

πŸ“ Code Standards

  • Follow ESLint configuration
  • Use TypeScript strict mode
  • Write unit tests
  • Maintain code readability and maintainability

For detailed contribution guidelines, please refer to CONTRIBUTING.md.


Want to know more about what I am working on?

My GitHub showcases most of my projects and ideas. Feel free to take a look and explore more technical possibilities together.

Check out my GitHub