Level 1: Space cadet
1.1 Exploring a live demo: Before you begin developing your own dapps, let's explore a live, deployed canister that utilizes the Motoko playground through the
dfx deploy --playground
command. This module covers:- Overview of Motoko Playground.
- An overview of the
dfx deploy --playground
command. - Deploying a canister to Motoko Playground using
dfx
. - Interacting with the canister via the CLI.
- Interacting with the canister via the Candid interface.
1.2 Motoko level 1: To develop your own dapp, you first need to cover the fundamentals of writing Motoko code. This module covers:
- Basic concepts and terms.
- Motoko syntax.
- Using the base library.
- Declarations and expressions.
- Defining an actor.
- Values and evaluation:
- Primitive values.
- Non-primitive values.
- Printing values.
- Passing text arguments.
1.3 Developing your first dapp: Now you're ready to develop your first dapp on the Internet Computer! This module covers:
- Creating a new project.
- Reviewing the project's file structure.
- Writing the backend canister code.
- Creating an actor.
- Defining the
getQuestion
method. - Query calls vs. update calls.
- Creating a data structure to store the data.
- Importing additional dependencies.
- Declaring the
votes
variable. - Declaring the
getVotes
method. - Declaring the
votes
method. - Declaring the
resetVotes
method. - Final code.
- Deploying the dapp locally.
- Adding pre-developed frontend code.
- Re-deploying the dapp.
1.4 Acquiring and using cycles: To deploy dapps on the mainnet, you'll need to acquire cycles. This module covers:
- Overview of cycles.
- Creating a developer identity.
- Acquiring cycles using a cycles coupon.
- Converting ICP tokens to cycles.
1.5 Deploying canisters: Once you have acquired some cycles, you can deploy our dapp to the mainnet. This module covers:
- Deploying to the mainnet.
1.6 Managing canisters: Once your dapp is deployed on the mainnet, you need to learn how you can manage the canister. This module covers:
- Obtaining a canister's ID.
- Obtaining canister information.
- Adding an identity as a controller of a canister.
- Managing the running state of a canister.
- Checking the cycles balance of a canister.
- Topping up a canister.
- Getting cycles back from a canister.
- Setting the canister's freezing threshold.
- Deleting a canister.