Giter Club home page Giter Club logo

eos-rate's Introduction

TravisCI StandardJS Collaborative Etiquette follow on Twitter MIT

A Rating Portal for the EOS Community

EOS Rate is a community-driven visual rating tool that allows EOS token holders to easily rate Block Producers in distinct categories.

The rating system is based on a radial graph representing the most important qualitative aspects (let’s call them categories) of a block producer, populated with ratings provided by the input if the EOS community, and stored on the blockchain.

It will also provide basic quantitative information, a compare tool, dynamic filtering and links related to each BP (block producer), in order to fully inform the potential voter, but also let them share their ratings.

Each EOS account can submit their rating for each BP as many times as they like facilitating a "liquid democracy", however, the weighting is independent from the amount the EOS account holds. One account = one submission of equal weight.

Test Environment

We are testing this application on the Jungle TestNet. The Smart Contract is code deployed under the account rateproducer.

The staging branch contains our test environment. This UI is currently available at https://jungle.eosrate.io:8080

We are running the application infrastructure on premises in San Jose, Costa Rica.

Feature Roadmap

Version 1.0

  • List and Search Block Producers.
  • Scatter and Lynx Wallet Integration.
  • Autogenerated Block Producer profile pages with
    • BPJSON info.
    • Ratings results.
    • Rating UI for token holders to rate that block producer.
  • Compare Block Producers page
  • Ability to superpose different BPs ratings flake charts.
  • Home page with explanation and instructions.
  • Languages: English & Spanish.
  • Light Theme.

Version 1.2

  • Activity Stream.
  • Ability to leave a comment when rating. ( reviews, like Yelp ).
  • Ability to vote for a block producer directly on their profile page.
  • Languages: Chinese and Korean.
  • Filtering Block Producer List.
    • by Strengths: transparency, community, infra...
    • by Region.

Version 1.3

  • Proxies landing page with:
  • Voice identity layer for EOSRATE
  • List and search proxies.
  • EOS Rate Proxy for top rated BPs

Architecture

App Services

  • webapp: http://localhost:3000
    A React JS Web Client based on create-react-app that starts up at the available port (default is 3000).

  • hasura http://localhost:8088
    Autogenerated GraphQL API based on the PostgresDB Schema. Run make hasura to start the management console.

  • pgweb: http://localhost:8082
    Web-based PostgreSQL database browser written in Go running on a linux alpine container.

  • demux: Deterministic event-sourced state and side effect handling for blockchain applications. Updates ratings stats in postgres when new ratings are detected on the blockchain.

  • hapi: A back end service for synchronizing rateproducer blockchain tables with postgreSQL.

  • EOSIO Node: https://eos.edenia.cloud
    fill-pg fills postgresql with data from nodeos's State History Plugin.

Note: This project is based on EOS DApp Boilerplate.

Development Setup

Basic knowledge about Docker, Docker Compose, EOSIO and NodeJS is required.

Install Global Dependencies

Run EOS Rate on your Computer

git clone [email protected]:eoscostarica/eos-rate.git
cd eos-rate
make dev

Design Assets

Zeplin Artboards

Contributing

We use a Kanban-style board. That's were we prioritize the work. Go to Project Board.

Contributing Guidelines https://developers.eoscostarica.io/docs/open-source-guidelines.

Please report bugs big and small by opening an issue

About EOS Costa Rica


EOS Costa Rica is an independently-owned, self-funded, bare-metal Genesis block producer that provides stable and secure infrastructure for EOSIO blockchains. We support open source software for our community while offering enterprise solutions and custom smart contract development for our clients.

eoscostarica.io

License

MIT © EOS Costa Rica

eos-rate's People

Contributors

adriexnet avatar angelocg97 avatar arturocr avatar cristian-ramirez avatar danazkari avatar dependabot[bot] avatar fagomezra avatar gaboesquivel avatar hanakoori01 avatar joseboga avatar julianalvarado avatar justincast avatar kecoco16 avatar kriskoin avatar kuronosec avatar leisterfrancisco avatar marianocodes avatar maxchomac avatar murillojorge avatar royzumbado avatar rubenabix avatar tetogomez avatar xavier506 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eos-rate's Issues

UI: Block Producer Profile Page

bp-profile

I think we can start with the following information:

General Information

Location:  Costa Rica
Website:  eoscostarica.io 
Position:  #15
Votes:  1.56 %

Economy

Balance: 4.0800 EOS
Staked: 6.7800 EOS
Daily Reward:	500 EOS

Ratings  

Rate: 8.5 
Raters: 450 accounts

Scatter Integration

We are starting with a Mongo DB for persistence, we need to integrate scatter for registering the the votes on chain

Homepage: Short Description

We should prepare a short description on what is EOS Rate and why its important for the community.

This content will be used in the home page and in the github readme.

home-page

Serve Block Producer List

We need to serve a list of block producers to app containing relevant info from their profile.

Use info from eosio.system with:
Information from the producerjson contract.

Create filter box UI for block producers list

Description

The block-producers route needs a specific filter box component to be rendered within the side drawer and to be shown when the route has been loaded.

