awesome-motoko icon indicating copy to clipboard operation
awesome-motoko copied to clipboard

A curated list of Motoko code and resources.

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
    • Canister tools
    • Cryptocurrencies
    • Games
    • Social
    • Storage
    • Utilities
    • Video
  • Development tools
    • Build system
    • IDEs
    • Testing
  • Libraries
    • Algorithms
    • Cryptography
    • Data structures
    • Encoding
    • Graphics
    • Logging
    • Storage
    • Templates
    • Text processing
    • Web Programming
  • Registries
  • Resources
  • Contribute
  • License

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

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