Skip to content

junho5400/mise

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mise - AI Culinary Assistant

A personal AI sous-chef that discovers recipes, respects your dietary needs, and helps you plan the grocery run.

Key Features

  • Conversational AI Chat - Describe what you want to cook or what's in your fridge. The AI finds recipes, handles substitutions, and adjusts for dietary needs.
  • Fridge Inventory - Log what you have on hand. The AI prioritizes recipes using your available ingredients and flags items expiring soon.
  • Taste Profile - Save allergies, dietary restrictions, favorite and disliked ingredients. Every recommendation is personalized automatically.
  • Recipe Collection - Save recipes to your personal cookbook. Search and filter by cuisine, difficulty, or cook time.
  • Smart Shopping Lists - Add a recipe's ingredients to your shopping list. Items already in your fridge are flagged so you don't buy duplicates.

Tech Stack

Layer Technology
Frontend React 19, Styled Components, Framer Motion
Backend Node.js, Express, Helmet, Rate Limiting, Winston Logger
Database MongoDB with Mongoose ODM
AI Together.ai API (LLM with fridge-aware context)
Auth JWT + bcrypt
Validation express-validator

Getting Started

Prerequisites

Installation

  1. Clone the repository:

    git clone https://github.com/junho5400/mise.git
    cd mise
  2. Install dependencies:

    npm install
    cd client && npm install && cd ..
  3. Set up environment variables:

    Create a .env file in the root directory (see .env.example):

    PORT=3000
    MONGODB_URI=your_mongodb_connection_string
    JWT_SECRET=your_jwt_secret
    TOGETHER_API_KEY=your_together_ai_api_key
    CORS_ORIGIN=http://localhost:3001
    LLM_MODEL=meta-llama/Llama-3.3-70B-Instruct-Turbo-Free
    LLM_RATE_LIMIT=5
    LOG_LEVEL=info
  4. Start the development servers:

    # Backend (port 3000)
    npm run dev
    
    # Frontend (separate terminal)
    cd client && npm start

API Endpoints

Authentication

Method Endpoint Description
POST /auth/register Register a new user
POST /auth/login Log in
GET /auth/me Get current user profile

Chat

Method Endpoint Description
POST /api/chat AI conversation (uses preferences + fridge contents as context)

User

Method Endpoint Description
POST /users/me/recipes/:recipeId Save recipe
DELETE /users/me/recipes/:recipeId Remove saved recipe
GET /users/me/recipes Get saved recipes
PUT /users/me/preferences Update dietary preferences

Fridge

Method Endpoint Description
GET /users/me/fridge Get all fridge items
POST /users/me/fridge Add a fridge item
PUT /users/me/fridge/:itemId Update a fridge item
DELETE /users/me/fridge/:itemId Remove a fridge item
DELETE /users/me/fridge/expired Clear all expired items

Shopping List

Method Endpoint Description
GET /shopping-list Get shopping list
POST /shopping-list/recipe/:recipeId Add recipe ingredients (flags items already in fridge)

Project Structure

├── src/                    # Backend
│   ├── index.js            # Server entry point
│   ├── config/             # Database, env validation, logger
│   ├── controllers/        # Auth, recipe, user, fridge, shopping list
│   ├── models/             # Mongoose schemas (User with fridge, Recipe, ShoppingList)
│   ├── routes/             # Express route definitions
│   ├── middleware/          # Auth, validation, error handling
│   └── services/           # LLM integration (fridge-aware prompting)
├── client/src/             # Frontend (React)
│   ├── EnhancedApp.jsx     # Root component with routing
│   ├── context/            # Auth state management
│   └── components/         # UI components
│       ├── EnhancedHome.jsx         # Landing page
│       ├── EnhancedChatInterface.jsx # AI chat (two-panel layout)
│       ├── Fridge.jsx               # Fridge inventory
│       ├── EnhancedPreferences.jsx  # Taste profile
│       ├── EnhancedSavedRecipes.jsx # Recipe collection
│       └── ShoppingList.jsx         # Shopping list
└── .env.example            # Environment variable template

Deployment

  1. Build the React frontend:

    cd client && npm run build
  2. Deploy to your preferred hosting platform

  3. Set all required environment variables on your hosting platform

Author

Junho Hong

License

This project is licensed under the MIT License.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors