Code Monkey home page Code Monkey logo

lunie's Introduction

Lunie Official Monorepo

Workspaces:

Preparation:

To install the required modules for /api, /app, and /extension all at once, run:

$ yarn

If you're only interested in /api, /app, or /extension there are instructions below for how to work in one workspace at a time.

To install new dependencies in a single workspace:

Run this command with the following syntax:

$ yarn workspace <workspace-name> add <package-name>

As an example:

$ yarn workspace extension add cool-vue-package

To run the code in a single workspace:

  • API:
$ yarn workspace api start
  • App:
$ yarn workspace app serve

To build extension:

$ export LUNIE_API=https://staging-api.lunie.io
$ yarn workspace extension build

To build extension enabling localhost connection

$ export LUNIE_API=https://staging-api.lunie.io
$ yarn workspace extension build:dev

lunie's People

Contributors

aronvanammers avatar asoltys avatar bitcoinera avatar colw avatar coreycosman avatar dependabot-preview[bot] avatar dependabot[bot] avatar ebuchman avatar enyan94 avatar faboweb avatar fedekunze avatar gin avatar iambeone avatar jbibla avatar jleni avatar jrmoreau avatar keppel avatar mappum avatar mariopino avatar michielmulders avatar migueog avatar nodeguy avatar nylira avatar okwme avatar sabau avatar sgobotta avatar thebkr7 avatar zramsay 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lunie's Issues

Handle a broken genesis.json

Currently the application fails if the genesis.json provides another hash then tendermint expects. What should be the process if this happens?

Better Loggin

As a developer
I want to have a persistent log
So that I can trace back errors in production

Back-button behaviour

The back button behavior is not consistent in the application. Sometimes it is there, sometimes it isn't. It also does not work like expected (going back to the last view) in some cases.

No Polling

To not DDoS our services we should not poll information every second. The idea is to have either refresh buttons on the required views or poll slowly like every 5s.

Use Lite-Client

As a user
I don't want to have long synchronization times when I open the app
So I that I can check balances or interact with the blockchain when I want to immediately.

AC:

  • The wallet doesn't use a full node

Note

  • The wallet should probably just use the baseserver client

Testing

As a user
I want to be able use the wallet without obvious errors
so that I I don't feel frustrated using Cosmos.

AC:

  • Every release is tested for obvious errors -> CI
  • 80% test coverage -> unit testing
  • The critical functionalities are tested E2E via some automated browser tests

Support multiple networks

We will eventually need to support running nodes on multiple zones. This will also involve updating the relevant UIs to work for multiple chains (e.g. showing sync progress for each chain in footer, selecting chain when delegating or sending, showing which chain different wallet balances are on, etc.)

Multiple Networks

As a user
I want to be able to select a blockchain-network
So I am able switch between production- and test-networks.

AC:

  • The user is able to select a network and persist that decision

Note:

  • What is the use case?

Welcome Screen

As a user
I want to manually select to create a new account or restore an existing one
So that I feel secure about which account I am interacting with

AC

  • User has the ability at first start to create a new account
  • User has the ability at first start to restore an account with a fundraiser mnemonic

Genesis file should be dynamic, not baked in

Example commands to run with different genesis.json files.

npm run local
npm run dev <link to json>
npm run testnet <name of testnet in testnets repo>

We'll need a UI for this later too, but it's not a priority.

Transaction History

As a user
I want to have access to my transaction history
So I am able to review past transactions for malicious transactions and to be able to tie transactions to a certain time and user/account.

AC:

  • User is able to see outgoing and incoming transactions for a selected account
  • User is able to see time, quantity, token type and accounts of every transaction

Note:

  • Should users be able to see block height of every transaction?
  • Should the transactions be filterable?
  • Should the user be able to get detailed information on transaction partners?
  • Should the user be able to see bonded atoms as well?

Error running local testnet

Version:

