# Building from Source

## Requirements

Luden is written primarily in Go with the frontend written in JavaScript.

To install the required pre-requisites see the following guides:

* [Installing Go (>=1.16)](https://golang.org/doc/install)
* [Installing npm](https://www.npmjs.com/get-npm)
* [Installing yarn](https://classic.yarnpkg.com/lang/en/docs/install)

## Clone the Source

```sh
git clone https://github.com/GuinsooLab/luden.git
cd luden
```

Make build scripts executable:

```sh
chmod +x local-build-server.sh && \
chmod +x local-build-configurator.sh && \
chmod +x local-build-luden.sh
```

## Build Luden Server

Building the Luden Server run:

```
./local-build-server.sh -d false
```

**`-d false`** skips docker image build.

If the build is successful, all artifacts will be replaced inside the **`./server/build/dist`** directory:&#x20;

```bash
109376 -rwxr-xr-x   1 admin  staff  55998592 Mar 15 09:04 eventnative
     0 drwxr--r--  11 admin  staff       352 Mar 15 12:56 logs
     0 drwxr-xr-x   6 admin  staff       192 Mar 15 10:37 web

```

## Run Luden Server

**`./server/build/dist/eventnative`** is the main application binary; **`web`** contains static files (JS and HTML). The application doesn't require a file but will be mostly useless to run without config. You can refer **`./docker/eventnative.yaml`**.

Run the application with the following:

```
./eventnative -cfg {abstract_path}/luden/docker/eventnative.yaml
```

## Build Luden Configurator

For building the Luden Configurator just run:

```
./local-build-configurator.sh -d false
```

**`-d false`** skips docker images build.

If the build is successful, all artifacts will be placed inside the **`./configuratior/build/dist`** directory:

```
122248 -rwxr-xr-x   1 admin  staff  62589312 Mar 15 16:37 configurator
     0 drwxr-xr-x  20 admin  staff       640 Mar 15 16:37 web
```

## Run Luden Configurator

**`./configurator`** is the configurator UI backend application binary; **`web`** contains static Configurator UI files.&#x20;

Run the application with the configuration file using **`-cfg`** parameter:

```sh
./configurator/build/dist/configurator -cfg {abstract_path}/luden/configurator.yaml
```

<figure><img src="https://3772893841-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMfQt2eTfNlkZBgnWOxuC%2Fuploads%2FHrfq5tofh5skawea49sn%2FScreen%20Shot%202023-03-18%20at%2018.34.27.png?alt=media&#x26;token=79e952b2-740f-4df9-a410-8d8e853085d4" alt=""><figcaption></figcaption></figure>
