• Stars
    star
    742
  • Rank 61,120 (Top 2 %)
  • Language
  • License
    Creative Commons ...
  • Created over 4 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A curated list of awesome projects and resources relating to the Internet Computer Protocol

Awesome Internet Computer Awesome

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.


Contents

Courses, Tutorials and Samples

Courses

Tutorials and Samples

Simple / Getting started

Advanced

Starters

  • 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.
  • nextjs-ic-starter - Next.js Internet Computer Starter Template
  • IC in Dev Container - Run a local replica inside a Docker container with NNS in VS Code or GitHub Codespaces

Client Libraries (Agents)

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.

JavaScript/TypeScript

  • 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.

Rust

  • 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.

Python

  • ic-py - Library for interfacing with the IC using Python.

Dart/Flutter

  • agent_dart - Framework to build mobile applications.
  • ic_tools - IC Tools supporting Dart & Flutter on the Web and Linux.
  • ic_tools_web - Library with specific tools for Flutter on the Web.

Go

  • agent-go - Libraries for interfacing with the IC using Go.
  • ic-go - Libraries for interfacing with the IC using Go.

C#

  • agent-unity - Wrapper of agent-rs to be used in unity projects.
  • ICP.NET - Native Implementation in C# (Unity compatible).

C++

Java

  • ic4j-agent - Libraries for interfacing with the IC using Java (Android compatible).

Ruby

  • ic_agent - Basic modules to interact with the IC using Ruby.

Canister Development Kits (CDKs)

  • CDK Framework - Framework to build CDKs which has been used for Azle and Kybra.

Motoko

  • Motoko - Simple high-level language for writing canisters.

Rust

  • canister-sdk - SDK for writing and testing canisters for the Internet Computer in Rust.
  • ic-cdk - Rust CDK maintained by DFINITY

JavaScript/TypeScript

  • Azle - TypeScript CDK.

Python

Solidity

  • bitfinity-evm - Provides the ability to create EVM-based smart contracts.

C/C++

AssemblyScript

  • cdk-as - AssemblyScript CDK.

Dapp Development Platforms and Frameworks

  • Ego - Framework to build wallet apps, i.e. user-controlled canisters.
  • Juno - Build Web3 apps like it's Web2.

Developer Tooling

Testing

  • 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.
  • lightic - Write & Run tests for any canister in JS/TS. Canisters will be run inside nodejs environment, no DFX.

CI/CD

  • ICPipeline - CI/CD framework to simply IC release management.
  • Launchtrail - Simple and Secure Release Management for Internet Computer Projects.

Monitoring

  • 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.
  • CycleOps - Proactive, automated, canister cycles management with email notifications and a no-code integration.
  • Cycles.watch - Dashboard for canister cycles consumption overview with local notifications
  • ic-blackhole - Canister to publicly expose canister status information.
  • Metrics encoder - Library to encode metrics in Prometheus text exposition format.

Motoko

Motoko is a safe, simple, actor-based programming language for authoring Internet Computer (IC) canister smart contracts.

Package Managers

  • MOPS - Package manager for Motoko with fully on-chain package registry.
  • Vessel - Package manager for the Motoko programming language.

Libraries / Frameworks

  • IC Certification - Merkle Tree and support for certified variables and assets
  • Server - An Express-style http framework for serving certified http responses from canisters

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 implementations

AssemblyScript

C#

C++

  • icpp-candid - C++ Candid Library.

Dart

Elm

  • ic-elm - A template for using Elm to develop frontend user interface for the Internet Computer.

Haskell

Java

JavaScript/TypeScript

Kotlin

Motoko

  • motoko_candid - Library that enables encoding/decoding of bytes to candid values.

Storage and Databases

  • CanDB - Flexible, performant, and horizontally scalable non-relational multi-canister database built in Motoko.
  • ic-oxigraph - An RDF database for the IC, that enables on-chain knowledge graphs.
  • 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.
  • Certified Blockchain - Certified blockchain log on on the IC. This can be validated using only the NNS public key: Validation.

Fungible and Non-fungible Tokens (NFTs)

Interface Standards

ICRC

  • ICRC-1 - Base fungible token standard.
  • ICRC-2 - Extension to support approve and transfer_from.

Other Interface Standards

  • 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.

Messaging

  • Messity - An open and nonproprietary decentralized messaging protocol.
  • OpenChat - An open chat app.
  • W3NS - An Interner Computer service for notifications.

Decentralized Finance

Exchanges

  • DeSwap Orderbook - An Order Matching Engine Module for Dex in Motoko.
  • Spinner - Private transactions using zkSNARKs.

Frameworks and Tools

  • ICTC - Distributed transaction framework for DeFi applications.

Oracles

Protocols

  • BeamFi - Autonomous Money Streaming Protocol for Micro Payments DeFi applications.

DAO Frameworks

Game Development

For Unity-compatible client libraries, see C# agents.

Wallets and Authentication

  • 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.

Libraries

  • connect2ic - A frontend auth library & toolkit for the Internet Computer.

