The Internet Computer is a public blockchain that hosts smart contracts that run at web speed, can serve web from cyberspace, run efficiently, and can scale within an environment that has unbounded capacity. Smart contracts are a profoundly new and superior form of tamperproof and unstoppable software. They can imbue systems and services with new properties, enabling the reimagination of websites, systems, internet services and finance.
- Courses, Tutorials and Samples
- Starters
- Client Libraries (Agents)
- Canister Development Kits (CDKs)
- Dapp Development Platforms and Frameworks
- Developer Tooling
- Motoko
- Candid
- Storage and Databases
- Fungible and Non-fungible Tokens (NFTs)
- Messaging
- Decentralized Finance
- DAO Frameworks
- Game Development
- Wallets and Authentication
- Dashboards, Explorers and Registries
- Crosschain Interoperability
- How it works / Deep dives
- Blogs
- Communities and Communication
- Bounties and Grants
- Motoko Bootcamp #1 - Lectures and materials for the first Motoko Bootcamp in 2022.
- Motoko Bootcamp #2 - Lectures and materials for the second Motoko Bootcamp in 2023.
- The Complete Web Development Bootcamp - Udemy course with a complete section on web3 development using the Internet Computer.
- Web3, Blockchain and the Internet Computer - Youtube series (excerpt from The Complete Web Development Bootcamp).
- DFINITY Examples Repo - Code samples from DFINITY.
- Internet Computer Developer Hub - The main entry point to documentation, guides and references.
- Internet Computer Sample Dapps - DFINITY-maintained and community-contributed samples and tutorials.
- Considerations for NFT Developers - Discussion of best practices for NFT developers.
- Deploy Your First dApp on the IC in 10 Minutes! - Getting started video tutorial.
- Frontends on the Internet Computer - Video tutorial on hosting frontends using the asset canister.
- Intro to Building on the Internet Computer - Video introduction to building on the IC with Motoko and Rust.
- Languages on the IC - Guide on how to select the programming language for the IC.
- Make Oracles Obsolete in under 5 Minutes - Short video tutorial on HTTPS Outcalls in Motoko.
- Rust + React (Typescript) + Internet Identity - Tutorial on setting up a project with Rust, React and Internet Identity.
- Access control - Demonstrator for access control patterns on the IC.
- Backup and Restore - Tutorial with code on backup and restore of canister state.
- Canister guard in Rust - Tutorial on the guard pattern for access control.
- Code native Bitcoin (2nd part) - Video tutorials on how to use the native Bitcoin integration.
- Environments - How to work with different environments (dev/staging/prod).
- Hosting ERC 721 metadata - Tutorial on hosting metadata and assets for ERC-721 NFTs on the IC.
- Migration from Motoko to Rust - How to Migrate Canister Smart Contracts from Motoko to Rust.
- Converting ICP into Cycles - How to programmatically convert ICP into Cycles in NodeJS.
- Social Platform Previews and SEO - Tutorial on how to configure dapps for social platform previews and SEO.
- create-ic - A simple command line tool to quickly create projects for the IC.
- create-ic-app - Modern, unopinionated templates for React, Vue & Svelte powered by Vite.
- ic-rust-starter - Starter for a Rust backend-only canister project.
- vite-react-motoko - Full-Stack React/Motoko starter with live reload.
Agents facilitate the interaction from clients with canisters on the Internet Computer. If you want to contribute an agent implementation checkout out this Grant RFP.
- agent-js - Collection of libraries to interact with the IC using JavaScript.
- ic-js - Collection of libraries for interfacing with core canisters on the Network Nervous System (NNS).
- icblast - Communicate with IC directly using NodeJS. Automatic service discovery.
- node-ic0 - The ic0 package is a simple, straightforward way to interact with canisters running on the IC.
- agent-rs - Collection of libraries and tools for interfacing with the IC using Rust.
- dfx - Commandline tool to interact with the IC written in Rust.
- ic-py - Library for interfacing with the IC using Python.
- agent_dart - Framework to build mobile applications.
- ic_dart_tools - Tools supporting Flutter on the web.
- agent-go - Libraries for interfacing with the IC using Go.
- ic-go - Libraries for interfacing with the IC using Go.
- agent-unity - Wrapper of agent-rs to be used in unity projects.
- ICP.NET - Native Implementation in C# (Unity compatible).
- ic4j-agent - Libraries for interfacing with the IC using Java (Android compatible).
- CDK Framework - Framework to build CDKs which has been used for Azle and Kybra.
- Motoko - Simple high-level language for writing canisters.
- canister-sdk - SDK for writing and testing canisters for the Internet Computer in Rust.
- ic-cdk - Rust CDK maintained by DFINITY
- Azle - TypeScript CDK.
- Kybra - Python CDK.
- cdk-as - AssemblyScript CDK.
- Ego - Framework to build wallet apps, i.e. user-controlled canisters.
- Juno - Build Web3 apps like it's Web2.
- Developer Tooling Landing page - Overview of tooling in the Internet Computer ecosystem.
- IC Inspector - Chrome extension to decode IC requests and responses.
- ic-nix - Build IC projects with Nix.
- canister-profiling - Code & scripts for collecting performance data for canisters.
- ic-repl - A REPL environment to communicate with canisters. Allows to write E2E integration tests.
- ICPipeline - CI/CD framework to simply IC release management.
- Launchtrail - Simple and Secure Release Management for Internet Computer Projects.
- Canistergeek - Open-source tool to track your project canisters cycles and memory status.
- Canister monitoring - Example of using Prometheus to collect metrics from a canister.
- ic-blackhole - Canister to publicly expose canister status information.
- Metrics encoder - Library to encode metrics in Prometheus text exposition format.
Motoko is a safe, simple, actor-based programming language for authoring Internet Computer (IC) canister smart contracts.
- Awesome Motoko - Awesome list focused on Motoko.
- Blocks - Online low-code editor for Motoko.
- Embed Motoko - Embed an interactive Motoko code snippet on your website.
- Motoko Formatter - A configurable Prettier plugin for Motoko.
- Motoko GitHub Repository - The home of the Motoko language.
- Motoko Playground - An online playground environment for Motoko.
- Motoko VS code - Motoko language support for Visual Studio Code.
- Motoko.js - Compile and run Motoko in Node.js and the browser.
- MOPS - Package manager for Motoko with fully on-chain package registry.
- Vessel - Package manager for the Motoko programming language.
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 GitHub Repo - The home of Candid.
- Candid UI - Canister generates a front-end UI for any canister.
- didc - A multi-purpose tool for Candid.
- idl2json - Command line tool for converting Candid to JSON.
- Intellij Candid Plugin - A Candid language plugin for editing .did files.
- cdk-as candid - AssemblyScript library of Candid.
- ICP.NET candid - C# library of Candid.
- candid_dart - Dart library of Candid.
- ic_tools_dart - Dart library of Candid.
- ic-elm - A template for using Elm to develop frontend user interface for the Internet Computer.
- haskell-candid - Haskell library for Candid to Haskell.
- ic4j-candid - Java library for Candid.
- @dfinity/candid - JavaScript and TypeScript library for Candid.
- candid-kt - Kotlin library for Candid.
- motoko_candid - Library that enables encoding/decoding of bytes to candid values.
- CanDB - Flexible, performant, and horizontally scalable non-relational multi-canister database built in Motoko.
- ic-sqlite - SQLite on the IC.
- ic-stable-memory - Stable memory collections for Rust.
- stable-structures - A collection of scalable and upgrade-safe data structures for Rust maintained by DFINITY.
- Sudograph - A GraphQL database for the IC.
- DIP20 - Fungible token standard inspired by the ERC20 standard.
- DIP721 - NFT standard inspired the ERC721 standard.
- EXT - The extendable token standard inspired by ERC1155.
- Origyn NFT - Origyn NFT standard.
- Messity - An open and nonproprietary decentralized messaging protocol.
- OpenChat - An open chat app.
- W3NS - An Interner Computer service for notifications.
- DeSwap Orderbook - An Order Matching Engine Module for Dex in Motoko.
- Spinner - Private transactions using zkSNARKs.
- ICTC - Distributed transaction framework for DeFi applications.
- Exchange Rate Canister - Oracle service for cryptocurrency and fiat currency exchange rates.
- Axon - A multi-user, multi-neuron management canister.
- Service Nervous System - Framework inspired by the Network Nervous System.
For Unity-compatible client libraries, see C# agents.
- WebGL Sample - Example of how to host a WebGL game on the IC.
- AstroX Me - Canister-based mobile/web multi-chain wallet.
- Bitfinity - Chrome extension.
- Internet Identity - Pseudoymous authentication system for the Internet Computer.
- NFID - Digital identity for signing in to applications privately and securely.
- NNS Dapp - Stake ICP in neurons, participate in governance and decentralization sales.
- Plug - Chrome extension and mobile wallet.
- Stoic - Web wallet.
- connect2ic - A frontend auth library & toolkit for the Internet Computer.
- Canlista - Canister registry.
- Cyql - Curated project registry.
- ICLighthouse Explorer - Explorer.
- ICSCAN - Explorer.
- Internet Computer Dashboard - Live stats and explorer.
- Internet Computer Ecosystem Showcase - Curated project registry.
- Kinic - Front-end search engine.
- Bitcoin Integration - Landing page of the direct integration with the Bitcoin network.
- Chain-key ECDSA - Tech that allows creating transactions targeting various chains from canisters on the Internet Computer.
- EVM Utility Canister - Utility canister to create and parse EVM-compliant transactions.
- ic-web3 - RPC client for canisters on the Internet Computer to access EVM networks.
- No key wallet - Example project of a canister-based Ethereum wallet.
- Omnic - Cross-chain messaging protocol to connect EVM-compatible chains via the Internet Computer.
- Orally - Cross-chain oracle factory built on HTTPS Outcalls and Chain-key ECDSA.
- Terabethia - Bridge and communication protocol between Ethereum and the Interner Computer.
- Internet Computer for Geeks - Whitepaper written by the DFINITY team.
- Internet Computer Wiki - General knowledge resource about the Internet Computer.
- How it works - Learn how the IC realizes the vision of the World Computer.
- B.Lynnity - Ben Lynn's Blog about development on the IC using C.
- David dal Busco's blog - Blog with many hands-on articles on IC development.
- ICP Analysis - Kyle Langham's writings about data analysis on the IC ecosystem.
- Joachim Breitner's blog - Articles on IC development and Candid.
- Kyle Peacocks's blog - Notes on IC development and more.
- mmapped - Roman Kashitsyn's blog about IC internals and development.
- DFINITY Developer Forum - Main forum about the Internet Computer.
- IC Developer Community Discord - Developer-oriented community Discord.
- ICP Discord - Multi-language server for the broader community.
- ICP League - Fostering a world-class community for Internet Computer Ecosystem.
- Internet Computer Academy - Open-source and community-driven knowledge base about the IC.
- DFINITY Developer Grants and Bounties / Requests and Discussions - Developer Grant and Bounty program provided by the DFINITY foundation.
- Requests for Startups - A list of ideas for startups to build on the Internet Computer.
- ICDevs Bounties - Code bounties by the ICDevs organization.
- Video: Overview of the Developer Grants Program - A video that explains the objective and the process of the DFINITY Developer Grants program.