Giter Site home page Giter Site logo

cryptobooks's Introduction

cryptobooks

provide cryptocurrency prices and book keeping

components

collecting prices

Prices for various crypto currencies are collected every minute 5 minutes via azure functions and cached.

  • Playground function and table storage
  • Deploy functions via github/infra-as-code
  • re-write storage table design to have partitionKey = coin & rowKey = date
  • figure out how to add old data
    • maybe revise aggregates depending on availabily of historic data
    • ➡️ use day day history API, see spec, needs one query per coin/currency pair but should be executable within rate limits as it allows 2000 days at once
    • ➡️ uses closing price

aggregating prices

Build aggregates of the full price history for use in the web UI.

  • [ ] add aggregation function to generate 10min, 30min, 1hr, 12hr, 1d, 10d summaries
  • [ ] define when aggregates should be built
    • build all after update / collecting
    • individual CRON jobs
    • single independent CRON job with divisor
  • ➡️ try to build on the fly

web API - prices

Provide API endpoints that give the aggregated metrics for various coins. Implemented with graphQL (#7)

  • authorization
  • caching

web API - assets (books)

Store encrypted JSON blob of assets in a database.

  • Authentication via username and a password hash

  • Client side decryption of the blob with the actual unhashed password (password never leaves client)

  • RESTful PUT, POST, GET, DELETE API design

web UI

  • add/remove transactions
    • date
    • currency
    • custom price (defaults to historic price)
  • list total assets
    • table
    • pie chart
    • annotate to keep track where certain amount of assets are stored
  • chart of profit/loss with various time scales

Known/accepted limitations

  • no exchange support / one price only

License

As I don't want people to turn this into a product without feeding back to OSS I decided to license this under GPL by Andreas Offenhaeuser http://anoff.io

cryptobooks's People

Contributors

anoff avatar

Stargazers

 avatar Thomas Pentenrieder avatar José Augusto Guimarães avatar

Watchers

James Cloos avatar  avatar  avatar

cryptobooks's Issues

create function to fill historic values

Need to build a function/workflow that allows to collect historic prices on a per-day basis.

  • using the histoday api
  • calculate how many requests are needed to fill up the last 2 years
  • build pipeline to trigger custom currency pairs to be populated
  • table design

Design API for user assets

  • Authentication via username and a password hash
  • Client side decryption of the blob with the actual unhashed password (password never leaves client)
  • RESTful PUT, POST, GET, DELETE API design

Action required: Greenkeeper could not be activated 🚨

🚨 You need to enable Continuous Integration on all branches of this repository. 🚨

To enable Greenkeeper, you need to make sure that a commit status is reported on all branches. This is required by Greenkeeper because we are using your CI build statuses to figure out when to notify you about breaking changes.

Since we did not receive a CI status on the greenkeeper/initial branch, we assume that you still need to configure it.

If you have already set up a CI for this repository, you might need to check your configuration. Make sure it will run on all new branches. If you don’t want it to run on every branch, you can whitelist branches starting with greenkeeper/.

We recommend using Travis CI, but Greenkeeper will work with every other CI service as well.

table design for historic values

How to Partitionkey / RowKey for easy historical queries?

Needs to

  • quickly select last x values for different spacings
  • x being fixed for every history-type

aggregated values are stored twice per interval

If the functions execute in under a second the condition to store aggregated updates executes twice per hour/day.
image

Should be fixed by taking milliseconds into account as well and not just minutes/seconds.

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.