alexitc / crypto-coin-alerts Goto Github PK
View Code? Open in Web Editor NEWAn application that let you set alerts for the prices of several cryptocurrencies
License: GNU General Public License v3.0
An application that let you set alerts for the prices of several cryptocurrencies
License: GNU General Public License v3.0
Coinmarketcap is missing on the home page
A link to coinmarketcap should be displayed.
There is no link to coinmarketcap.
Update the logback.xml to log exceptions root cause first
When an exception is thrown and it has nested causes, the root cause should be the first displayed exception.
When an exception is thrown and it has nested causes, the root cause is not the first displayed exception.
Removing the internet connection and leaving the project running show start displaying exceptions.
We are not following naming conventions on files containing multiple classes.
Follow file naming conventions from: https://docs.scala-lang.org/style/files.html
Files containing more than one class should be follow the camelCase style, most files from the models package need to be renamed.
The JsonController class abstracts some logic to write json APIs in a simpler way, at the moment it is tied to this application, it would be great to make it reusable across applications.
There are some aspects to consider for completing this task:
ApplicationError
could probably be a required part to use the JsonController
, in this case, the user would be responsible on decorating its error classes with ApplicationError
specific sub classes like InputValidationError
.JsonController
validates the input json, hence, we need the JsonFieldValidationError
.JsonErrorRenderer
.JsonController
is depending on a logger to log internal errors, it might be good to get rid of this and ask the user to implement a custom private error listener / handler.JsonController
has a JWT user authenticator, we should let the user handle authentication, it is also depending on the UserId
model, the user should be able to use its own model class.JsonController
is tied to scalactic Good
or Bad
results and our ApplicationResult
, it would be great to let the user choose between scalactic, scalaz or cats.There might be more things to do in order to make this JsonController
generic to more applications.
Some user have complained that running the tests is not straightforward on Windows.
The README.md from the alerts-server project specifies how to run the tests on Windows.
It is not clear how to run the tests on Windows.
Resolve github vulnerability warning on the alerts-ui project
There is no vulnerability warning on the GitHub project page.
GitHub is displaying a vulnerability warning that seems to be related to the angular build tools.
Supporting coinmarketcap would help us to track prices in USD as well as having a wide variety of coins.
There are some things that makes non trivial to integrate it.
Our current currencies table intends to store the currency name representation (like BTC, ETH, etc), sadly, there are collisions in this representation, BTG = Bitgem or Bitcoin Gold.
This new column could be filled with the readable name or the coinmarketcap id, while the id field could be ideal, using the readable name could be more useful for users and we should be able to match it while looking for alerts to trigger.
One approach is to include a new column like currency_name
and then, render a currency in the UI using both fields, a big advantage of this approach is that we can avoid possible collisions with other exchanges.
The ideal scenario would be to keep the new column as not nullable but KuCoin is not giving us this field, we could ignore existing data or map the currencies from existing exchanges (when possible) with its name.
Another point is that there is a uniqueness constraint based on market and currency, we'll need it to expand it to include the name, the name could be a CITEXT.
Currently, the UI displays a drop down field to select the currency, coinmarketcap have almost 1500 currencies which could make this flow more awful, it might be good to integrate a component with auto-completion to fill the currency (matching currency or name).
Currency not updated after updates from external services
If an external service (like Coinmarketcap) updates the details for a currency, they should be updated in our database.
The application fails to update the values and it keeps sending alerts about the non-updated currency.
currency_name
One simple way would be to change the insert to upsert.
Currently, the application is prepared for supporting multiple languages while English is the only one being used.
There are some things to do in order to start supporting different languages.
New currencies alert doesn't show the currency name (if available)
While receiving the new currencies, the currency name is displayed (if available).
The currency name is not being displayed.
Receive a new currencies alert from COINMARKETCAP, even that the currency name is available, it is not displayed.
After receiving a fixed price alert email, it is not easy to create the same alert with a different price
On the fixed price alerts email, there is a link for creating another fixed price alert having the same values where we can update the price.
The fixed price alert email doesn't contain any link to create a similar alert.
The captcha component is not integrated with the reactive forms.
We should be able to keep disabled the submit button on reactive forms is the captcha hasn't been solved.
The captcha component is not integrated with reactive forms, which implies that it is not considered as a form element, leading to the submit button being clickable even is the captcha hasn't been solved.
As concisely as possible, describe the observed behavior.
Increase the backend test coverage.
The test coverage is higher.
The test coverage is not as good as it can be.
There is no way to login if you don't remember the password.
The users are allowed to reset its password by receiving an email.
The users are unable to reset its password.
Integrate scalafmt to format the sources before compiling the project
The source code is formatted before compiling the project.
The source code is not formatted before compiling the project,
Please note that this issue asks for the configuration only and no changes to the scala files should be included in the pull request, one way is just to grab this code.
Improve the UI to make the account requirement more obvious
Visitors should easily understand that they need to create an account in order to use the application.
A simple idea is to just increase the font size and use a background color where to the new account buttons.
Based on some feedback from visitors, they said it wasn't obvious that an account was required.
Go to the main page: https://cryptocoinalerts.net/
EOS market is not supported while HitBTC supports it.
Our app supports the EOS market on HitBTC.
While HitBTC supports the EOS market, we don't.
Just start the application and it will print the following warnings:
2018-09-15 14:43:03,434 [WARN] from com.alexitc.coinalerts.services.external.HitbtcService in application-externalService.dispatcher-33 - Unable to create book from string = [DASHEOS]
2018-09-15 14:43:03,434 [WARN] from com.alexitc.coinalerts.services.external.HitbtcService in application-externalService.dispatcher-33 - Unable to create book from string = [TRXEOS]
2018-09-15 14:43:03,434 [WARN] from com.alexitc.coinalerts.services.external.HitbtcService in application-externalService.dispatcher-33 - Unable to create book from string = [NEOEOS]
2018-09-15 14:43:03,434 [WARN] from com.alexitc.coinalerts.services.external.HitbtcService in application-externalService.dispatcher-33 - Unable to create book from string = [ZECEOS]
2018-09-15 14:43:03,434 [WARN] from com.alexitc.coinalerts.services.external.HitbtcService in application-externalService.dispatcher-33 - Unable to create book from string = [LSKEOS]
2018-09-15 14:43:03,434 [WARN] from com.alexitc.coinalerts.services.external.HitbtcService in application-externalService.dispatcher-33 - Unable to create book from string = [XEMEOS]
2018-09-15 14:43:03,434 [WARN] from com.alexitc.coinalerts.services.external.HitbtcService in application-externalService.dispatcher-33 - Unable to create book from string = [XRPEOS]
Integrate the sbt-errors-summary plugin
The sbt-errors-summary plugin is integrated into the alerts-server
project.
The sbt-errors-summary is not integrated into the project.
We have support for fixed price alerts, which is triggering an alert when a price condition is reached.
This needs the user to give us the price that he is interested in, it is common to compute a percentage manually based on the current price, with this we can get an alert when a currency increased by certain percentage but it is tedious to compute that by ourselves.
In order to simplify this process, we could ask the user to enter a percentage and the price condition and we can compute the fixed price related to the percentage, what is stopping us to add this to the UI is the need to know the current price of the currency.
There are some possible approaches to get the current price:
While this has several advantages, like avoiding useless traffic in our server, not all exchanges have Cross-Origin Resource Sharing (CORS) enabled which makes this option harder.
To avoid requiring CORS enabled in the exchanges, we could use nginx the proxy the API calls to the exchanges.
As all exchanges have different API behavior, we would need to implement the logic for every exchange on the client which could be a significant amount of maintenance cost (and code).
As we already call the exchanges from our server, we could generate consistent responses for any exchange, this would be the preferred approach which lead us to design a way for retrieving the prices.
This is similar to the nginx approach and we could get scaling issues due to rate limits from the exchanges which could be quite bad for us.
We could keep the prices in-memory and keep a scheduled job to update the prices frequently, at the moment we keep track of less than 1500 currencies and even adding support for Coinmarketcap would keep the number below 5000, which should not be a problem to store them in-memory.
Using this approach would help us to redesign the tasks sending the alerts to not call the exchanges directly but to use our stored prices, also, we could remove the schedulers for these tasks and use listeners that get notified when the prices are updated, this should avoid us to send repeated requests to the exchanges.
The contributing guidelines could be better.
The contributing guidelines look similar to these ones having the hyperlinks and project names updated to our project.
The current contributing guidelines are outdated.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.