Giter VIP home page Giter VIP logo

cryptgo's Introduction

cryptgo

Go Build Go License Check Go Report Card Go Reference Docker Image Version (latest semver) Mentioned in Awesome Go

Latest Stable Version: GitHub tag (latest SemVer)

Crytpgo is a TUI based application written purely in Go to monitor and observe cryptocurrency prices in real time!

logo

Installation

Using Go

go get -u github.com/Gituser143/cryptgo

Using Docker

Running Image

Set VERSION to a specific version for stable builds. Omitting VERSION uses the latest stable version or setting main as version provides the latest (in development) version.

# Pull Image
make docker-pull

# Pull specific version of image
VERSION=v1.1.1 make docker-pull

# Run Image
make docker-run

# Run specific version of image
VERSION=v1.1.1 make docker-run

# Run image with portfolio command
ARG=portfolio make docker-run

# Run image with help command
ARG=help make docker-run

Optionally, an alias can be created for ease of use:

alias cryptgo='docker run -u $(id -u):$(id -g) -v "$HOME:/home/appuser/" --rm -it bhargavsnv/cryptgo'

And run using:

cryptgo [flags]
# or
cryptgo [command]

Building Image locally

# Clone the repository
git clone https://github.com/Gituser143/cryptgo

# Navigate into repository
cd cryptgo

# Build image
make docker-build

# Run image
make docker-run

From Source:

Building requires Go to be installed.

# Clone the repository
git clone https://github.com/Gituser143/cryptgo

# Navigate into repository
cd cryptgo

# Build executable
make build

Make

# See all make targets
make help

What does cryptgo do?

Cryptgo helps you look at cryptocurrency values, details and track your crypto portfolio straight from your terminal!

It makes use of the API provided by CoinCap.io and CoinGecko to provide the required details!

Main Page

main-page

  • Here, the top 3 currencies (as ranked by Market Cap) are displayed with their graphs on top.

  • A table is provided with relevant information about other currencies.

  • cryptgo allows you to keep track of your favourite currencies by adding them to the favourites table.

  • A selected coin (from either the coin table or favourites) can be further inspected in detail.

Key-Bindings

Key-bindings can be found by pressing ?. This displays the help prompt.

  • Quit: q or <C-c>
  • Table Navigation
    • k and <Up>: up
    • j and <Down>: down
    • <C-u>: half page up
    • <C-d>: half page down
    • <C-b>: full page up
    • <C-f>: full page down
    • gg and <Home>: jump to top
    • G and <End>: jump to bottom
    • f: focus favourites table
    • F: focus interval table
  • Searching/Filtering
    • /: Open search box
    • Esc: Clear filter text
  • Sorting
    • Use column number to sort ascending.
    • Use to sort descending.
    • Eg: 1 to sort ascending on 1st Col and F1 for descending
  • Actions (Interval Table)
    • <c>: Select Currency (from popular list)
    • <C>: Select Currency (from full list)
    • e: Add/Edit coin to Portfolio
    • P: View portfolio
    • <s>: Star, save to favourites
    • <S>: UnStar,remove from favourites
    • <Enter>: View Coin Information
    • %: Select Duration for Percentage Change

Coin Page

coin-page

  • The coin page give more in depth details of a particular coin.

  • It can be navigated to from either the favourites or coin table.

  • The price history is displayed on top and can be viewed through different intervals, as provided by the Graph Interval table on the bottom left.

  • A live price is streamed in the price box and additional details are described in the details table.

Key-Bindings

Key-bindings can be found by pressing ?. This displays the help prompt.

  • Quit: q or <C-c>
  • Table Navigation
    • k and <Up>: up
    • j and <Down>: down
    • <C-u>: half page up
    • <C-d>: half page down
    • <C-b>: full page up
    • <C-f>: full page down
    • gg and <Home>: jump to top
    • G and <End>: jump to bottom
    • f: focus favourites table
    • F: focus interval table
  • Sorting
    • Use column number to sort ascending.
    • Use <F-column number> to sort descending.
    • Eg: 1 to sort ascending on 1st Col and F1 for descending
  • Actions (Interval Table)
    • <Enter>: Set Interval
    • <c>: Select Currency (from popular list)
    • <C>: Select Currency (from full list)

Portfolio Page

portfolio-page

  • Cryptgo allows you to track your crypto portfolio through a separately defined page.

  • This page can be accessed with the command cryptgo portfolio.

Key-Bindings

  • Quit: q or <C-c>

  • Table Navigation

    • k and <Up>: up
    • j and <Down>: down
    • <C-u>: half page up
    • <C-d>: half page down
    • <C-b>: full page up
    • <C-f>: full page down
    • gg and <Home>: jump to top
    • G and <End>: jump to bottom
  • Sorting

    • Use column number to sort ascending.
    • Use <F-column number> to sort descending.
    • Eg: 1 to sort ascending on 1st Col and F1 for descending
  • Actions

    • c: Select Currency (from popular list)
    • C: Select Currency (from full list)
    • e: Add/Edit coin to Portfolio
    • <Enter>: View Coin Information