Dashboards, Explorers and Registries

Crosschain Interoperability

  • Bitcoin Integration - Landing page of the direct integration with the Bitcoin network.
  • Bitshop - Example of a Shopify alternative running 100 % on-chain with Bitcoin as a native payment.
  • 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.
  • Internet Computer Bitcoin Library - Utility libraries for Motoko/Rust to simplify building on the Bitcoin Integration.
  • 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.
  • Bitfinity EVM - An Ethereum Virtual Machine (EVM) implemented as a canister.
  • IC-ETH-RPC - A canister that offers the Ethereum JSON RPC API as an on-chain API.
  • ic-solidity-bindgen - Generate Rust bindings for Solidity contracts from abis to use with the Internet Computer.

Internet of Things

  • Omnia Network - A platform that enables canisters to access any IoT device through a uniform HTTP interface.

How it works / Deep dives

Blogs

Communities and Communication

Bounties and Grants

More Repositories

1

ic

Internet Computer blockchain source: the client/replica software run by nodes
Rust
1,555
star
2

examples

Example applications, microservices, and code samples for the Internet Computer
JavaScript
521
star
3

motoko

Simple high-level language for writing Internet Computer canisters
OCaml
496
star
4

motoko-base

The Motoko base library
Motoko
480
star
5

internet-identity

Internet Identity, a blockchain authentication system for the Internet Computer
Rust
403
star
6

cancan

A scalable video sharing service.
TypeScript
335
star
7

candid

Candid Library for the Internet Computer
Rust
276
star
8

cdk-rs

Rust canister development kit for the Internet Computer.
Rust
198
star
9

sdk

IC SDK: a Software Development Kit for creating and managing canister smart contracts on the ICP blockchain.
Rust
167
star
10

linkedup

An open professional network.
JavaScript
155
star
11

agent-js

A collection of libraries and tools for building software around the Internet Computer, in JavaScript.
TypeScript
147
star
12

docs

Documentation for writing code for the Internet Computer
Motoko
144
star
13

agent-rs

A collection of libraries and tools for building software around the Internet Computer, in Rust.
Rust
120
star
14

vessel

The original package manager for Motoko
Rust
113
star
15

nns-dapp

The Dapp of the Internet Computer's Network Nervous System.
TypeScript
113
star
16

oisy-wallet

A browser-based, multi-chain wallet hosted on the Internet Computer
TypeScript
93
star
17

stable-structures

A collection of data structures for fearless canister upgrades.
Rust
90
star
18

portal

Internet Computer Developer Portal
TypeScript
83
star
19

ICRC-1

A fungible token standard developed by the Ledger & Tokenization working group for the IC.
Rust
81
star
20

quill

Governance & ledger toolkit for cold wallets
Rust
80
star
21

ic-js

Libraries for interfacing with the Internet Computer.
JavaScript
70
star
22

ic-repl

Rust
70
star
23

motoko-playground

Motoko playground
TypeScript
65
star
24

grant-rfps

Grant RFPs and Bounties
62
star
25

cycles-wallet

DFINITY Cycles Wallet
TypeScript
57
star
26

keysmith

Hierarchical Deterministic Key Derivation for the Internet Computer
Shell
45
star
27

rosetta-client

JavaScript
44
star
28

invoice-canister

Providing an example and simplified experience for accepting payments in smart contracts
Motoko
44
star
29

vscode-motoko

Motoko language support for VS Code.
JavaScript
42
star
30

icp-eth-starter

An advanced starter project for interacting with Ethereum on the Internet Computer (Beta)
TypeScript
40
star
31

certified-assets

A certified assets canister written in Rust.
39
star
32

bitcoin-developer-preview

A preview of the integration between Bitcoin and the Internet Computer.
Rust
38
star
33

interface-spec

IC Interface Specification
JavaScript
37
star
34

exchange-rate-canister

The exchange rate canister (XRC) makes use of the HTTP requests feature to provide exchange rates as a service to the IC.
Rust
37
star
35

bitcoin-canister

Rust
36
star
36

ic-hs

A haskell toolbox for the Internet Computer
Haskell
35
star
37

gix-components

A UI kit developed by the GIX team
Svelte
34
star
38

ic-wasm

A collection of libraries and tools for transforming Wasm canisters running on the Internet Computer
Rust
34
star
39

wg-identity-authentication

Repository of the Identity and Wallet Standards Working Group
TypeScript
32
star
40

ic-websocket-poc

Rust
31
star
41

ICRC

Repository to ICRC proposals
29
star
42

icx-proxy

A rust-based command line tool to serve as a gateway for a Internet Computer replica.
Rust
28
star
43

prettier-plugin-motoko

A code formatter for the Motoko smart contract language.
TypeScript
28
star
44

icfront

TypeScript
27
star
45

bigmap-poc

Proof of concept of an infinitely scalable data storage for the Internet Computer application, written in Rust
Rust
26
star
46

http-proxy

