--- hide_title: true hide_table_of_contents: true title: Create a new core node --- # Create a new core node Noodl is very extensible. As a developer you can add new modules with new capablities, create connections to data or make new visual components in your workspace. This guide gets us started by showing how the Noodl command line tool works and how to create an extension module with a single new node. This node will behave and appear just like the standard core nodes of Noodl. :::note This guide requires Node.js and npm installed. ::: ## Overview This guide will walk you through how to create a **Noodl Module**. A Noodl Module can contain new core nodes to use in your projects. You can for example wrap an existing JavaScript library and expose it as a node in Noodl. The general process works like this * Set up a new **Module Project** where you can write the code for your module. * Test your module in one of you projects while developing it. * When you are done, build the module and deploy it to the projects you want to use it in. ## Install the Noodl CLI First you need to install the Noodl command line interfaces. If you have not previously installed the CLI you can do so via npm. ```bash npm install -g @noodl/noodl-cli ``` ## Create a Module Project With the CLI tool you can easily create a new Noodl module from a template: ```bash noodl-cli new lib ./my-noodl-module ``` You need to specify a directory name that will be created. The directory will contain everything you need to get started. Using the command above, the directory _my-noodl-module_ will be created. The newly created directory has the following structure: ``` my-noodl-module/ module/ project/ tests/ icon.png module.json ``` First some notes on the content of a library module: - The **module** directory contains the source code for the module as well as build scripts and any assets you might want, such as fonts, css etc. - The **project** and **tests** folder can be ignored First enter the **module** directory and install the needed dependencies: ```bash cd module ``` ```bash npm install ``` If your module uses any other external libraries through NPM they will be installed as well. ## Developing your module You develop your module mainly by editing the file ``module/src/index.js``. From start it contains some example code that you can use as a boiler plate. There is currently no official documenation of the Noodl module SDK but you can find the source code to a number of modules [here](https://github.com/noodlapp). As you are developing your module you would want it packaged up and deployed in a Noodl project where you can test it. To do that you first have to create a new Noodl project that will be your test project. Once you've done that, find the local folder of that project by clickin the cogwheel ("Settings") and "Open project folder".