# Polkadot CLI
CLI name: `dot`
Example command:
```shell
dot serve
```
Will spin up Polkadot Solidity development environment locally.
## CLI Purpose
Develop and deploy on Polkadot.
# Milestone 1
There is a strong emphasis on the outcome of this milestone being a production-ready deployment of a Solidity contract to Polkadot Hub on Polkadot.
### Spin up Polkadot Solidity development environment
- (Relay Chain + Polkadot Hub + Tangerine)
- Should be cross-chain compatible
- Should be configurable e.g. Polkadot Hub + Parachain A + Parachain B
- Define our own template that can be used to spin up networks which ultimately translates to a Zombienet network configuration behind the scenes
- Allow for multiple Solidity contracts to be pre-deployed for development purposes
- Deploy a Solidity contract to Polkadot Hub (using Talisman)
- Deploy to Westend Polkadot Hub
- Deploy to Polkadot Hub on Polkadot
### Education
- Workshops
- How to develop & deploy a Solidty smart contract on Polkadot
- How to do cross-chain Solidity-to-Solidity calls
- e.g. Polkadot Hub <--> Tangerine
- How to use the Polkadot Hub precompiles
## Technical
- Strong emphasis on unit testing and e2e test coverage
- Use [Codecov](https://codecov.io) and maintain above 85% percent coverage.
- Use Rust, use omni-node, look into zombienet-sdk, chain-spec-builder
- Adhere to best practices
- `master` branch protected
- Cannot directly commit to `master`
- Pull request everything
- 1 member code review required for PR to be merged
- I (bruno) would like to review all PRs in the early stages of development to ensure we coding and architecting according to best practices
- Rust Docs for code
- The CLI should be built in the form of an SDK so that later we can slap a UI over it and have developers build and deploy on Polkadot using the UI
### TODO
- Compile a Solidity contract from the command-line using revive compiler
- Define CLI syntax for milestone 1
```
dot ...
```
Will spin up the Polkadot Solidity development enviroment.
- Use [shuttle.dev](https://www.shuttle.dev) and other well-established CLI’s as inspiration for DevX and syntax
### Tangerine
A PVM/Solidity development parachain with useful, experimental features e.g. ISMP
- One main purpose of Tangerine will be to test cross-chain Solidity-to-Solidity use cases.
## Future
- CLI will widen its scope to include JAM dApp/service development and deployment.
- The CLI will have templates for unique Polkadot Solidity use cases and JAM services.
- template generation can either be static
- or preferably leveraging AI to generate the templates
## Assumptions
- Developers will want to build on Polkadot
- Building a blockchain is *more* rare
- Developers want to quickly build on Polkadot
- Developers will want to spin up a development network to deploy Solidity contracts to
- Developers will want to spin up Polkadot Hub + other parachains to deploy Solidity contracts that leverage cross-chain capabilities
- Developers will want to deploy a Solidity contract on Polkadot
- Developers will want to develop JAM services
- Developers will want to deploy JAM services
## Further development of Tangerine
### Governance
- A governance chain that dApps can leverage to build their DAOs.
- A UI to instantiate your own DAO, pay fee, interact with the DAO
- Teams can pick different categories of DAOs
- Collectives / Membership
- Gov v1
- Gov v2
- PVM/Solidity layer for customization of DAO
- “Hooks” for developers to add customization to DAO logic
- The Tangerine core team can add additional logic
- Assets Pallet
- e.g. Mint asset on Polkadot Hub, make it accessible on this chain for voting purposes
## Polkadot Dev CLI
CLI name: `core`
Example syntax
```shell
core lint
```
Will lint the project in the current directory
## CLI Purpose
Core protocol development whether it is Polkadot SDK protocol development, parachain runtime development, pallet development, or JAM protocol development.