From 91144c56729477da29515e88d5cea787c9bc9614 Mon Sep 17 00:00:00 2001 From: AhmedEldeeb50 Date: Mon, 4 May 2020 16:29:48 +0200 Subject: [PATCH] adding the basic running steps for CDS in README file Issue-ID: CCSDK-2357 Signed-off-by: AhmedEldeeb50 Change-Id: I67d389820bffcac56ee27936f7bf33eec059a94f (cherry picked from commit 5b9f323027c74d11aa0af8061c77118c8ff81a74) --- README.md | 43 +++++++++++++++++++++++++++++++++++++++++++ docs/media/CDS.png | Bin 0 -> 23391 bytes 2 files changed, 43 insertions(+) create mode 100644 docs/media/CDS.png diff --git a/README.md b/README.md index 5c7ef103a..ba9c29357 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,46 @@ ## Reference https://github.com/pinterest/ktlint + +## Getting started + +![Basic_Architecture](./docs/media/CDS.png) + +## Basic Requirements +Before you can build this project, you must install and configure the following dependencies on your machine: + + 1- Java 8 SDK + + 2- Node and npm installed + + 3- Angular CLI & Angular v8 + + 4- MySQL Database + + 5- maven + +## Running in Development Mode + +* In the main project folder run `mvn clean install` command to install all libraries and dependencies for maven and npm. + + 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 the `docs` folder. \ No newline at end of file diff --git a/docs/media/CDS.png b/docs/media/CDS.png new file mode 100644 index 0000000000000000000000000000000000000000..65f4115f885bdae3e49431a77d1dbad77ad3dc63 GIT binary patch literal 23391 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%0Af-b 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 O;DI)