# How to launch the App

## Requirements

- NET .Core framework
- PostgreSQL database
- Node.JS
- Discord server with API keys
- Alchemy Keys

# First setup

## Generate dev certificate

- ```dotnet dev-certs https -ep \.aspnet\https\aspnetapp.pfx -p password```
- ```dotnet dev-certs https --trust```

## Setup docker

- Update ```apps\src\Managing.Api\appsettings.MYNAME.json``` with your configuration settings
- Update ```apps\src\Managing.Api.Workers\appsettings.MYNAME.json``` with your configuration settings
- Then execute from the root of the project :  ```.\scripts\docker-deploy-sandbox.cmd```
- At this point, only Managing.Api.Workers should be NOT running. It because we didn't create an account.

## Setup an account

- ```cd src/Managing.WebApp```
- ```npm run dev```

- Go to front-end app ```http://localhost:3000/```
- If request end up with a 500 error, you should open the url of the container and validate the certificate.
- Connect your ETH account
- Setup a username for your account
- On Account page : Create an EVM account for trading (Not necessary if you don't want to trade)

## Setup InfluxDb

- Go to http://localhost:8086/
- Then initialize InfluxDb

![InfluxDb setup](assets/img/doc-influxdb.png)

- Go to api keys

![InfluxDb Api](assets/img/doc-influxdb-apikeys-1.png)

- Create an apikey and update the ```apps\src\Managing.Api.Workers\appsettings.MYNAME.json``` file with the api key

![InfluxDb Api](assets/img/doc-influxdb-apikeys-2.png)

- Then redeploy by executing :  ```.\scripts\docker-deploy-sandbox.cmd```
- Check influxdb > buckets > prices-bucket > if there is data

![Docker](assets/img/doc-docker.png)

- Verify the logs of the Workers container to see if candles are well inserted
- It may take some time to see the candles in the front-end

## Setup default strategies, scenario and money management

- Go to Managing.Api swagger ```https://localhost/index.html```
- Execute ```POST /settings```
  ![Api Settings](assets/img/doc-settings.png)

# Dev

## Generate Api Client

- Use [NSwag](https://github.com/RicoSuter/NSwag)
- Generate a Typescript client with Fetch template
- Deposit the file in ```Managing.WebApp\src\generated\```
- Generatet ABI
  service ```Nethereum.Generator.Console generate from-abi -abi ./DataStore/DataStore.abi -o . -ns Managing.Tools```