Mini Portfolio

portfolio

  • Cryptgo also allows you to view your holdings through a mini portfolio from other pages.

  • Coins can be added/modified/removed by pressing e on a coin in the main page. (Set Holding Amount as 0 to remove)

  • Holdings can be modified either through the main page or through the portfolio itself. The below image shows the edit box when modifying holdings.

edit-box

Utilities

Currency

Currency need not be fixed to USD $, other currencies can be selected from either the popular currency table (press c) or full currency table (press C).

Popular Currency Table

currency

Full Currency Table

currency-full

Search/Filtering

Coins can be filtered/searched based on an input substring. The search/filter box can be brought up on the main page (press /).

search

Change Percentage Interval

The Change Percentage on the main page can be modified too. A list of durations can be viewed and selected by pressing %, which brings up the below table.

change-duration

Change Graph Duration

The duration of the history graph on the coin page is modifiable. To list the possible durations and select one, press d in the coin page. that will bring up the following table.

history-duration


Contributing

Pull Requests and Issues are welcome!

Please check the issues page to see available issues to work on, or to even create some!


Credits

Multiple Design ideas, utilities, functions and practices have been adopted from:

Do check them out!

cryptgo's People

Contributors

avlightless avatar gituser143 avatar icelain avatar matheusmosca avatar nolancon avatar temanisparsh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

cryptgo's Issues

Cryptgo hangs on exit

Description

When a different interval is selected in a coin page, upon trying to exit the application (by pressing q), at times the application freezes and the terminal must be closed entirely.

Unsure of the cause of issue and how to proceed.

Edit: Not sure if the application is frozen because of a block, or is waiting on a very slow routine to exit, because at times, the application exits after a a minute or so (sometimes much longer).

Docker User Permissions (Changes not saving)

In my previous Pull Request I made an oversight. Because the container is not running as root anymore, it has no rights to write to $HOME, thus no changes are being saved. Im actively working on a solution, but thought I would open an issue regardless so that people are aware of this. Will submit a PR as soon as I found the best solution.

Add tests!

Description

Add tests! There are none being run, as of writing this issue.

Add more details about coins through a different API

Description

The current main page only displays 24 Hr Change %, more fine grained change, like 1 Hr, 2 Hr, 1 Week, etc. changes can be displayed on both the home and coin page.

Proposed Solution

Maybe looking into CoinGecko might be worth it. It has a Go Client too, which can be found here

Add Portfolio Functionality

Description

Add functionality to allow users to create and manage a portfolio.

Solution Proposed

Much like how favourite coins are saved to disk, a portfolio can be saved and managed. This can allow users to track the value of their coins owned.

The Portfolio can be viewed much like how the help page is accessed, through a keybinding of it's own.

Add Dockerfile

Add a Dockerfile to support cryptgo to run as a container.

Use consistent key-bindings for exit (and return navigation)

Currently the following have mixed combinations of exit and return key-bindings:

  • Exit from main page (q and ^C)
  • Return from coin page to main page (Esc and q and ^C)
  • Exit from coin page (Not Set)
  • Return from widget to main page (Esc)
  • Exit from widget (q and ^C)

A consistent mapping of q and ^C to quit and Esc to return could be implemented. Or maybe using all three to return to previous page and then exit from the main page.

Save currency preference

Once the currency in which the value is displayed is changed by the user, it should be saved in the config file so that the user doesn't have to reselect the option next time the application runs.

Navigate to favourite coin page from an existing coin page

Currently, the favourites table does not support navigation from within the coin page. It can only be navigated into from the main (all coin) page.

If navigation functionality could be added to the favourites tables from within the coin page, it would be of huge convenience to users. They would not have to return to main page just to switch to a different favourite coin.

Gioui gui aspects.

Look at networking to work out best way to reuse the current api for easy use on gio web and native apps.

also use indexeddb for client storage / cache in gio web. Not sure what golang dB for gio native until I see the data. I suspect it’s time series data ?

Add Github action to publish docker image

A github action should be setup to build and publish docker images of cryptgo. This will allow cryptgo to be run directly by pulling a docker image instead of building the image locally.

Add Search Option

Description

Add functionality to be able to search for coins, either by name or symbol.

Proposed Solution

Add preferably a search window or shortcut to search for coins. Search can be done either naively, or through a regex maybe? (Unsure of how to search).

Rate Limit Error

Application crashes after few seconds due to
Error: {"status":{"error_code":429,"error_message":"You've exceeded the Rate Limit. Please visit https://www.coingecko.com/en/api/pricing to subscribe to our API plans for higher rate limits."}}

Add a `-p | --portfolio` command to view portfolio details directly

Format in mind

image

Action Functionalities required

  • Update portfolio holdings
  • Update currency
  • Navigate details table
  • Details table sorting

Edit: Currently being worked on in the portfolio branch.

Edit 2: Layout of page has been modified. Top 3 graphs have been replaced a 7 day portfolio value graph.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.