Skip to content
This repository has been archived by the owner on Feb 1, 2024. It is now read-only.

Dashboard UI tool to manage Kelp processes on your machine #67

Closed
13 tasks done
nikhilsaraf opened this issue Nov 28, 2018 · 8 comments
Closed
13 tasks done

Dashboard UI tool to manage Kelp processes on your machine #67

nikhilsaraf opened this issue Nov 28, 2018 · 8 comments
Assignees
Labels
feature request New feature or request
Milestone

Comments

@nikhilsaraf
Copy link
Contributor

nikhilsaraf commented Nov 28, 2018

Desired Behavior

I want to be able to visualize all the Kelp processes that I have running on my system with controls for each instance.

Impact

The desired behavior will allow me to scale up my usage of Kelp and better manage markets.

Feature Suggestion

We can achieve the desired behavior by having a Dashboard UI for Kelp. This can be a web page that interfaces with a server that controls various bot instances running on the machine.

References

This feature exists in quite a few trading bots (both crypto and non-crypto). Please see the specification section below for details.

Specification​

v1.0 (MVP)

  1. list of all the bot instances (markets) you are running on your machine
  2. create and delete bot instances
  3. start and stop bots
  4. delete offers for a market

Mockup

img_3991

Items

  • bundle in React.js applications for frontend
  • deployment mode embeds JS assets into binary (when building with ./scripts/build.sh -d)
  • local mode running from static files in filesystem (when building with ./scripts/build.sh and running with ./bin/kelp server)
  • dev mode with hot-reloading of JS code from filesystem (when building with ./scripts/build.sh and running with ./bin/kelp server --dev)
  • design mockups
  • frontend react components to be used
  • list, start, stop/delete bot instances
  • edit bot instances
  • delete bot instances
  • create bot instances (buysell strategy only for now)
  • edit form validation
  • add trustlines on account when saving
  • first pass at polishing
@nikhilsaraf nikhilsaraf added this to the v1.4.0 milestone Dec 5, 2018
@nikhilsaraf nikhilsaraf added the feature request New feature or request label Dec 5, 2018
@nikhilsaraf nikhilsaraf added the help wanted Extra attention is needed label Jan 16, 2019
@nikhilsaraf nikhilsaraf modified the milestones: v1.4.0, later Feb 6, 2019
@nikhilsaraf
Copy link
Contributor Author

v2.0 suggestions

  • add iFrames to exchanges so we can view markets from within Kelp
  • view trade history for account(s)

@tomquisel
Copy link

@nikhilsaraf the MVP plan looks good to me! As far as external exchanges for viewing markets, links that open new windows might work better than iframes.

@nikhilsaraf
Copy link
Contributor Author

Check out some of the GUI frameworks mentioned here, in case they are useful: https://github.com/avelino/awesome-go/blob/master/README.md#gui

@tomquisel tomquisel reopened this Mar 21, 2019
@nikhilsaraf nikhilsaraf self-assigned this Mar 21, 2019
@nikhilsaraf nikhilsaraf removed the help wanted Extra attention is needed label Mar 21, 2019
@nikhilsaraf nikhilsaraf modified the milestones: later, v1.6.0 Mar 21, 2019
@nikhilsaraf
Copy link
Contributor Author

also resource embedding frameworks: https://github.com/avelino/awesome-go#resource-embedding

@nikhilsaraf nikhilsaraf modified the milestones: v1.6.0, v1.7.0 Mar 25, 2019
nikhilsaraf added a commit that referenced this issue Apr 16, 2019
#158)

- [x] deployment mode embeds JS assets into binary (when building with `./scripts/build.sh -d`)
- [x] local mode running from static files in filesystem (when building with `./scripts/build.sh` and running with `./bin/kelp server`)
- [x] dev mode with hot-reloading of JS code from filesystem (when building with `./scripts/build.sh` and running with `./bin/kelp server --dev`)

first commit for GUI Dashboard issue: #67
@nikhilsaraf
Copy link
Contributor Author

fyi Bruno. suggested folder ordering. the highlighted folders are what we would end up working with most.

all work should happen in the /gui/web directly, which is currently a direct instantiation of a basic create-react-app application.

see above points for the modes which you can run the GUI (./bin/kelp server [--dev])

Screen Shot 2019-04-19 at 12 15 20 PM

@nikhilsaraf
Copy link
Contributor Author

new commit to autogenerate bot config and start/stop bots: e686d7f

@nikhilsaraf
Copy link
Contributor Author

