Civil is a decentralized and censorship resistant ecosystem for online Journalism. Read more in our whitepaper.
WIP Civil DApp - Read Documentation and Interact with Contracts and tools at our DApp, hosted for your convenience. This DApp and associated contracts are a Work In Progress and contracts are deployed on the Rinkeby testnet. If you would like some test CVL to try out the DApp, please ask in our Gitter room and we can send you some.
This repository contains all of the open-source Civil tools and packages written in Typescript. We hope that those tools will be useful for creation of interesting applications on top of the ecosystem as well as be useful in any project in the Ethereum space.
Most of the packages require additional typings for external dependencies. You can include those by prepending @joincivil/typescript-typings package to your typeRoots config.
"typeRoots": ["node_modules/@joincivil/typescript-typings/types", "node_modules/@types"],
Package | NPM | Description |
---|---|---|
@joincivil/core |
JS library for interacting with Civil ecosystem | |
@joincivil/tslint-rules |
Linting rules for Civil's Typescript packages | |
@joincivil/utils |
Utilities shared between Civil projects used during runtime | |
@joincivil/typescript-types |
Types used in multiple Civil packages | |
@joincivil/typescript-typings |
Typescript type roots for external projects and internal modifications | |
@joincivil/ethapi |
An abstraction of Ethereum communication |
Package | Description |
---|---|
@joincivil/contracts |
Smart-contracts needed for the Civil's protocol |
@joincivil/dapp |
DApp for interacting with the Civil contracts |
@joincivil/dev-utils |
Utilities needed for the proper working of the mono-repo packages, builds and tests |
@joincivil/debug-ui |
WIP: Minimal website to monitor, observe and debug the protocol and all the utilities and packages of the ecosystem |
Civil's ecosystem is free and open-source, we're all part of it and you're encouraged to be a part of it with us.
Best place to start hacking would be to use the @joincivil/core
and build some application on top of the protocol.
If you're itching to delve deeper inside, help wanted and good first issue labels are good places to get started and learn the architecture.
This project is using yarn workspaces. They require yarn >= 1.0
to work properly.
Set up all dependencies:
from the root directory:
yarn install
Build all packages in the monorepo:
yarn build
Turn on file-watch mode and rebuild most of the files on change:
yarn watch
Check all packages for linting errors:
yarn lint
Tests in Civil's ecosystem require the use of Ganache, Ethereum's development test network, spin it in a seperate terminal:
yarn ganache
Finally run all the tests in the main repository:
yarn test
We've added a helper command to assist you if you want to develop using the front-end and a local ganache. Just 3 simple commands.
First, however, you may want to add your own address (e.g. MetaMask account) to our config file so that you are distributed tokens/ETH properly and change the Appellate and GovernmentController addresses. This is especially useful if your MetaMask account is not the same as one of you ganache accounts (all ganache accounts are given tokens by default). Config file can be found at packages/contracts/conf/config.json
.
From the root directory:
yarn ganache
Once that is running, in another terminal, from the root directory:
yarn preparelocally
After that completes:
cd packages/dapp
yarn start
Now you have the dapp front-end running at localhost:3000
. Make sure to select localhost 8545
in metamask to interact with the dapp.
Civil's monorepo is using lerna to easily manage the monorepo structure. Two helper yarn scripts are provided for your convenience.
To run the supported lerna version:
yarn lerna
To run scripts in all packages in the monorepo:
yarn lerna:run
To refresh the repository state as much as possible run:
yarn clean && yarn lerna clean --yes && rm -r node_modules && yarn install
🐙 was here.