Tendermint: 0.11.1-d4634dc6
Basecoin: 0.7.1-6c667b8
Baseserver: 0.7.1-6c667b8
Cosmos-ui: 9f45165

Steps:

npm i

npm run local

Error:

➜  cosmos-ui git:(test-fix) ✗ npm run local

> [email protected] local /Users/adrian/Code/cosmos/cosmos-ui
> npm run testnet local


> [email protected] testnet /Users/adrian/Code/cosmos/cosmos-ui
> node tasks/testnet.js "local"

Starting webpack-dev-server...

webpack  fallbackLoader option has been deprecated - replace with "fallback"

webpack  loader option has been deprecated - replace with "use"

webpack  Project is running at http://localhost:9080/

webpack  webpack output is served from /
         Content not from webpack is served from /Users/adrian/Code/cosmos/cosmos-ui/app/dist

webpack  (node:499) DeprecationWarning: loaderUtils.parseQuery() received a non-string value which can be problematic, see https://github.com/webpack/loader-utils/issues/56
         parseQuery() will be replaced with getOptions() in the next major version of loader-utils.

webpack  Hash: 2ae48ca3a59297d28723
         Version: webpack 2.7.0
         Time: 14284ms
                                     Asset     Size  Chunks                    Chunk Names
             fonts/fontawesome-webfont.eot   166 kB          [emitted]
              imgs/fontawesome-webfont.svg   444 kB          [emitted]  [big]
           fonts/MaterialIcons-Regular.ttf   128 kB          [emitted]
          fonts/MaterialIcons-Regular.woff  57.6 kB          [emitted]
         fonts/MaterialIcons-Regular.woff2  44.3 kB          [emitted]
             fonts/fontawesome-webfont.ttf   166 kB          [emitted]
           fonts/fontawesome-webfont.woff2  77.2 kB          [emitted]
            fonts/fontawesome-webfont.woff    98 kB          [emitted]
                               renderer.js  11.2 MB       0  [emitted]  [big]  renderer
                                index.html  1.63 kB          [emitted]
         chunk    {0} renderer.js (renderer) 3.87 MB [entry] [rendered]
             [6] ./app/~/babel-runtime/helpers/extends.js 544 bytes {0} [built]
            [46] ./app/~/babel-runtime/regenerator/index.js 49 bytes {0} [built]
           [380] ./app/src/renderer/main.js 2.52 kB {0} [built]
           [381] (webpack)-dev-server/client?http://localhost:9080 5.83 kB {0} [built]
           [382] (webpack)/hot/dev-server.js 1.57 kB {0} [built]
           [446] ./app/~/strip-ansi/index.js 161 bytes {0} [built]
           [452] ./app/src/renderer/node.js 1.85 kB {0} [built]
           [453] ./app/src/renderer/routes.js 3.01 kB {0} [built]
           [611] ./~/loglevel/lib/loglevel.js 6.74 kB {0} [built]
           [846] ./~/vuelidate/lib/index.js 14 kB {0} [built]
           [863] (webpack)-dev-server/client/overlay.js 3.6 kB {0} [built]
           [864] (webpack)-dev-server/client/socket.js 856 bytes {0} [built]
           [866] (webpack)/hot nonrecursive ^\.\/log$ 160 bytes {0} [built]
           [867] (webpack)/hot/log-apply-result.js 1.02 kB {0} [built]
           [896] multi (webpack)-dev-server/client?http://localhost:9080 webpack/hot/dev-server ./app/src/renderer/main.js 52 bytes {0} [built]
              + 882 hidden modules
         Child html-webpack-plugin for "index.html":
             chunk    {0} index.html 542 kB [entry] [rendered]
                 [0] ./~/lodash/lodash.js 540 kB {0} [built]
                 [1] ./~/html-webpack-plugin/lib/loader.js!./app/index.ejs 2.2 kB {0} [built]
                 [2] (webpack)/buildin/module.js 517 bytes {0} [built]