new commit to get bot info to populate bot card: #184

nikhilsaraf added a commit that referenced this issue Jun 18, 2019
addresses part of issue #67

* 1 - basic plumbing to edit bot configs in UI

* 2 - generate bot names

* 3 - some plumbing for saving new/edit form

* 4 - /getBotConfig endpoint

* 5 - frontend uses /getBotConfig to fetch bot config file

* 6 - fill in trading platform on edit screen

* 7 - json tags for trader and buysell configs, logged in response to /getBotConfig

* 8 - filled in some more parts of the edit form

* 9 - add logic to update input elements, should apply to most/all form elements

* 10 - add onChange handlers for remaining input elements that have valid values from the state

* 11 - allow dependencies between input fields when updated

* 12 - strikethrough asset issuer strings instead of deleting them when asset code is XLM
nikhilsaraf added a commit that referenced this issue Jun 19, 2019
nikhilsaraf added a commit that referenced this issue Jun 25, 2019
addresses part of issue #67

* 1 - remove unused emptyStringIfXLM fn

* 2 - updated advanced trader settings

* 3 - remove strikethrough prop in <Input> and read off of disabled prop instead

* 4 - started UX for PriceFeed by consolidating components into PriceFeedAsset with reload logic

* 5 - /fetchPrice basic hardcoded implementation and integration into frontend

* 6 - /fetchPrice actually fetches price using passed in data type and URL

* 7 - price feeds rendering and price fetching

* 8 - set calculated price, loading animation when loading prices and reload price on selection

* 9 - disable trading platform for now until we expand to non-SDEX exchanges in the UI

* 10 - fix css for price selector dropdowns

* 11 - type text needs a default value, fix sdexFeed default client params when missing privateSdexHackVar

* 12 - handle levels correctly, move to non-advanced section

* 13 - fix indentation of some <Input> tags

* 14 - fill in tolerance and offset fields for advanced section of strategy_config Form

* 15 - added validation to <Input> tag and added type param to all callers
nikhilsaraf added a commit that referenced this issue Jun 25, 2019
addresses part of issue #67
nikhilsaraf added a commit that referenced this issue Jun 25, 2019
addresses part of issue #67

* 1 - remove hardcoded error message

* 2 - bot is only editable when stopped

* 3 - disable editing names for now

* 4 - streamline frontend save logic workflow

* 5 - added /updateBotConfig endpoint and integrated to frontend

* 6 - fix checks around null values of _asyncRequests and .cancel() calls
nikhilsaraf added a commit that referenced this issue Jun 25, 2019
addresses part of issue #67

* 1 - fix New Bot button and remove dummy download button

* 2 - /getNewBotConfig endpoint and integration into frontend, remove separate call to gen bot name

* 3 - rename /updateBotConfig to /upsertBotConfig; save new bot config using /upsertBotConfig endpoint

* 4 - log bot state after querying state
nikhilsaraf added a commit that referenced this issue Jun 27, 2019
addresses part of issue #67

* 1 - log when we reset cached balances --somehow prevents bot from panicing \_(ツ)_/¯

* 2 - add timeout to /getBotState call to fix delay in getting bot state caused by overlapping and slow calls/responses

* 3 - fix logic to check bot state, limiting to only kelp trade commands
nikhilsaraf added a commit that referenced this issue Jun 27, 2019
nikhilsaraf added a commit that referenced this issue Jul 9, 2019
…un from UI (#195)

addresses part of issue #67

* 1 - list onChange function as an input PropType to the <Input> component

* 2 - allow PubNet segment selector selection

* 3 - disable "Helper Fields" switch for now

* 4 - enable editing bot when it is stopping

* 5 - bot randomly crashes on start, try adding a panic handler in the IPC server thread

* 6 - fix bug that is causing bot to crash on start

* 7 - remove chart dummy image in BotCard

* 8 - disable sorting arrows

* 9 - remove onClick for showDetails of bot
nikhilsaraf added a commit that referenced this issue Jul 11, 2019
addresses part of issue #67

* 1 - remove unused chartThumb import in BotCard

* 2 - autogen secret key

* 3 - add secret key generatin for source account

* 4 - display errors in the UI if encountered while saving bot configs

* 5 - display field-specific errors in the form

* 6 - extract function validateConfigs

* 7 - dont display numerical errors if empty

* 8 - add _positive type modifiers for the Input component

* 9 - better error message for asset codes

* 10 - validation for levels, fix empty level values
nikhilsaraf added a commit that referenced this issue Jul 16, 2019
addresses part of issue #67

* 1 - fund accounts and add trustlines for assets on upsert if needed

* 2 - handle initializing state correctly

* 3 - init trader config after validating inputs in upsertBotConfig

* 4 - offsets can be negative
nikhilsaraf added a commit that referenced this issue Jul 16, 2019
nikhilsaraf added a commit that referenced this issue Jul 23, 2019
)