For now it only needs a subheader indicating it's a UI for filtering, and then some toggle filters.

Acceptance Criteria

  • When Block Producers link is selected in the main side drawer, then filter box should uncollapse and navigation to block producers should happen.
  • Applied filters should be stored in redux.
  • List of block producers should be affected directly and immediately when user interacts with the filters.

Community validation

We need to create a publication to engage the EOS community in order to see if our rating system qualitative aspects are the right ones.

I've written this draft let me know what you think.


EOSRate is a tool aimed to make the process of voting for EOS block producers easier by providing a visual rating system.
The rating system is based on a radial graph representing the most important qualitative aspects of a block producer (BP for short), populated with ratings provided by the input if the EOS community, and stored on the blockchain. It will also provide basic quantitative information, a compare tool, dynamic BP filtering and links related to each BP, in order to fully inform the potential voter, but also let them share their ratings.

In order to make this tool helpful and worthwhile not only to the ones developing it but to the whole EOS community, we want to hear your opinions. First an mostly about the qualitative aspects that the user will be rating.

We came up with five qualitative aspects that should be important for a potential voter to know about a BP. The rating will be done on a scale from 1 to 10.

Independence: Is the BP Self-Funded, limited or no third party involvement?
1=Not independent, 10=Very independent.
Transparency: Does the BP provide Disclosure of Ownership, Use of Rewards, complete bp.json and financial disclosure?
1=No disclosure, 10=Full disclosure.
Infrastructure Control & Resilience: Is the BP experienced managing infrastructure? Does it have physical access and proven excellence in infrastructure metrics?
1=Delegated control or No information available, 10=Full control, demonstrated infrastructure.
Community Engagement: Does the BP provide education and promote talks, chats, hackathons, conferences, seminars, developer spaces and retreats, related to the EOS network?
1=No community service, 10=Demonstrated community engagement.
Testnets: Does the BP provide dedicated resources to community testnets, leadership in testing and administration of test environments?
1=No Testnet involvement, 10=Demonstrated Testnet Engagement.

So let's say, for example, you want to rate a BP that you have taken the time to know, and consider it to have values of the following magnitude:
Independence = 10, Transparency = 2, Infrastructure= 5, Community= 7, Testnets= 5

And it would look like this! INSERT GRAPH IMAGE

We're working on creating a very friendly UI in order to make the rating system efficient, accessible and informative. But we know this can only happen if we listen to the community, so we will love to hear from you. Do you think the qualitative aspects we chose are the right ones? What else do you think should be rated? ...INSERT MORE QUESTIONS

If you want to learn more about EOS-Rate, check it out on our Github project page. And don't forget to star it!

Note: EOS-Rate is an initiative of EOS Costa Rica.

Proxies Design

  • Proxy List
  • Proxy Search
  • Proxy Profile page
    - 30 votes.
    - others ..

Project suggestions

In order to keep the project in shape the following things should be implemented/documented:

  • Define naming convention for files
  • Document project structure
  • React pattern to follow
  • Storybook implementation
  • Separate i18n in smaller files
    Contributors should stick to the guidelines

How to prevent spam

We need to consider scenarios where people may want exploit the rate system for its own benefit.

Being on chain rating only real EOS accounts will be able to rate BPs.

However, what if these accounts were fake, created with the sole porpuse of rating.
How can we prevent that type of scenario while maintaining a frictionless user experience.

document graphql setup

please add documentation related to the architecture, components, file structure, usage and any other important notes.

Git Cleanup

There are some files that we need to get rid off from the project, the node_modules folder and .DS_Store files.

Pull Request

URL: #12

Design rate flow

A token holder searches a block producer and rates it using the sliders.

As a user, I want to be able to list all BPs in a single view

Description

An unprotected page is needed to list all available BPs, this page needs a few things that will be listed in other tickets.

Acceptance Criteria

  • As an anonymous user, I can navigate to the proper route.
  • As an anonymous user, I can see a list of available BPs.

Ratings Decay

Should we have Ratings Decay ?

Life is constantly changing and Block Producers evolve over time, change strategies, they offer new services, etc. I think we should incorporate some sort or Ratings Decay, a simple solution can be displaying just the results of the ratings the were made recently in period of time ( 4 months for instance ).

Frontpage Design + Animation

A frontpage that will provide basic info on what the project is all about, and further explanations on how the graphs work. Also an animation will be created as an intro.

Radar styling

We need to style the radars so they all look the same and according to the design.
Please refer to: https://zpl.io/bPvGEL6
If you do not have access to the Zeplin project contact me.

radar prototype blank

Homepage Video

We need to record a 2 minute video for the homepage about EOS Rate.

The goals of the video are:

  • explain what it is and it's objectives.
  • describe how it works.
  • let people know how to get involved in the project.

prettier and standardjs overlapping ?

we are currently running both on the yarn lint command
pretty-quick . && eslint --fix .

If you run them separately they have differences.
AFAIK prettier doesn't check for best practices in JS and React it only formats text ( alignments, paddings, spacing )

Thoughts ?

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.