Azle helps you to build secure decentralized/replicated servers in TypeScript or JavaScript on ICP. The current replication factor is 13-40 times.
For more documentation please see The Azle Book.
Please remember that Azle is in beta and thus it may have unknown security vulnerabilities due to the following:
- Azle is built with various software packages that have not yet reached maturity
- Azle does not yet have multiple independent security reviews/audits
- Azle does not yet have many live, successful, continuously operating applications deployed to ICP
Windows is only supported through a Linux virtual environment of some kind, such as WSL
On Ubuntu/WSL:
sudo apt-get install podmanOn Mac:
brew install podmanIt's recommended to use nvm and Node.js 20:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bashRestart your terminal and then run:
nvm install 20Check that the installation went smoothly by looking for clean output from the following command:
node --versionInstall the dfx command line tools for managing ICP applications:
DFX_VERSION=0.18.0 sh -ci "$(curl -fsSL https://sdk.dfinity.org/install.sh)"Check that the installation went smoothly by looking for clean output from the following command:
dfx --versionIf after trying to run dfx --version you encounter an error such as dfx: command not found, you might need to add $HOME/bin to your path. Here's an example of doing this in your .bashrc:
echo 'export PATH="$PATH:$HOME/bin"' >> "$HOME/.bashrc"npx azle new hello_world
cd hello_world
npm install
dfx start --clean --host 127.0.0.1:8000In a separate terminal in the hello_world directory:
dfx deployIf you are building an HTTP-based canister and would like your canister to autoreload on file changes (DO NOT deploy to mainnet with autoreload enabled):
AZLE_AUTORELOAD=true dfx deployIf you have problems deploying see Common deployment issues.
View your frontend in a web browser at http://[canisterId].localhost:8000.
To obtain your application's [canisterId]:
dfx canister id backendCommunicate with your canister using any HTTP client library, for example using curl:
curl http://[canisterId].localhost:8000/db
curl -X POST -H "Content-Type: application/json" -d "{ \"hello\": \"world\" }" http://[canisterId].localhost:8000/db/updateThere are many Azle examples in the examples directory. We recommend starting with the following:
TODO: INSERTY [] EVENT [] PROPOSAL