Brainstorm: UX products that can be built on top of Recipes
Starting a brainstorm here for how we can extract even more value out of recipes. such a great knowledge base!
From brainstorm with @JoshOrndorff :
- Substrate Boxes: like truffle boxes, basically boilerplates that takes a combination of recipes and that already works out of the box for people. Devs can download boxes with one cli cmd, and have a custom blockchain already working. Insight here is that ppl want working code.
- Substrate Playground image for each recipe, that builds and lets ppl interact in online IDE. Insight here is that ppl don't wanna set up their own dev env.
- Each recipe could have an accompanying tutorial video (just 1 -5 min). Insight here is that ppl prefer to watch than to read.
Since this is expanded into several ideas, we're ideating it in notion, see: https://www.notion.so/paritytechnologies/Substrate-CLI-a7065cfc46e744d98e962202d980ec7d
repasting here for externals:
Rough Idea for the CLI part
A user-friendly CLI to simplify substrate development, testing and deployment. Think Truffle Suite, or Ruby-on-Rails CLI scaffolding tools. The point isn't to create new features, but to expose existing Recipes, Marketplace, Playground, JS, cargo-remote, etc. making it easier for users to use those awesome tools.
The Basics
Scaffold New Projects: **sub scaffold [-b] project_name**
- Function: Initializes a new Substrate project from the latest Substrate template, or if
-bfrom a pre-packaged component containing more boilerplate. - Boilerplates can come from (1) Substrate recipes and (2) Playground (3) just a clone url (?), e.g. Truffle Boxes
- Examples:
sub scaffold my_project,sub scaffold -b kitties,sub scaffold -b utxo,sub scaffold -b https://github.com/user/repo - Bonus (freebie in terms of implementation):
sub tutorial tutorial_name, downloads the starter code for users during a workshop.
Add Pallets: **sub add [-n] pallet_name**
- Function: extends the current project with an existing pallet from Substrate
- Example:
sub add currency,sub remove currency,sub add -n my_pallet, etc.
Use a console: sub console --mode
- Function: a console to interact with chain state. Maybe let users add new genesis specs, and other configs here.
Automate tests: **sub test filename.rs**
- Function: automatically scaffold (-n), run tests for new runtimes.
Simplify builds: sub build [-r] --release
- Maybe lets users build remotely, speeding up development time e.g. https://github.com/sgeisler/cargo-remote
- Maybe keeps track of build version history
Configurations: sub config -...
- Not sure what should be configured in our case... deployment env? I'm sure there are a ton of things.
Version Management: sub version ...
- Automate what's currently in scripts/init.sh, etc.
- Maybe shows breaking dependencies, other dependency management stuff.
Later
- All the validator features, managing/running nodes, etc.
- can init a custom UI via CLI
Native app to manage Substrate projects (inspired by Truffle Suite)
- handle state migrations