Proof of concept implementation of the IC HTTP Gateway Protocol that enables end-to-end secure connections with dApps being served from the internet computer.
TypeScript
23
star
47

motoko-dev-server

A live reload development server for Motoko smart contracts.
TypeScript
22
star
48

pocketic

A canister smart contract testing solution for the Internet Computer.
22
star
49

ic-docutrack

DocuTrack is a proof-of-concept dapp built on the Internet Computer for sharing and managing documents.
Svelte
22
star
50

canister-profiling

Collection of canister performance benchmarks
Rust
21
star
51

node-ic0

An easy-to-use JavaScript API for the Internet Computer.
TypeScript
19
star
52

response-verification

Client side response verification for the Internet Computer
Rust
17
star
53

vessel-package-set

The official community package-set for vessel
Dhall
17
star
54

orbit

A trustless multi-custody digital assets management platform on the Internet Computer.
Rust
17
star
55

snsdemo

Developer focused SNS deployment demo
Shell
15
star
56

node-motoko

Compile and run Motoko smart contracts in Node.js or the browser.
TypeScript
15
star
57

canbench

A benchmarking framework for canisters on the Internet Computer.
Rust
15
star
58

erc20-icp

Contracts and canisters enabling ERC20 ICP on Ethereum
Rust
13
star
59

hardware-wallet-cli

A CLI to interact with the Internet Computer App on Ledger Nano S/X devices.
JavaScript
12
star
60

pocketic-py

PocketIC Python: A Canister Testing Library for the Internet Computer
Python
11
star
61

dre

Decentralized Reliability Engineering
Rust
10
star
62

wg-governance

Repository of the governance working group
10
star
63

embed-motoko

Embed a custom Motoko code snippet in a Medium article, blog post, or webapp.
TypeScript
10
star
64

experimental-minting-tool

CLI tool for minting NFT's
Rust
10
star
65

sns-testing

Testing SNS in local testing environment
Shell
9
star
66

threshold

Threshold voting and execution for the IC
Motoko
9
star
67

sns-quill

SNS governance & ledger toolkit for cold wallets
Rust
9
star
68

motoko.rs

Motoko concrete syntax parser in Rust.
Rust
9
star
69

antora-sdk

Repo for website collaboration - antora project file and ui project files
CSS
9
star
70

getting-started

A repository for getting started on the Internet Computer
9
star
71

canpack

Package multiple libraries into one ICP canister.
TypeScript
9
star
72

miracl_core_bls12381

Rust code of https://github.com/miracl/core (miracl_core) for curve BLS 12-381.
Rust
9
star
73

icx-nns

Rust
8
star
74

rosetta-node

A passive node of the IC that can be interacted with using the Rosetta protocol
Rust
8
star
75

cycles-ledger

The cycles ledger is a global ledger canister that enables principal IDs to hold cycles.
Rust
8
star
76

dfx-extensions

Source repo for DFX extensions binaries and metadata
Rust
8
star
77

test-state-machine-client

Rust library to interact with the ic-test-state-machine
Rust
8
star
78

papi

Paid APIs
Rust
7
star
79

dfxvm

dfx version manager
Rust
7
star
80

icp-dev-env

A Docker image for a canister smart contract developer environment for ICP.
Dockerfile
7
star
81

setup-dfx

GitHub Action to set up dfx
7
star
82

ic-gamekit

C#
7
star
83

chain-fusion-signer

A canister that does nothing but sign transactions for use on other blockchains.
Rust
6
star
84

idl2json

Rust
6
star
85

cns

Chain Name System, a trustless and decentralized discoverability layer hosted directly on the Internet Computer.
Rust
6
star
86

feedback

An ICP community feedback dapp powered by Motoko.
TypeScript
6
star
87

ic-burp-extension

Java
6
star
88

ic-staking-documentation

HTML
5
star
89

icp-hello-world-motoko

A quick and easy way to develop for the Internet Computer in Motoko on macOS, Windows or Linux.
JavaScript
5
star
90

ledger-ref

The reference implementation of ICP ledger canister.
Motoko
5
star
91

formal-models

TLA+ models of various IC components and canisters
TLA
5
star
92

wasmtime-hs

Haskell bindings to the wasmtime WASM engine
Haskell
5
star
93

internet-identity-playwright

A Playwright library to simplify the integration of Internet Identity authentication in E2E tests.
TypeScript
5
star
94

nginx-modules

C
4
star
95

dfn-components

TypeScript
4
star
96

verifiable-credentials-sdk

Repository containing a set of libraries to manage the verifiable credentials in Internet Computer
Rust
4
star
97

ic-types

DEPRECATED (A rust library containing typings and utility functions dealing with the Public specification of the Internet Computer.)
Rust
4
star
98

ic-quickjs-demo

Demo of embedding QuickJS in IC
Rust
4
star
99

ic-gateway

HTTP to IC gateway service
Rust
3
star
100

icp-calculator

A calculator of fees and costs for smart contracts on the Internet Computer Protocol (ICP)
TypeScript
3
star