JSPM

node-red-contrib-open-food-facts

0.3.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3
  • Score
    100M100P100Q43159F
  • License MIT

A Node-RED node that provides easy integration with the Open Food Facts API. Search for products, retrieve product information, add products, and manage product images.

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (node-red-contrib-open-food-facts) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    Node-RED Open Food Facts

    License: MIT Node.js CI npm version

    A Node-RED integration for the Open Food Facts API, providing easy access to food product information, nutrition facts, and ingredient details from the world's largest open food database.

    Features

    • Product Lookup: Retrieve detailed product information by barcode
    • Product Search: Search for products using various criteria (name, brand, category, etc.)
    • Taxonomy Access: Access categorized data for additives, allergens, brands, and more
    • Product Management: Add new products and upload product photos (requires authentication)
    • Insights Access: Get random insights from Robotoff for product improvement
    • Asynchronous Operations: All API calls are non-blocking
    • Error Handling: Comprehensive error handling with custom error types
    • Type Safety: Built with modern JavaScript features

    Installation

    Install using the Node-RED palette manager or via npm:

    npm install node-red-contrib-open-food-facts

    Nodes

    Basic Nodes

    OpenFoodFacts Get Product

    Retrieve product information by barcode.

    Inputs:

    • msg.payload: Barcode string (if not configured in node)

    Outputs:

    • msg.payload: Product object with details like name, brand, ingredients, nutrition facts

    OpenFoodFacts Search Products

    Search for products using various filters.

    Inputs:

    • msg.payload: Search parameters object

    Example search parameters:

    {
      "search_terms": "chocolate",
      "brands": "Nestle",
      "categories": "snacks",
      "page": 1,
      "pageSize": 20
    }

    Outputs:

    • msg.payload: Search results including count, page information, and products array

    OpenFoodFacts Get Taxonomy

    Access categorized data (additives, allergens, brands, etc.).

    Inputs:

    • msg.payload: Taxonomy type (e.g., "additives", "allergens", "brands")

    Outputs:

    • msg.payload: Taxonomy data object

    Extended Nodes

    OpenFoodFacts Add Product

    Add a new product to the OpenFoodFacts database (requires authentication).

    Configuration:

    • Username and password credentials required

    Inputs:

    • msg.payload: Product data object with code, brands (optional), labels (optional)

    Outputs:

    • msg.payload: API response

    OpenFoodFacts Upload Photo

    Upload a photo for a product (requires authentication).

    Configuration:

    • Username and password credentials required

    Inputs:

    • msg.payload: Object containing:
      • barcode: Product barcode
      • image: Image file
      • type: Object with field (front/ingredients/nutrition) and languageCode

    Outputs:

    • msg.payload: API response

    OpenFoodFacts Get Additives

    Retrieve the additives taxonomy.

    Outputs:

    • msg.payload: Additives taxonomy data

    OpenFoodFacts Get Allergens

    Retrieve the allergens taxonomy.

    Outputs:

    • msg.payload: Allergens taxonomy data

    OpenFoodFacts Get Brands

    Retrieve the brands taxonomy.

    Outputs:

    • msg.payload: Brands taxonomy data

    OpenFoodFacts Get Random Insight

    Get random insights from OpenFoodFacts Robotoff.

    Configuration:

    • count: Number of insights to retrieve (default: 1)
    • lang: Language code for filtering (optional)

    Outputs:

    • msg.payload: Random insights from Robotoff

    Example Flows

    Basic Product Lookup

    [
        {
            "id": "inject-barcode",
            "type": "inject",
            "payload": "3017620422003",
            "payloadType": "str",
            "topic": "",
            "name": "Inject Barcode",
            "wires": [["get-product"]]
        },
        {
            "id": "get-product",
            "type": "openfoodfacts-get-product",
            "name": "",
            "wires": [["debug"]]
        },
        {
            "id": "debug",
            "type": "debug",
            "name": "",
            "active": true,
            "wires": []
        }
    ]

    Search by Category

    [
        {
            "id": "search-inject",
            "type": "inject",
            "payload": "{\"categories\": \"beverages\", \"page\": 1}",
            "payloadType": "json",
            "topic": "",
            "name": "Search Beverages",
            "wires": [["search-products"]]
        },
        {
            "id": "search-products",
            "type": "openfoodfacts-search-products",
            "name": "",
            "wires": [["debug"]]
        },
        {
            "id": "debug",
            "type": "debug",
            "name": "",
            "active": true,
            "wires": []
        }
    ]

    API Reference

    Product Object Structure

    {
      "code": "3017620422003",
      "product_name": "Nutella",
      "brands": "Ferrero",
      "categories": "Spreads, Sweet spreads, Chocolate spreads",
      "ingredients_text": "Sugar, Palm oil, Hazelnuts...",
      "nutriments": {
        "energy_100g": 2252,
        "fat_100g": 30.9,
        "carbohydrates_100g": 57.5,
        "proteins_100g": 6.3
      },
      // ... more fields
    }

    Search Parameters

    Parameter Type Description
    search_terms string General search query
    brands string Filter by brand
    categories string Filter by category
    code string Filter by barcode
    countries string Filter by country
    page number Page number (default: 1)
    pageSize number Results per page (default: 20)

    Error Handling

    The nodes emit errors that can be caught using a catch node. Common errors include:

    • Product not found
    • Invalid barcode format
    • Network connectivity issues
    • API rate limiting

    Testing

    Run the test suite:

    npm test

    Automated PR Reviews

    This repository uses automated PR reviews powered by Amazon Bedrock and Claude AI via GitHub Actions. When you create a pull request, the workflow will automatically:

    • Analyze your code changes
    • Provide intelligent feedback and suggestions
    • Check for potential issues and improvements

    Setup Requirements

    To enable automated PR reviews, repository administrators need to configure the following secrets in Settings → Secrets and variables → Actions → Repository secrets:

    • AWS_ACCESS_KEY_ID: Your AWS access key with Bedrock permissions
    • AWS_SECRET_ACCESS_KEY: Your AWS secret access key

    The workflow uses Claude 3 Haiku via Amazon Bedrock for fast, intelligent code analysis and provides comprehensive reviews including performance and security feedback.

    Contributing

    Contributions are welcome! Please see our Contributing Guidelines for details.

    License

    This project is licensed under the MIT License - see the LICENSE file for details.

    Credits

    This node uses the Open Food Facts API. Open Food Facts is a collaborative project with contributors from around the world.

    Support

    Acknowledgments

    • Open Food Facts team for maintaining the amazing food products database
    • Node-RED community for the excellent IoT platform