joincolony / colonydapp Goto Github PK
View Code? Open in Web Editor NEWColony dApp client
Colony dApp client
Set up basic webpack infrastructure for CSS modules. Move over our shared styles as well.
This issue should cover improvements that should be implemented in the CI builds:
With the new dapp we won't have the original concept of identifying "users" anymore but we will identify users by their ethereum wallet address (and attach meta data like the username, id, etc).
This requires new workflows to "sign in" into our app. Signing in will be done by "unlocking" a certain wallet. The library we will be using allows for a couple of methods:
0x19c95ed4d052bdfc79568d7c137fa3ec5d7ef84efe0a165847f948b230e48cdb
We should support all of those, but hide the ones we think are more for the "advanced" users. What do you think would be a good option for "novice" users or the ones who just want the most comfortable UX?
Then there are other possibilities:
You can see most of these options in action on https://myetherwallet.com/. Choose "Send Ether & Tokens" and you will see the unlock screen.
Then there's the question how users will actually sign the transactions (what in the beta is the wallet password dialog). Once we unlocked the wallet, how do we want the signing process to work? This is easy with hardware wallet or MetaMask / Mist / uPort, but what are the requirements for signing transactions with a custom wallet (above options). Will this just be a modal, wanting to put in your private key again? I don't really know how myetherwallet does it as I'm using a hardware wallet.
Pinging for UX suggestions, discussions: @Karol-colony @collinvine
Pinging for implementation questions, discussions: @area, @elenadimitrova, @thiagodelgado111
Please let me know what y'all think!
This includes but is not limited to:
Adds ColonyNetwork
as a submodule of the dapp and sets it up and running with the provisioning script
This will be a particularly long running epic as this can be closes once everything (in terms of functionality) what we have in the beta will also work in the dApp.
The goal is to move all react components to the dApp eventually. Some considerations:
Turn into a CLI API that can run locally as a service, packaged up (for instance) with IPFS and parity/geth.
Mirrors JoinColony/pinningService#23.
We want to put our static assets (.js, .svg, .css, etc) onto IPFS / Swarm. We need to find a good solution on how to do that.
This includes but is not limited to:
UserProfile will contains a user profile description (at least description, name & profile pic).
The UserProfile demonstration will show a few components:
create my profile
if it doesn't exists already,check my profile
that redirects to your profile,profile editor
that lets you edit your profile,profile viewer
that lets you see someone else's profile.The following is an extract from a Slack chat with James:
It would be useful to test something along these lines:
ColonyNetworkClient
(connected to local Ganache)ColonyClient
(with both BYOT and creating a token via the network client)Domain
Skill
Task
What we're aiming to test:
colonyNetwork
)When we can prove all of these things are good to go, then we should be ready to open source colony-js
.
Add PR template to make it easier to read and understand what does it do and which issue is it closing / contributing to.
After #73 is done, this ties everything together and sets up ganache
, trufflepig
and the contracts in the setup phase of jest
🚨 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 it uses your CI build statuses to figure out when to notify you about breaking changes.
Since we didn’t receive a CI status on the greenkeeper/initial
branch, it’s possible that you don’t have CI set up yet. We recommend using Travis CI, but Greenkeeper will work with every other CI service as well.
If you have already set up a CI for this repository, you might need to check how it’s configured. Make sure it is set to run on all new branches. If you don’t want it to run on absolutely every branch, you can whitelist branches starting with greenkeeper/
.
Once you have installed and configured CI on this repository correctly, you’ll need to re-trigger Greenkeeper’s initial pull request. To do this, please delete the greenkeeper/initial
branch in this repository, and then remove and re-add this repository to the Greenkeeper integration’s white list on Github. You'll find this list on your repo or organization’s settings page, under Installed GitHub Apps.
As a developer I want a script to create new components, so that I don't need to copy boilerplate code (or introduce any discrepancies).
e.g.
yarn new-component MyComponent
The above would create a MyComponent
directory, with all of the necessary files and boilerplate code.
Use the wizard to create a Colony. We don't have hi-def screens yet, so this is going to be a bit rough.
Tasks involved:
Integrate: colony-js-client, colony-wallet
Solution A:
Wait for orbitdb-based permission system that should let a user add "admin keys" to their store when they change devices.
Solution B:
Implement a finer permission system: with the ability to add custom rules to orbitdb "accept" operation.
We can have the user generate an orbitdb keypair (keyChild
), and sign this keypair ONCE with their wallet (keyMaster
).
When we generate updates with OrbitDB, we add this signature to the payload.
Our custom rule system could check the keyChild
signature and accept every subsequent updates.
We don't really want to use chimp anymore (because there must be better solutions and because it's strongly tied to meteor). So we have to figure out:
At the moment, the client browser communicates with each pinningService node individually. Manual tests indicate a pinningNode cannot sync the catalog database directly from another pinningNode. This is a hub-and-spoke architecture.
This issue has been resolved for integration tests, but not across machines. Debug the nodejs-nodejs OrbitDB communication issue so we have a graph architecture again.
This issue mirrors JoinColony/pinningService#20.
It looks promising: https://www.cypress.io/
The colony-js client is maintained in a different repository, though its function and completeness is a crucial prerequisite for the colonyDapp. We're tracking responsibilities in this epic.
Add the jest framework to run the colonyBeta unit tests in this environment as well.
To see what happens to your code in Node.js 10, Greenkeeper has created a branch with the following changes:
.nvmrc
with the new onepackage.json
files was updated to the new Node.js versionIf you’re interested in upgrading this repo to Node.js 10, you can open a PR with these changes. Please note that this issue is just intended as a friendly reminder and the PR as a possible starting point for getting your code running on Node.js 10.
Greenkeeper has checked the engines
key in any package.json
file, the .nvmrc
file, and the .travis.yml
file, if present.
engines
was only updated if it defined a single version, not a range..nvmrc
was updated to Node.js 10.travis.yml
was only changed if there was a root-level node_js
that didn’t already include Node.js 10, such as node
or lts/*
. In this case, the new version was appended to the list. We didn’t touch job or matrix configurations because these tend to be quite specific and complex, and it’s difficult to infer what the intentions were.For many simpler .travis.yml
configurations, this PR should suffice as-is, but depending on what you’re doing it may require additional work or may not be applicable at all. We’re also aware that you may have good reasons to not update to Node.js 10, which is why this was sent as an issue and not a pull request. Feel free to delete it without comment, I’m a humble robot and won’t feel rejected 🤖
There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot 🌴
Move over the form fields in core/components/Fields to the dapp. Migrate to flow. Make sure the tests pass.
Like in colony-js we want to add prettier to auto-format our code. This time we might want to include the react related modules.
This issue will track adding a new workflow to Circle CI that will run integration tests.
This should be a separate workflow to add unrelated tests (and additional time) to the normal colonyDapp
workflow
Currently a client can contact the pinningService to receive a database address. But the correct database must be uniquely identified, without knowing the database hash.
More probably the colony address will serve as the catalog _id
, and that document will hold all databases necessary.
This issue tracks JoinColony/pinningService#8.
For that we need to:
When registering a new account at Colony
I want to register with an existing wallet that I own
So that I don't have to create a new address to use Colony
Users should be able to register accounts with Colony using an existing wallet they already have created. We have four supported wallet types:
The workflow changes slightly for each wallet type, but is:
Open Colony
from the homepageNote: we try to do auto detection of a wallet. See #101 for those specs.
If the user is connected to MetaMask, we show this screen:
Clicking Go to Colony
will either:
If the user is not connected to MetaMask, we show this error screen:
A user can use their hardware wallet to register with Colony. If it's connected, we show them a selection screen:
If the wallet is not connected, we show an error screen and prompt them to connect the hardware wallet and try again.
When we are waiting for the balance amounts to load, we will show this loading element:
A user is prompted to input their mnemonic phrase.
If it is not correct, we show this error screen:
A user is prompted to upload a wallet file (.json)
Once uploaded, we allow a user to proceed by clicking Go to Colony
or Remove
the uploaded file.
If it’s an incorrect file type or unrecognized json file, we throw an error:
Back
button takes the user back to the previous screen
The Colony Logo in the top left takes the user back to the homepage (colony.io)
However, suppose pinningNode1 and pinningNode2 are both running, but only pinningNode1 is in direct contact with the client. When pinningNode1 pins a database, client database is added to the catalog, pinningNode2 will see only the catalog update.
This case may arise when JoinColony/pinningService#20 / #95 is resolved. That issue should be resolved first so this is easier to test.
Ensure that when the catalog updates, pinningNode2 pins the new database.
This issue mirrors JoinColony/pinningService#21.
Users are going to create & edit their profiles using orbitdb.
By default OrbitDB uses its own, generated, keystore.
This is limiting:
We want a user to be able to find its own profile,
We want a user to be able to edit its own profile,
We want a user to be able to change device (mobile, another browser, etc) and keep its access.
A solution is to have orbitdb relies on a user personal wallet (unique per user) instead of orbitdb's generated keystore (unique per device).
We are looking for someone to participate in a 1-hour user testing session. You'll need to join a video call and be able to share your screen as you navigate and attempt to complete some tasks on a low fidelity prototype.
We'll be looking for users to speak out loud about their experience while we observe and record the session, asking questions and prompting you to comment on certain features or interface designs.
The Wizard component from the beta is tightly coupled to react-router which is not really necessary. So we'll have to simplify it and integrate it into the dApp
When a user goes offline, their orbitdb store shall remain accessible to other users.
This is likely to be solved with our Pinning Service.
Features:
As a developer I want a productive and intuitive experience while working on Colony, so that I can make more improvements to Colony
For a better documentation and rapid development of our react components.
These tests should probably include:
Add a CI integration using circle v2: https://circleci.com/docs/2.0/hello-world/
This issue is meant to keep track of all the open TODOs which have to be tackled during the initial phase of the realDApp project. Currently this is more like a loose collection / braindump, but will be expanded into proper issues gradually.
We want to find a solution how to best compile, version and deploy the contracts (including uploading the compiled contract files to IPFS / Swarm).
This includes but is not limited to:
Notes:
To 16.x
Watch out for react-router breaking HMR
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.