Giter Club home page Giter Club logo

awesome-internet-computer's Introduction

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++

  • Chico - C/C++ CDK.
  • icpp - Modern C++ for the IC.

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#

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

How it works / Deep dives

Blogs

Communities and Communication

Bounties and Grants

awesome-internet-computer's People

Contributors

domwoe avatar letmejustputthishere avatar rvanasa avatar alexabsmith avatar nathanosdev avatar peterpeterparker avatar krpeacock avatar anthonyvanvranken avatar byronbecker avatar assetcorp avatar kinwo avatar ililic avatar hilljh82 avatar dfx-json avatar jplevyak avatar kristoferlund avatar levifeldman avatar lsgunnlsgunn avatar matthewhammer avatar dreamxzxy avatar mioquispe avatar stopak avatar taylorham avatar vidorge avatar ccyanxyz avatar flyq avatar hide-yoshi avatar infu avatar o0x avatar therealbryanho avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.