> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://contentful.com/developers/docs/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://contentful.com/_mcp/server. # Libraries > Speed up the development of apps using our libraries | Node.js apps toolkit | DAM app base | E-commerce app base Our helper libraries support you to quickly build apps by solving common use cases. ## Node.js Apps Toolkit The `node-apps-toolkit` is a growing collection of helpers and utilities for building apps for Contentful with Node.js. It helps you reduce friction when building more complex apps with the app framework. The [code](https://github.com/contentful/node-apps-toolkit) is open source and hosted on Github. If you want to see the `node-apps-toolkit` in action, please check out our guide on [using app identities and events](/extensibility/app-framework/app-identities-and-events) and [verifying requests](/extensibility/app-framework/request-verification). You can find the full API documentation for the `node-apps-toolkit` [here](https://contentful.github.io/node-apps-toolkit/). ## DAM app base `@contentful/dam-app-base` is a library that helps you to quickly build an app to integrate your DAM (Digital Asset Management) system of choice with Contentful. This library provides the core functionality required for a DAM integration which means you only need to implement functionality for your specific service. This library creates an app that can be used in the [entry field location](/extensibility/app-framework/locations#entry-field) to select assets from your DAM service. The library also provides a [configuration screen](/extensibility/app-framework/locations#app-configuration) for easy customization. ### Installation To install, run ``` npm install @contentful/dam-app-base ``` ### Usage ```javascript import { setup } from '@contentful/dam-app-base'; setup({ cta: 'Select assets', name: 'My DAM App', logo: 'https://example.com/logo.svg', color: '#d7f0fa', description: 'My example DAM App', parameterDefinitions: [ { id: 'folder', type: 'Symbol', name: 'Folder', description: 'Preselected folder when selecting assets.', required: true, }, ], validateParameters: () => null, makeThumbnail: (asset) => asset.thumbnailUrl, renderDialog: async (sdk) => { const config = sdk.parameters.invocation; const container = document.createElement('div'); container.innerHTML = `