Skip to content

Commit

Permalink
Merge pull request #3637 from dfinity/add-icp-ninja
Browse files Browse the repository at this point in the history
add: ICP Ninja dev doc
  • Loading branch information
jessiemongeon1 authored Oct 23, 2024
2 parents 8cbfe18 + 48e9fd7 commit 767949f
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 1 deletion.
14 changes: 13 additions & 1 deletion docs/developer-docs/developer-tools/dev-tools-overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,11 @@ Additionally, there are several community-developed and maintained agents:

- [Canpack](/docs/current/developer-docs/developer-tools/off-chain/canpack): A tool used to facilitate communication between canisters written in different languages; currently supports calling Rust crates from Motoko canisters.

## On-chain libraries
### Canbench

- [Canbench](/docs/current/developer-docs/developer-tools/off-chain/canbench): A Rust crate that provides canister benchmarking tooling so developers can gain an insight into how their canister uses memory, instructions, and other resources.

## Onchain libraries

### Canister development kits (CDKs)

Expand All @@ -111,6 +115,14 @@ There are several community contributed and maintained CDKs for languages such a
The IDEs listed below are not the only supported IDEs; any IDE can be used to develop canister code.
:::

### ICP Ninja

ICP Ninja is a web-based IDE designed specifically for building and deploying ICP canisters. ICP Ninja enables you to write and deploy code directly to the mainnet from the browser. Users can select from several example projects to get started building. Projects deployed through ICP Ninja are available for 20 minutes unless redeployed.

- [ICP Ninja homepage](https://icp.ninja/).

- [ICP Ninja documentation](/docs/current/developer-docs/developer-tools/ide/icp-ninja).

### Gitpod

Gitpod is a cloud development environment that is able to run within a web browser. Gitpod can be configured to run `dfx` and a local replica instance to support canister development, and there are several example canister projects have been configured to run in Gitpod. This IDE provide a simple and easy way to get started developing on ICP without downloading any tools or setting up an environment.
Expand Down
34 changes: 34 additions & 0 deletions docs/developer-docs/developer-tools/ide/icp-ninja.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
keywords: [beginner, ide, tutorial, icp ninja, icp ide]
---

import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
import '/src/components/CenterImages/center.scss';

# ICP Ninja

<MarkdownChipRow labels={["Beginner", "IDE", "Tutorial"]} />

## Overview

[ICP Ninja](https://icp.ninja/) is a web-based code editor and deployment environment for ICP canister smart contracts. Users can choose from a gallery of example projects, then edit and deploy the project directly to ICP without downloading `dfx` or obtaining cycles. Projects will be live for 20 minutes unless redeployed. The deployment timer resets on each deployment.

Currently, ICP Ninja supports writing and deploying Motoko backend canisters and React frontend canisters.

## Limitations

ICP Ninja is currently undergoing active development and currently implements a few limitations that should be noted. These limitations will be removed and changed as the platform develops.

- **Chain Fusion**: ICP Ninja currently does not support ICP's Chain Fusion features, such as signing and submitting transactions on other chains or making calls to the EVM RPC canister.

- **System calls**: ICP Ninja projects cannot make calls that require cycles, including inter-canister calls or system API calls such as `ic0.call_cycles_add`, `ic0.call_cycles_add128`, `ic0.cycles_burn128`, `sign_with_ecdsa`, `sign_with_schnorr`, and `http_request`.

- **Supported packages**: Only certain npm packages are supported by ICP Ninja projects. The `package.json` file in each project contains the supported list. This list cannot be edited.

- **Project structure**: Projects created and deployed on ICP Ninja must follow a specific project structure. They can only contain two canisters, a backend and a frontend. The backend canister can only use a single source code file, and the frontend source code folder may only contain one subfolder, `frontend/src`.

## Developing ICP Ninja projects with dfx

To continue developing an ICP Ninja project or to add features to the project that exceed the IDE's current limitations, you can download the project's files and use `dfx`. From the ICP Ninja IDE, select 'Download files' to download a `.zip` folder containing the project's code files.

Then, read the `BUILD.md` file included in the downloaded files. It contains further instructions for downloading and using `dfx` with your ICP Ninja project.
1 change: 1 addition & 0 deletions sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -545,6 +545,7 @@ const sidebars = {
type: "category",
label: "IDE",
items: [
"developer-docs/developer-tools/ide/icp-ninja",
"developer-docs/developer-tools/ide/vs-code",
"developer-docs/developer-tools/ide/playground",
"developer-docs/developer-tools/ide/gitpod",
Expand Down

0 comments on commit 767949f

Please sign in to comment.