/awesome-motoko

A curated list of Motoko code and resources.

Creative Commons Zero v1.0 UniversalCC0-1.0

Awesome Motoko Awesome

An awesome list of Motoko code and resources curated by the community.

The Motoko programming language is a new, modern and type safe language for developers who want to build the next generation of distributed applications to run on the Internet Computer blockchain network.

Contents

Applications

Fully functional smart contract.

Canister tools

  • candid-spaces - A general-purpose candid data lake for canisters' data on the IC.
  • Canister Tip Jar - Donate cycles to your favorite canisters on the Internet Computer and keep them live and healthy.
  • ic-blackhole - Once a canister sets its only controller to a black hole, it becomes immutable.
  • motoko_top_up_canister - Implementation of a canister called periodically by a Node.js service; that top-up automatically user-defined canisters with cycles.

Cryptocurrencies

  • extendable-token - This token standard provides a ERC1155/multi-token-like approach with extensions that can add additional functionality based on the purpose of the token.
  • extendable token standard - Extendable Token Standard.
  • ic-nft - A NFT standard implementation for the Internet Computer, the interfaces mainly follow the ERC721 standard.
  • ic-token - An ERC-20 style token standard implements for Motoko.
  • motoko-token - This package implements a simple ERC-20 style token.
  • non-fungible-token - The goal for this project is to develop a non-fungible token standard which leverages the unique properties of the IC and enables builders to create entire experiences from a single contract.
  • token faucet - A token faucet for ic-token.

Games

  • reversi - Multiplayer Reversi Game on Internet Computer.
  • revo - A drawing game on Internet Computer.
  • superheroes - A simple example that demonstrates how to build a CRUD application on the Internet Computer using Motoko and React.

Social

  • LinkedUp - An open professional network on Internet Computer.

Storage

Utilities

  • cleansheets - A spreadsheet-like application for the Internet Computer, written in Motoko.
  • motoko-certified-http - A motoko canister that does HTTP asset certification.
  • relay - Managed events infrastructure by Departure Labs.

Video

  • cancan - A scalable video-sharing service.

Development tools

Build system

  • dfx - The DFINITY command-line execution environment (dfx) is the primary tool for creating, deploying, and managing the dapps you develop for the Internet Computer blockchain.
  • Vessel package manager - Add and manage packages, libraries, and dependencies for your Motoko programs.

IDEs

Testing

  • ic-mini-terminal - Minimal keyboard input (⌨) and graphical output (📺) for programs on the Internet Computer.
  • motoko-bigtest - Long-running tests as/for IC services, via a Motoko-based DSL.
  • motoko-color - A Motoko library for rendering color schemes and graphics to the terminal, based on the ANSI ASCII standard.
  • motoko-matchers - Composable assertions for unit testing.
    • ic101 - This repository demonstrates how to use the matchers library to unit test canisters on the Internet Computer.

Libraries

Algorithms

  • chronosphere - A time library for the Motoko programming language.
  • motoko-adapton - Dynamic dependence graph and memoization techniques in Motoko.
  • motoko-qr - A QR-code generator for the Motoko programming language.
  • motoko-scc - A Strongly Connected Component library for Motoko.
  • motoko-splay - The splaying algorithm for Motoko.
  • mo-parsec - A Parsec-based parser combinator library for Motoko.
  • Parser Combinators - Based on Monadic Parser Combinators by Graham Hutton and Erik Meijer.
  • Sorted - Data structures in which each element is sorted in numerical, alphabetical, or some other order.

Cryptography

  • ecdsa-motoko - ECDSA for Motoko.
  • libsecp256k1 - Pure Motoko Implementation of secp256k1.
  • motoko-bitcoin - Bitcoin-related libraries (Base58, RIPMED160, HMAC).
  • motoko-crc - This package implements cyclic redundancy checks for the Motoko programming language.
  • motoko-CRC32 - Implements the 32-bit cyclic redundancy check, or CRC-32, checksum.
  • motoko-sha2 - All hash functions from the SHA2 family (sha224, sha256, sha512-224, sha512-256, sha384, sha512).
  • motoko-sha - This package implements secure hash algorithms for the Motoko programming language.
  • motoko-SHA - SHA224 and SHA256 hash algorithms as defined in FIPS 180-4.
  • motoko-sha224 - A Sha224 implements for Motoko.
  • rand - Pseudo Random Number Generators.

Data structures

  • array - Extended Array Package for Motoko.
  • motoko-base - The Motoko base library, commonly used data structures and algorithms, maintained by the official.
  • motoko-bigsearch - A search service in Motoko, inspired by indexing and search systems like Apache Lucene.
  • motoko-BiMap - A bimap (or "bidirectional map") is a map that preserves the uniqueness of its values as well as that of its keys.
  • motoko-crud - A framework for constructing CRUD services in Motoko for the Internet Computer.
  • motoko-MerkleTree - A simple merkle tree data structure for Motoko. It provides a key-value store, where both keys and values are of type Blob.
  • motoko-Queue - A collection of elements that are maintained in a sequence, a FIFO Queue.
  • motoko-sequence - Cache-friendly, persistent sequential data for Motoko.
  • motoko-StableMap - Stable Map for the Motoko.
  • motoko-text-map - A Motoko Hashmap that fixes its key type to Text.
  • mutable-queue.mo - Motoko module of a mutable queue data structure.
  • Principal - Provides a wrapper around the base principal module.
  • Stable Buffers - Stable Buffers in Motoko.
  • Stable Data Struct - Stable Hashmap implements.
  • Stable HashMaps - Functional & Class-Based stable Hashmaps in Motoko.
  • Stable LinkedList - Stable, mutable singly & doubly linked lists in Motoko.
  • Stable Red-Black Trees - Stable Red-Black Trees in Motoko.

Encoding

  • json package - JSON for Motoko.
  • motoko-base32 - Base32 coding/decoding for Motoko.
  • motoko-Encode - Base32, Hex and Binary Library for the Motoko.
  • motoko-hex - This package implements hexadecimal encoding and decoding routines for the Motoko programming language.
  • motoko-json - Json parser in Motoko.
  • motoko-UUID - Generation of UUIDs based on RFC 4122.

Graphics

Logging

  • ic-logger - Motoko library to help create an append-only logger actor.
  • motoko-pretty - A pretty printer library for Motoko.

Storage

  • Asset Storage - Interface of the Asset Storage Canister.
  • motoko-GraphQL - GraphQL is a query language designed to build client applications and system for describing their data requirements and interactions.
  • Bucket - A data bucket library that use stable memory to store files bytes and assist developers to build http response.

Templates

Text processing

  • Format - Implements conversions to and from textual representations of basic data types.
  • motoko-regex - Simple regex matching for Motoko Text.

Registries

A registry allows you to publish your Rust libraries as crate packages, to share them with others publicly and privately.

  • io package - Basic Interfaces for I/O Primitives.
  • Package Set - Aviate-labs package-set for Motoko libraries to use with vessel.
  • Vessel Package Set - The official package-set for Motoko libraries to use with vessel.

Resources

Contribute

Contributions welcome! Read the contribution guidelines first.

License

CC0