addresses part of issue #67

* 1 - extract call to getBotInfo via IPC in a separate function

* 2 - started fetching getBotInfo directly with temp data

* 3 - rename gui/model to gui/model2 to avoid conflicts with model pacakge

* 4 - fill in balances in getBotInfo

* 5 - fill in numBids and numAsks in getBotInfo

* 6 - fill in logic for spreads

* 7 - getBotInfo should wait when bot is initializing
nikhilsaraf added a commit that referenced this issue Jul 30, 2019
addresses part of issue #67

* 1 - ignore errors from getBotInfo call

* 2 - add last updated field to getBotInfo

* 3 - retry setting version every 30 seconds if there is an error

* 4 - retry fetching bots if nothing returned
nikhilsaraf added a commit that referenced this issue Jul 30, 2019
addresses part of issue #67

* 1 - replace api clients to use injected URI

* 2 - replace URIs used in creation of config files

* 3 - log horizon URIs being used by server

* 4 - trim suffix of URI at the very top

* 5 - save horizon URIs on APIServer and use when creating new bots for consistency
nikhilsaraf added a commit that referenced this issue Jul 31, 2019
addresses part of issue #67

* 1 - flux the optionsMetadata structure in preparation to move to backend

* 2 - move v0.1 impl of optionsMetadata to backend

* 3 - builder pattern to create optionsMetadata along with preloading logic when making APIServer

* 4 - add support for fiat via currencylayer API

* 5 - dynamically include whitelisted ccxt markets

* 6 - refactor asset converters, adding custom Display assetConverter and using for CCXT

* 7 - inclide all CCXT exchanges

* 8 - don't log the optionsMetadata json response since it's too verbose

* 9 - blacklist some ccxt exchanges that are not loading for me so startup is faster

* 10 - add all fiat currencies available via currencylayer

* 11 - list all coinmarketcap tokens via their API

* 12 - remove commented out optionsMetadata struct
nikhilsaraf added a commit to nikhilsaraf/kelp that referenced this issue Jul 31, 2019
nikhilsaraf added a commit to nikhilsaraf/kelp that referenced this issue Jul 31, 2019
…ice so it won't work for our basic price feed

addresses part of issue stellar-deprecated#67
nikhilsaraf added a commit that referenced this issue Jul 31, 2019
addresses part of issue #67
nikhilsaraf added a commit to nikhilsaraf/kelp that referenced this issue Jul 31, 2019
nikhilsaraf added a commit that referenced this issue Jul 31, 2019
nikhilsaraf added a commit that referenced this issue Aug 1, 2019
addresses part of issue #67

* 1 - add link to show market

* 2 - correct market links for pubnet and testnet bots

* 3 - faster fetch bots with protection for duplicate requests

* 4 - badge should reflect testnet/pubnet bots
@nikhilsaraf
Copy link
Contributor Author

v0.9 of Kelp is finished, currently only available on the test network for starters on SDEXX. It's still going through some alpha testing so is not available as an official release yet, but will be made available sometime this month.

Jonareid added a commit to Jonareid/kelp that referenced this issue Sep 15, 2021
…d (#158)

- [x] deployment mode embeds JS assets into binary (when building with `./scripts/build.sh -d`)
- [x] local mode running from static files in filesystem (when building with `./scripts/build.sh` and running with `./bin/kelp server`)
- [x] dev mode with hot-reloading of JS code from filesystem (when building with `./scripts/build.sh` and running with `./bin/kelp server --dev`)

first commit for GUI Dashboard issue: stellar-deprecated/kelp#67
seniordev-1 added a commit to seniordev-1/kelp that referenced this issue Dec 15, 2021
…d (#158)

- [x] deployment mode embeds JS assets into binary (when building with `./scripts/build.sh -d`)
- [x] local mode running from static files in filesystem (when building with `./scripts/build.sh` and running with `./bin/kelp server`)
- [x] dev mode with hot-reloading of JS code from filesystem (when building with `./scripts/build.sh` and running with `./bin/kelp server --dev`)

first commit for GUI Dashboard issue: stellar-deprecated/kelp#67
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
feature request New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants