GithubHelp home page GithubHelp logo

jvandenaardweg / coinaly Goto Github PK

View Code? Open in Web Editor NEW
30.0 7.0 14.0 6.11 MB

πŸš€ Fast and easy to use mobile trade interface for cryptocurrencies. Track your trades to the moon and beyond. Currently only for Bittrex.

Home Page: https://coinaly.io

License: Mozilla Public License 2.0

JavaScript 37.51% HTML 0.82% Vue 61.23% CSS 0.44%
bitcoin btc bittrex bittrex-api bittrex-exchange bittrexapi ethereum eth blockchain blockchain-technology

coinaly's Introduction

Coinaly

IMPORTANT:

Project goes private, read our announcement.

Request an invite to be the first you use Coinaly: https://coinaly.io/


Build StatusΒ Β Join Coinaly on Slack

Fast and easy to use mobile trade interface for cryptocurrencies. Track your trades to the moon and beyond. Better insights in your cryptocurrency endeavours.

Alpha site: https://coinaly.io (synced with the master branche)

We currently only support Bittrex. We plan on adding more exchanges in the future.

Screenshots

Important to know: This project is in the very early development stage, some features might not work yet. Progress for the first beta release can be tracked here: github.com/jvandenaardweg/coinaly/projects/1

πŸ“± Our mission

We are here to create a fast and easy to use mobile (website) trade and portfolio interface for your favorite exchange. No more missed opportunities or trades because the website of your favorite exchange is too slow or too complicated to use. We optimize our website for easy mobile usage and give you the tools and insights you need on a daily basis. It’s more about you and your trades, and less about the exchange pushing you to buy coins.

πŸš€ Features

  • Optimized for mobile screens and fast mobile performance
  • Instantly see the current status of your balances and orders. Am I making a profit? Or am I losing money?
  • Shows the current (fiat) worth of all your coins in realtime
  • Fast selling and buying. Instantly react on market movements and quickly sell or buy a crypto coin (in progress)
  • Overview open orders. How are my orders performing? Should I cancel or adjust them?
  • Easily see how far an open order is from the current market price
  • Better live candlestick chart by TradingView.com
  • View the charts directly from your orders, your balance and the market. No need to go to seperate pages.
  • Live updates all market data. No need to refresh yourself
  • Easily browse and filter all available markets

Safe to use

It's important you can trust a website that uses your cryptocurrency exchange data. That's why our servers at coinaly.io use the latest SSL encryption techniques to secure your connection. Also, your API keys and secrets are encrypted and saved only in your browser. We don't store any API keys and secrets in plain text on our servers.

πŸ‘·β€β™‚οΈ Javascript devs wanted

We are currently looking for Javascript developers to speed up the development process, so we can add more exchanges in the near future. Preferably we are looking for skilled developers with professional VueJS en NodeJS experience. If you don’t fit that description, but you still want to help us out? That’s awesome! Please contact Jordy directly or send him a message in our Slack.

πŸ”“ Bittrex API permissions

In order to use this you need to have a Bittrex API key so we can read your orders and balances. An Bittrex API key can be created here: https://bittrex.com/Manage#sectionApi. After creating, please remember the key and secret. We need that later in the setup.

  • Read info (required: ON) is the minimum required permission that needs to be enabled. Se we can read and display your balances and order history.
  • Trade limit (optional: ON) is only required if you want to trade from within the website.
  • Trade market (optional: ON) is only required if you want to trade from within the website.
  • Withdrawal (required: OFF) we don't need this, so you can leave that one off.

View example

πŸ’° Fuel our efforts

We are a hard working bunch of people and are not affiliated with Bittrex in any way. We are just using our spare time to create a better mobile experience for what we love to do: trading cryptocurrencies.

Do you like what we create? A donation of any size is very welcome!

  • BTC: 1P1sUUWxMXVCJX9T9M4SwoQW9Rpg51chfo
  • ETH: 0x5442026e8c4CDA6361763D56318FbE94f1b1Cb9b

We use these donations to pay the bills, like web hosting and services to keep this project running. Ultimately we hope that with enough donations some of us can work on this project fulltime so we can push updates faster.

🚧 Develop for this project

Setup is only needed when you want to develop yourself. If you just want to try it out you can at our Alpha website: https://coinaly.io

This project is in early development, some features might not work yet.

Join Coinaly on Slack to talk with other contributers.

Installation

  1. Download this Git repo
  2. Install all the dependencies: yarn install. See package.json engines for the required Node, NPM and Yarn versions.
  3. Add a .env file in the project root containing your own encode secret ENCODE_SECRET=your_super_secret_string
  4. Run: npm run dev
  5. Fill in your API key and secret on the homepage

After started successfully, the website is in development mode and available at http://localhost:8080.

The API is available at http://localhost:5000

The Websocket is available at http://localhost:6000

Run development mode

# serve with hot reload at localhost:8080
npm run dev

Build for production

# build for production with minification
npm run build

# build for production and view the bundle analyzer report
npm run build --report

# run in production
npm start

Run tests

# run unit tests
npm run unit

# run e2e tests
npm run e2e

# run all tests
npm test

For this setup we used the standard VueJS Webpack template. For a detailed explanation on how things work, check out the guide and docs for vue-loader.

coinaly's People

Contributors

adis-me avatar jvandenaardweg 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

coinaly's Issues

Ability to sell all coins in balance

I think it might be handy to have a feature to sell all (or a portion) of your coins all at once. For example, when the market is crashing down and you want to secure profits before it's too late.

Below is a use case how I think it should work:

Use case:

  1. User panics and wants to sell his coins to secure already made profits quickly
  2. User clicks [Sell all coins] on the balance page
  3. System opens a "sell coins" page
  4. User has the ability to set a price per coin (or an easy quick option to sell all below/above current market price)
  5. User clicks [Place orders]
  6. System will cancel all open orders for that user
  7. System will place a new sell order for each coin
  8. User can track the progress of those orders on the /orders page
  9. User is happy when orders fill

Would love to get some input on this :)

Add coin icons on the balances page

Proposal:
Place currency icons 😍 in front of the currency shortcode

Url:
/#/balances

WDYT?

If you agree what would be the best approach? Gather all icons as static files? svgs or pngs?

Project goes private

Hi! :-)

I've got a little announcement to make.

As you noticed, there's not a lot of things happening here anymore, which is too bad. I'm currently working hard on a freelance project at a client's office. Which is thΓ© reason I don't have time for this project at the moment and also keep my girlfriend happy during the evenings and weekends.

So, when my freelance project ends, I've decided to work on this project fulltime (on workdays) for at least the next 3 months in a private repository. That's a huge commitment of time, resources and energy. The reason for this is I want to try to scale and monetize it, I don't think open sourcing the whole project is the way to do that.

The first version of Coinaly was a good test to see what needs to be done to scale this project. The current setup only allows a few users concurrently. That's just not working when the project grows bigger. Scaling this project is a costly setup since it involves a cluster of servers, to serve request to exchange API's and still respect their rate limitations. All of this is not free. Hence the monetization part.

Request invite
I've updated the website so you can get an invite when the project is ready for it's first release: https://coinaly.io. You'll be the first to know.

Also, feel free to join the Telegram channel as I try to give an update once in a while: https://t.me/coinaly

If you are in or around Amsterdam, come say hi at WeWork Metropool, since i'll be renting a desk there to work on this project.

Thanks @adis-me for your help, really appreciate it!

I'll remove this Github repo from the public in the next coming weeks.

Use Service Workers to add offline capabilities

  • Give the user a notification when the network is offline, so he cannot place a buy/sell order
  • Allow browsing all pages when the network is offline but we already have initial data (i think we already do this, but need to check if it all goes well)

Cancel a SELL order: nothing happens

Expected Behavior

When Cancelling a SELL order I except the the sell order is cancelled and the screen refreshes to show the outstanding (pending) sell orders.

Actual Behavior

I get a confirmation dialog but when I click on OK nothing happens (visually).

Steps to Reproduce the Problem (assuming you have pending SELL order)

  1. Go to Orders on coinaly.io
  2. Expand one of your sell orders and click on Cancel
  3. Notice that nothing is happening

Specifications

  • OS: macOS High Sierra 10.13.2
  • Browser: Google Chrome 63.0.3239.132

Console errors:

Only messages I see in the console are:

created homepage
created orderspage

On the network tab I see these 2 requests:

screen shot 2018-01-17 at 11 18 42

Note on the highlighted request there is no response body? Perhaps by design?

I you do not have time I will try to investigate this issue further or even fix it :-)

Convert USD to any fiat currency

Worth calculation is now done using the exchange it's BTC-USD market.

With the known USD worth we can also convert it to any other currency using the last known market data. There are NPM packages that handle this. Should try a good package.

Use Websocket to update market ticker data

We need a websocket connection for this to off-load the exchange API.

Since a websocket requires it's own connection we need a seperate service running for this.

So we probably end up with 3 services:

  • web (NodeJS serving static frontend files (JS, assets etc...)
  • api (NodeJS rest API server)
  • websocket (NodeJS websocket server)

Currently web and API are one: http://simpletrade.herokuapp.com/

Make USD pairs work properly

Currently we have hardcoded in some data processing using BTC-, but this should be dynamic.

I've marked these things with a TODO in the code.

Buy/Implement SSL certificate

Of course we need SSL for our domain after #2 has resolved. After installing SSL we need to get the highest available score. I often use https://www.ssllabs.com/ssltest/ for this purpose.

I'm not sure if the Google Lighthouse will extensively test our SSL config, if so this issue will be resolved in #21

Create seperate Heroku services

In order to use websockets (#8) we need to seperate processes on Heroku

1. web
the front-facing website (Node, VueJS)

2. api
server that returns exchange API data (Node, Express)

3. socket
server that returns exchange socket data (ticker information) (Node, Websocket)

Heroku does not support multiple "web" processes in 1 Procfile. So I came accross this:
https://github.com/heroku/heroku-buildpack-multi-procfile

This issue is to seperate those 3 processes by the use of that Heroku buildpack.

So we end up with:
https://coinaly.io (web)
https://api.coinaly.io (api)
https://socket.coinaly.io (socket)

Make ETH pairs work properly

Currently we have hardcoded in some data processing using BTC-, but this should be dynamic.

I've marked these things with a TODO in the code.

Known issues

An overview of currently known issue's

Open:

  • Only BTC currency pairs are properly shown. ETH and USD pairs do not work correctly (yet)
  • You cannot place a buy order
  • You cannot place a sell order
  • Website may not work properly yet on Android browsers. Haven't tested this

All of the above is planned to be fixed

Fixed:

  • Calculating profits/loss percentage on orders takes a few seconds
  • Calculating USD on balance takes a few seconds
  • "Markets" page is empty
  • Open buy orders will show β€œInfinity%”

Show a notice when Bitcoin is having a run

Lately (i’m not that long in the crypto trade world) i notice when BTC/USD rises with more than 5-10%, 99% of the altcoins seem to suffer and instantly go down.

I think its useful to show a site wide notice when bitcoin is running up, so you kinda know why your altcoins are performing bad

Would love to know if others might find this useful

Need a better project name and domain name

Simpletrade is just a name in order to get this project started. But I personally don't feel like this is a name that fits the overal thing we try to solve.

Ofcourse, the interface we create must be simple in it's use. But it's more an "on the go", "everywhere you are" trade and portfolio interface. Fast and easy to use.

We can use this thread to come up with better names :-)

A big requirement is that it cannot conflict with other Trademarks and business names

Some names I came up with:
EasyTrade
BitTrader
CryptoTrader
GoCrypto
CoinTrader
Crypty

^ havent checked the above yet on availability, but this should get the brainstorm started

Namechange to Coinaly and made repo public

The previous name "Simpletrade" was just a name to get the project started. Now we changed to "Coinaly".

It's really hard to find a suitable name for a project these days, but i think Coinaly fits this one.

The coin party is really obvious; this is a trade interface for cryptocurrencies (aka coins)
The aly part references to "analyzing" and "easy". Since trading is part analyzing. And the platform must be easy to use.

Also, saying "Coinaly" sounds pretty good. So, this is the name we are going to use :-)

Coinaly.io is already bought.

I'm currently in the process of changing all the references.

Alpha website will be: https://coinaly.io (can take 24hrs for it to be available)
Repo will be: https://github.com/jvandenaardweg/coinaly
Slack: coinaly.slack.com > direct invite link

The reason I made this repository public is to allow other dev's to join in on this.

Encrypt API key and secret using JWT

API key and secret are now stored in your browser as a cookie. So the security lies at the user side. But I think we can do better.

I think JSON Web Tokens is a perfect example to securely store the api key and secret and transfer it over the web

https://jwt.io/

How i think it should work:

  1. User fills in API key and secret on the setup page
  2. API key and secret are send to the server (https)
  3. On the server, we create a web token and sign it with a secret
  4. We return the web token to the user
  5. We store the web token in the user's browser
  6. We can use that web token to connect to the API's through our server

That web token can be used to connect with the exchange API's through our server, since only our server can decrypt the signed web token. The secret used to sign the web token is a server environment variable, so not included in the git repo.

Pro's:

  • no plain text API key and secret in the user's browser
  • API key and secret is transfered only once (securely, https) over the internet
  • safe, API keys and secrets are not stored anywhere in plain text

Con's:

  • maybe decrypting it with every API call is a performance problem? Need to research this

Note: the exchange API's need the decrypted API key and secret. See https://github.com/ccxt/ccxt/wiki/Manual#exchange-structure

Add ability to only show buy orders you have coins for in your balance

The homepage of the app gives you information on how much profit you are making with your trades.

But, it also shows orders from coins you already sold. It could be that you don't want to see those orders because they are not relevant to you anymore.

We can filter out orders from coins you don't have in your balance anymore.

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.