# Controller Design Studio (CDS)
## Basic Architecture
![Basic_Architecture](./docs/media/CDS_architecture.jpg)
## Basic Requirements
Before you can build this project, you must install and configure the following dependencies on your machine:
1) Java 11 SDK
2) Maven 3.6.X
3) MySQL Database
4) Node and npm installed
5) Angular CLI & Angular v8
## Running in Development Mode
Run `mvn clean install` command to install all libraries and dependencies for the maven and npm.
Run `mvn clean install -Pdocker` command to install all libraries and create below docker images.
* ccsdk-blueprintsprocessor
* ccsdk-commandexecutor
* ccsdk-py-executor
* ccsdk-sdclistener
* ccsdk-cds-ui-server
* ccsdk-cds-ui
**Note:** Run `mvn clean install -Pdocker -Ddocker.skip.push=true` to build but skip pushing docker image.
1) Back-end MS
>Create `sdnctl` table in MySQL
>(Optional) You could run the project in a specific profile(dev, local) by adding `-Dspring.profiles.active=profile-name`
2) Loop-back server:
>That allow your request to reach the backend from cds-ui
>Move to `./cds-ui/server/` folder and run the command `npm start`
3) cds-ui
>Move to `./cds-ui/designer-client/` folder and run the command `npm start`
>This command will make sure all the files follow the linting rules and then connect to the loopback server.
## Using an IDE
**Front-end:** you could use `vscode` or `webstorm`
**Back-end:** `IntelliJ` with kotlin plugin or any other editor
---
For more information check: [CDS Docs](https://docs.onap.org/projects/onap-ccsdk-cds/en/latest/index.html)
### Format code with ktlint checkstyle tool use the following command
`mvn process-sources -P format`
**Reference:** [ktlint docs](https://ktlint.github.io/) | [ktlint codebase](https://github.com/pinterest/ktlint)