> For the complete documentation index, see [llms.txt](https://azorimor.gitbook.io/wekanchatbot/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://azorimor.gitbook.io/wekanchatbot/contribute/development.md).

# Development

This page provides information on how to start developing additional features.

### Getting started

This bot is written in typescript. So you need to have node.js installed.

Fork and clone the repository.

```bash
git clone git@github.com:<YOUR_NAME>/wekanchatbot.git
```

If necessary checkout to another branch. You can name your branch something logical. For example, if you try to fix a bug name the new branch bug\_\<short description of the bug>. Create the new branch based on the **develop** branch, because it is the most up-to-date branch.

```bash
git checkout develop
git checkout -b feature_<name the feature>
```

Install the dependencies.

```bash
npm i
```

### Docker setup

You can skip this step, if you have running databases and applications while devloping. Start some docker containers depending on your needs.

Create a mongodb container for the bot. This container is using the port 27018 by default to be able to run alongside the mongodb container used by wekan. (Currently the wekan container does not export any ports by default)

```bash
docker-compose -f docker-compose.dev.yml up -d
```

Create a simple wekan installation using docker containers. It is recommended to use the latest docker-compose.yml file provided by wekan.

```bash
curl -o docker-compose.wekan.yml https://raw.githubusercontent.com/wekan/wekan/master/docker-compose.yml
docker-compose -f docker-compose.wekan.yml up -d
```

Additional setup is required for the chat applications. You only need to have admin access to the chat applications you need. For Mattermost & Rocketchat you can use their docker images and for slack you need to create an account.

### Setting up the Environment

The repository provides a **.env.test** environment file. Which is an easy place to adjust your settings while developing. Create a file **.env.dev** and adjust the values. For example, you need to set different URLs for different chat applications depending on the feature you are working on and insert your tokens for wekan. For further information visit the following site.

{% content-ref url="/pages/-MhNl\_eGKbk40qwdwxTA" %}
[Environment](/wekanchatbot/get-started/environment.md)
{% endcontent-ref %}
