/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.
  • iCAN - A Canister Management Platform, which helps you create canisters in random subnet and manage canisters status efficiently and conveniently.
  • 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.
  • icrc7_motoko - An ICRC-7 standard implementation in Motoko.
  • 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

  • motoko-bucket - A K-V Database lib that uses stable memory to store data.
  • motoko-cdn - A simple storage auto-scaling solution across multiple canisters. Ie: mini-bigmap.
  • motoko-dht - This canister implements a distributed hash table.
  • motoko-document-db
  • motoko-ICSP - Internet Computer Storage Protocol. This lib supports many features, such as auto-scale storage, HTTP Redirect, cycle monitor and top up self automatically.

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.
  • evm-txs - EVM transactions creation, encoding, and decoding library in pure Motoko.
  • libsecp256k1.mo - Motoko port of libsecp256k1.
  • 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_datetime - Datetime library. Support for UTC, local timezones, locales and basic datetime operations/structures
  • 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.
  • MotokoStableBTree – Stable Memory Based BTree.
  • 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 BTree Map - Stable (Heap-based) BTreeMaps in Motoko.
  • Stable Buffers - Stable (Heap-based) Buffers in Motoko.
  • Stable Data Struct - Stable (Heap-based) Hashmap implements.
  • Stable HashMaps - Functional & Class-Based (Heap-based) stable Hashmaps in Motoko.
  • Stable LinkedList - (Heap-based) Stable, mutable singly & doubly linked lists in Motoko.
  • Stable Red-Black Trees - (Heap-based) Stable Red-Black Trees in Motoko.

Encoding

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.

Web Programming

  • Http Request Parser - A http request parser for parsing url, search query, headers and form data.

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.
  • MOPS - A package manager for Motoko with on-chain package registry.
  • 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

  • Learning

Contribute

Contributions welcome! Read the contribution guidelines first.

License

CC0