webpack  webpack: Compiled successfully.

Starting electron...
  (network path: ./app/networks/local)

electron  root exists (/Users/adrian/.cosmos-ui-dev)

electron  backing up data to "/Users/adrian/.cosmos-ui-dev_backup_1"

electron  initializing data directory (/Users/adrian/.cosmos-ui-dev)

electron  spawning /Users/adrian/go/bin/basecoin with args ""init" "1B1BE55F969F54064628A63B9559E7C21C925165" "--home" "/Users/adrian/.cosmos-ui-dev""

electron  Error: Initialization of basecoint failed:
              at /Users/adrian/Code/cosmos/cosmos-ui/app/src/main/index.js:384:13
              at <anonymous>
              at process._tickCallback (internal/process/next_tick.js:109:7)
              at Module.runMain (module.js:607:11)
              at run (bootstrap_node.js:431:7)
              at startup (bootstrap_node.js:155:9)
              at bootstrap_node.js:551:3

exited electron app/src/main/index.dev.js 1

Refresh Balance Design

The refresh button on the balance page was implemented, but there was no design applied.

Send Funds

As a user
I want to be able to send my tokens to a specified account
so that ... .

AC:

  • User is able to send tokens to a specified account
  • User is not able to send an amount of tokens he does not posses
  • User is not able to send a negative amount of tokens
  • User is able to select a token type for the transaction
  • User can't send multiple token types at a time
  • User is notified if transaction is successful and if it is unsuccessful

Idea:

  • Maybe show the balance of the user on the same page
  • Maybe update balance live while user types the amount to send

Wallet Balances

As a user
I want to have an overview of my balances in the cosmos network
so that I have easy access to the knowledge of my values/tokens in the network.

AC:

  • The user can see the balance for a specified account
  • The user can see the amount of bonded atoms

Multiple Accounts

As a user
I want to be able to add multiple accounts to the wallet
so that I can be more anonymous.

AC:

  • User is able to create another account
  • User is able to select an account for global use
    • User is able to select an account for viewing balances
    • User is able to select an account for viewing transactions
    • User is able to pick an account for public communication (forum)
    • User is able to pick an account for nomination/delegation

Note:

  • Are users able to remove an account?
  • Should the selected account be prominently viewable at all times?

Network Monitoring

As a user
I want to be able to see the status of the blockchain network
So that [I can see if there are enough nodes to securely facilitate my transaction?]

AC:

  • User is able to see the node up time for every node in the network for last [day, week, month, year?]
  • User is able to see the amount of currently active node?
  • The network monitor is accessible from outside as a standalone website
  • The network monitor is accessible from inside of the wallet

Notes:

  • What is the value proposition?

npm run local doesn't work on a clean setup.

$ node -v
v8.7.0
$ npm run local

> [email protected] local /home/ethan/vue/cosmos-ui
> npm run testnet local


> [email protected] testnet /home/ethan/vue/cosmos-ui
> node tasks/testnet.js "local"

module.js:529
    throw err;
    ^

Error: Cannot find module 'event-to-promise'
    at Function.Module._resolveFilename (module.js:527:15)
    at Function.Module._load (module.js:476:23)
    at Module.require (module.js:568:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/home/ethan/vue/cosmos-ui/tasks/runner.js:7:15)
    at Module._compile (module.js:624:30)
    at Object.Module._extensions..js (module.js:635:10)
    at Module.load (module.js:545:32)
    at tryModuleLoad (module.js:508:12)
    at Function.Module._load (module.js:500:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] testnet: `node tasks/testnet.js "local"`
npm ERR! Exit status 1

Broken Balances Page

Functionality seems to be broken:

  • Clicking on atoms transfers me to an unexpected page
  • Clicking on mycoins transfers me to an unexpected page

