Build distributed, scalable, edge based applications fast.
Make sure you have npm
installed. We recommend a version 18+
the fastest way to getting started with npm is installing it into your system using nvm
.
Where ever you are, run npx blessnet
to get context feedback. If calling from inside a project folder, information about the state of the project will be returned.
Otherwise the guided initializer will be called.
npx blessnet help
will always provide more information.
npx blessnet
- First launch you will be asked to install the
BLESS Runtime
.
➜ npx blessnet
BLESS environment not found. Do you want to install it? (yes/no): y
✔ Installation successful.
BLESS environment installed successfully.
You can now use the `blessnet` command.
Command | Description | Subcommands |
---|---|---|
init |
Initialize a new project | - |
deploy |
Deploy your project | - |
build |
Build the project | --debug |
wallet |
Manage Solana wallets | create , info |
preview |
Preview your project | serve |
manage |
Manage your project | type [newType] |
account |
Manage your account | login , logout |
registry |
Register a worker node with your wallet | stake , deactive ,withdraw ,info |
Create a new project with the name foo
, the project will have a folder created called foo
npx blessnet init foo
cd foo
flowchart TD
%% Top Layer: User Interface
A["User Terminal (CLI)"]:::ui
%% CLI Entry Point
B["CLI Entry Point (index.js)"]:::entry
A -->|"invokes"| B
%% Middle Layer: Command Processing
subgraph "Commands"
C1["init.js — Project Initialization"]:::command
C2["deploy.js — Handles Deployments"]:::command
C3["build.js — Build Tool"]:::command
C4["account.js — User Account Management"]:::command
C5["wallet.js — Wallet Management"]:::command
C6["createWallet.js — Create Wallet"]:::command
C7["listWallets.js — List Wallets"]:::command
C8["manage.js — Application Management"]:::command
C9["preview.js — Deployment Preview"]:::command
C10["walletInfo.js — Wallet Information"]:::command
end
B -->|"routes command"| C1
B -->|"routes command"| C2
B -->|"routes command"| C3
B -->|"routes command"| C4
B -->|"routes command"| C5
B -->|"routes command"| C6
B -->|"routes command"| C7
B -->|"routes command"| C8
B -->|"routes command"| C9
B -->|"routes command"| C10
%% Lower Layer: Utility Libraries
subgraph "Utility Libraries"
D1["config.js — Configuration Management"]:::lib
D2["file-utils.js — File Operations"]:::lib
D3["manifest.js — Manifest Handling"]:::lib
D4["git.js — Git Operations"]:::lib
D5["invoke.js — Deployment Invocation"]:::lib
D6["npm.js — npm Interactions"]:::lib
D7["server.js — Server Communication"]:::lib
end
%% Integration from Commands to Libraries
C1 -->|"uses"| D1
C1 -->|"uses"| D2
C2 -->|"uses"| D5
C2 -->|"uses"| D7
C3 -->|"uses"| D2
C4 -->|"uses"| D1
C5 -->|"uses"| D6
C5 -->|"integrates"| D1
C6 -->|"uses"| D1
C7 -->|"uses"| D2
C8 -->|"uses"| D3
C9 -->|"uses"| D7
C10 -->|"uses"| D1
%% External Services
E1["npm/npx"]:::external
E2["Solana Network"]:::external
D6 -->|"triggers"| E1
C2 -->|"invokes"| E1
C5 -->|"integrates"| E2
%% CI/CD & Testing
subgraph "CI/CD & Testing"
F1["GitHub Workflows (npm.yml)"]:::ci
F2["Test Suite (invoke.test.js)"]:::ci
end
B -->|"CI integration"| F1
F1 -->|"triggers tests"| F2
%% Example Assets
G["Example Asset (hello_test.wasm)"]:::asset
%% Styles & Classes
classDef ui fill:#f9f,stroke:#333,stroke-width:2px;
classDef entry fill:#ccf,stroke:#333,stroke-width:2px;
classDef command fill:#cfc,stroke:#333,stroke-width:2px;
classDef lib fill:#fcf,stroke:#333,stroke-width:2px;
classDef external fill:#cff,stroke:#333,stroke-width:2px;
classDef ci fill:#ffc,stroke:#333,stroke-width:2px;
classDef asset fill:#efe,stroke:#333,stroke-width:2px;
%% Click Events for CLI Entry Point
click B "https://github.com/blessnetwork/blessnet/blob/main/index.js"
%% Click Events for Command Modules
click C1 "https://github.com/blessnetwork/blessnet/blob/main/commands/init.js"
click C2 "https://github.com/blessnetwork/blessnet/blob/main/commands/deploy.js"
click C3 "https://github.com/blessnetwork/blessnet/blob/main/commands/build.js"
click C4 "https://github.com/blessnetwork/blessnet/blob/main/commands/account.js"
click C5 "https://github.com/blessnetwork/blessnet/blob/main/commands/wallet.js"
click C6 "https://github.com/blessnetwork/blessnet/blob/main/commands/createWallet.js"
click C7 "https://github.com/blessnetwork/blessnet/blob/main/commands/listWallets.js"
click C8 "https://github.com/blessnetwork/blessnet/blob/main/commands/manage.js"
click C9 "https://github.com/blessnetwork/blessnet/blob/main/commands/preview.js"
click C10 "https://github.com/blessnetwork/blessnet/blob/main/commands/walletInfo.js"
%% Click Events for Utility Libraries
click D1 "https://github.com/blessnetwork/blessnet/blob/main/lib/config.js"
click D2 "https://github.com/blessnetwork/blessnet/blob/main/lib/file-utils.js"
click D3 "https://github.com/blessnetwork/blessnet/blob/main/lib/manifest.js"
click D4 "https://github.com/blessnetwork/blessnet/blob/main/lib/git.js"
click D5 "https://github.com/blessnetwork/blessnet/blob/main/lib/invoke.js"
click D6 "https://github.com/blessnetwork/blessnet/blob/main/lib/npm.js"
click D7 "https://github.com/blessnetwork/blessnet/blob/main/lib/server.js"
%% Click Events for CI/CD & Testing
click F1 "https://github.com/blessnetwork/blessnet/blob/main/.github/workflows/npm.yml"
click F2 "https://github.com/blessnetwork/blessnet/blob/main/test/invoke.test.js"
%% Click Event for Example Assets
click G "https://github.com/blessnetwork/blessnet/blob/main/fixtures/hello_test.wasm"
.
├── bls.toml # project config
├── index.ts # entry
├── package.json # javascript packages
├── tsconfig.base.json # typescript configs
├── tsconfig.debug.json # typescript configs
└── tsconfig.release.json # typescript configs
To deploy the application, cd into the directory and run
npx blessnet deploy
WARN
Install blessnet
globally for use without npx.
npm i -g blessnet
npx blessnet wallet list