An extensive list of developer documentation, tools, and other resources for creating projects on the Internet Computer.
Start Here
- Explore the Internet Computer Ecosystem
- Primer to the Internet Computer: DFINITY Founder and Chief Scientist Dominic Williams gives an overview of the Internet Computer
-
IC Developer Documentation: Learn more about the Internet Computer and how to build dapps on the Internet Computer here
- DFINITY Canister SDK: Download the SDK, which enables you to build and deploy dapps on the Internet Computer
- Quick Start: Get started with a quick hello world example
- Cycles Faucet: Get some free cycles here. Cycles are needed to deploy dapps to the Internet Computer
- Command-line interface (CLI) reference: The DFINITY command-line execution environment (dfx) is the primary tool for creating, deploying, and managing the dapps for the Internet Computer blockchain.
- Internet Computer Interface Specification - A highly technical overview of system-level APIs to the Internet Computer
- Ideas & Challenges
Hackathon Workshop Recordings on Youtube
- Supernova Hackathon | Workshop #1 (v.2): Intro to Building on the Internet Computer - Motoko & Rust
- Supernova Hackathon | Workshop #2 (v.1): Frontends on the Internet Computer
- Supernova Hackathon | Workshop #2 (v.2): Frontends on the Internet Computer
- Supernova Hackathon | Workshop #3 (v.1): Build an Encrypted Notes Dapp
- Supernova Hackathon | Workshop #3 (v.2): Build an Encrypted Notes Dapp
- Supernova Hackathon | Workshop #4 (v.1): Mint an NFT
- Supernova Hackathon | Workshop #4 (v.2): Mint an NFT
- Supernova Hackathon | Workshop #5 (v.1): Build a DeFi Use Case
- Supernova Hackathon | Workshop #6: NFTs on the Internet Computer
- Supernova Hackathon | Workshop #7: Interview with IC Gallery
- Supernova Hackathon | Workshop #8: Fiat On-Ramp with Simplex
- Supernova Hackathon | Workshop #9: Developing Canisters in TypeScript
- Supernova Hackathon | Workshop #10: Uploading and Serving Images on the IC Using Chunking
If You Need Help
- Developer Forum: This is the official DFINITY Developer Forum, where you can find previous threads and help troubleshoot technical questions
Backend
-
Motoko
- Motoko Guide: Motoko documentation
- Overview of Building a Dapp in Motoko: DFINITY Staff Engineer Paul Liu walks us through how to build a dapp in the Motoko programming language
- Mini Motoko Examples: Examples such as a to-do list, maze generator, etc...all written in Motoko!
- Motoko Base Library: The design of Motoko strives to minimize built-in types and operations. Instead of built-in types, Motoko provides a base library of modules to handle many kinds of common operations and make the language feel complete
- Awesome-Motoko: A list of Motoko code and resources curated by the community
- Motoko Playground: A sandbox to write and test Motoko code
- Motoko Bootcamp: Resources and courses from the inaugural community-driven Motoko Bootcamp
-
Rust
- Rust Guide: Introduction to working with rust on the Internet Computer
- Overview of Building a Dapp in Rust: OpenChat Engineer Hamish Peebles walks us through how to build a dapp in the Rust programming language
- Best Practices for Rust Canisters: DFINITY Foundation Engineer Roman Kashitsyn goes over best practices for Rust Canisters
- PDF of slide deck in YouTube video here
-
Candid
- Introduction to Candid: Candid is an interface description language (IDL) for interacting with canisters (also known as services or actors) running on the Internet Computer. It provides a language-independent description of canister interfaces and the data they exchange, with type safety and extensibility
- Candid Concepts
- Candid How-Tos
- Candid Specification and GitHub
-
Other languages (community-driven resources)
- Golang
- Java
- AssemblyScript
- Python
- Azle: Azle is a TypeScript CDK for the Internet Computer that allows you to author your canisters in TypeScript
-
“Databases”
- Mini Map: A simple storage auto-scaling solution across multiple canisters
- IC sqlite: Port of the SQL database engine SQLite to the Internet Computer
- Motoko CRUD: A framework for constructing CRUD services in Motoko for the Internet Computer
- Sudograph: A GraphQL database for the Internet Computer
Frontend
- Deploy a Decentralized React App: Video from Fleek, a company building out tools for web3, which demonstrates how to deploy a React app on the Internet Computer
- From 0 to Mokoto: Deploy Your First Website: Video from a community member demonstrating how to deploy a website on the Internet Computer
- Building a Front-End Dapp on the Internet Computer: Blog post on building a frontend on the Internet Computer
- DFINITY Svelte Motoko Starter Template - Starter code with Internet Identity integration for Svelte framework
- Github - ICP Starter React / Svelte / Vue / Vanilla: Fork this starter code with different frontend frameworks
- VueJS Starter: Integrate VueJS with the DFINITY SDK
- React Starter Template: React template in Github
- Agent JS: A collection of libraries and tools for building software around the Internet Computer, in JavaScript
- Agent Dart: An agent library to build mobile apps to interact with the IC
Mobile Devices
If you want to build a native app for a iOS or Android that can be distributed by the App Stores instead of a web app, then you need to either create a dedicated app for each platform or use a framework to create a universal native app. Here are some suggestions to get you started.
- Flutter (iOS, Android): You can build a universal app with the Flutter framework and the Dart programming language by using the Dart Agent
- Ionic (iOS, Android): Ionic allows you to build your cross-platform app using different JavaScript UI frameworks (React, Vue, Angular). This means you can use agent-js to interact with the IC. Your app will essentially run in a web view but can access the native platform through Capacitor
- React Native (iOS, Android): Although React Native apps are written in JavaScript or TypeScript and DFINITY actively maintains a JavaScript agent, there are a few roadblocks in building IC clients with React Native. Check out a starter project and a description of the limitations. More information can be found in the Developer Forum. If you’re interested in solving these issues, check out the open bounty on ICDevs.
- Java/Kotlin (Android): You can build a native Android app in Java or Kotlin with IC4J. The documentation has a section on Android Development and there are code examples available (Hello World, Loan Client)
- Swift/Objective-C (iOS): Currently there is no agent implementation in Swift or Objective-C.
Identity & Authentication
- Blog Post on Developer Identity
- Internet Identity: Introduction to Internet Identity, which enables you to authenticate securely and anonymously when you access dapps on the Internet Computer
- Internet Identity GitHub
- Auth Client, to use Internet Identity: Example of how to integrate with Internet Identity (authentication method on the Internet Computer)
- Blog post on Integrating with Internet Identity
- Connect2IC: Library & toolkit to streamline integration various authentication methods
Community Wallets & Authentication Providers
General Tutorials
- Coding with Kyle Video Tutorial Series: Learn how to build an IC Avatar dapp with DFINITY Developer Kyle Peacock
-
Udemy Course
- The Complete 2022 Web Development Bootcamp: Sec 34 onwards is a 10+ hour course about building on the IC
- Series on low-level interaction with the IC by Ben Lynn
Code Samples - Github
-
DFINITY Sample Dapps
- NFTs
-
Games
- Reversi: A game of Reversi on the Internet Computer
- Texas Hold Em: A game of Texas Hold Em Poker on the Internet Computer
- DOTS: A game of Snake on the Internet Computer
-
General
- Motoko Packages: Community member created ~20 Motoko packages
- Awesome DFINITY: Example dapps
- Simple Image Upload: Example code for image upload
- Github - Rust Canister Demo: A demo from OpenChat engineer Hamish Peebles
- Randomness Oracle: Community repo demonstrating the Internet Computer’s randomness feature
- Azle Examples
-
Scaling Tutorials and code examples for (horizontal) auto-scaling. See the forum thread for context
- Quickstart Scaling
- Internet Computer Storage Protocol
- Scaled Storage
- IC Storage (Scaled storage approach used by OpenChat)
-
Working with ICP Tokens
- Tutorials: An introduction to the ICP Ledger, Handling ICP Payments (Rust)
- Invoice canister: Interface to simplify payments on the IC
Blogs
- IC Developer Blog: DFINITY Developer Kyle Peacock has a helpful blog with tutorials & best practices
Tools
- The Internet Computer Dashboard: A dashboard / explorer for the Internet Computer network
- Fleek: Netlify for the open web created by Harrison Hines, former Consensys alum, & his team
- Plug: Browser-based wallet extension created by Harrison Hines, former Consensys alum, & his team
- Vessel Package Manager: A simple package manager for the Motoko programming language
- Motoko VS Code Extension: Syntax highlighting for the Motoko programming language in VS Code
- Cycles Wallet: A wallet UI for cycles (equivalent of gas with Ethereum)
Promotions
- IC Dev PR Handbook: An opportunity to have your product be promoted by DFINITY
Updated