SDK Requirements

  • historical transactions
  • send/receive in one transactions
  • filter by
    • block-height (start and end)
    • limit (default 50)
    • cap by some maximum
  • output in JSON
  • stream new transactions
    • MVP: refresh button
    • desired: via Websockets
  • delegation
    • all candidates

Approve new blockheader after disconnect

When the the light-client disconnects for some time we need to provide it again with information about the block-header. These information should probably come from several trusted sources. We should accept the new information if 2/3 of these trusted sources provide us with the same information.

Questions to @GaMarin

Cannot build for darwin

I get this error in my terminal when I run

open cosmos-ui.app/Contents/MacOS/cosmos-ui
/Users/pz/Projects/cosmos-ui/builds/cosmos-ui-darwin-x64/cosmos-ui.app/Contents/MacOS/cosmos-ui; exit
Last login: Tue Nov 14 09:14:25 on ttys000
pz@mbp ~> /Users/pz/Projects/cosmos-ui/builds/cosmos-ui-darwin-x64/cosmos-ui.app/Contents/MacOS/cosmos-ui; exit
(node:6399) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): TypeError: Path must be a string. Received undefined
(node:6399) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Chain App Store

As a user
I want to have one source of information and interaction for all my blockchain relevant information
So that I take use of the full inter-blockchain communication capabilities cosmos provides.

Idea:

  • Have an "app store" for all lite-node clients of all chains connected to cosmos
    • Users can add those apps to their wallet by a click of a button
    • After adding the app, a user can view the chain related information and interact with the chain

Questions:

  • Where does the user get the "apps" from to know they are secure?
    • Idea: Setup list of trusted resources (calculating consensus between them)
  • Does every app provide a individual UI?

Adding CircleCI

We need a CI to enforce tests being run and code to be well formatted.

Remove Webpack

I as a developer
Want to remove webpack from the project
So that I have less steps building the project and have better stacktraces leading to faster development.

AC:

  • Webpack is removed
  • All imports work
  • Vue templates rendering at runtime (or precompile)
  • NPM scripts work with the new setup

Linting

As a developer
I want to be able read consistent code
so that I can concentrate on creating value.

AC:

  • Every PR is linted

Lite-client

As a user
I don't want to have long synchronization times when I open the app
So I that I can check balances or interact with the blockchain when I want to immediately.

AC:

  • The wallet doesn't use a full node

Note

  • The wallet should probably just use the baseserver client

Status information

We would like to get the status information of the connected remote node and its address from baseserver.

Windows Remove Files

Removing folders on Windows sometimes fails for several reasons.
I created the method rmdir.js to handle this better.
It should be checked if this is still needed and if it could be done cleaner.

log/catch renderer errors

Errors in the renderer (the browser view) are not handled in any way by the electron main thread. If the view produces an error, the application fails silently.

Switch to Gaia

I as user
Want to be on the production system
So that I can participate in the actual cosmos network.

AC:

  • The wallet is working using gaia-server

Use main package.json for version

To test compatibility we check the version in the app/package.json against a saved one. This will probably never change so we should check against the top-level package.json.

Delegation

As a user
I want to be able to delegate my atoms to a validator
so that I can support the network in validation and earn commission.

AC:

  • User is able to view all the validators
  • User is able to view the profile of each validator
  • User is able to bond a certain amount of atoms to a selected validator
  • User is able to unbond atoms off a selected validator
  • User is able to see all the validators he has bonded atoms with (and the amount of atoms per validator)
  • User is able to see the amount of commission they have earned

Note:

  • Does a user need to unbond all atoms at once or can he unbound partial amounts?

Code Owners

We as a company
Want to have reviews of certain responsible code owners when merging to master
So that we prevent faulty and unauthorized merges to master

AC

  • when merging to master the approval of either @mappum or @nylira are required

Use only one source for node_modules

We have node_modules in root and in app/. This creates overhead while installing and is unpractically for testing as testing is done from root.

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.