Awesome
Awesome Motoko
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
- Appic - A canister for automatically buying and selling tokens at specific times or intervals.
- 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.
- icrc1-token-canister - Implementation of ICRC1 token canister
- icrc30-mo - A Class+ ICRC-30 Library for providing Approve/TransferFrom to ICRC-7 NFT Canisters.
- icrc3-mo - A Class+ ICRC-3 Library for adding transaction logs and archives to your canister.
- icrc7_motoko - An ICRC-7 standard implementation in Motoko.
- icrc7-mo - A Class+ ICRC-7 Library for building NFT Canisters.
- icrc-nft-mo - A Sample NFT combining icrc7-mo, icrc30-mo, icrc3-mo.
- 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.
Decentralized Finance
- BrownFi - Simple AMM Dex with high Capital Effifiency
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.
Mining Platform
- loka - Trustless Non-Custodial Bitcoin Mining Platform built on IC
Realestate
- ber - Blockchain estate register with IC
Social
- Formyfi - Decentralized & fully on-chain Q&A Forms.
- 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.
- IC Payroll - Human Resource and Payroll App hosted fully on-chain on the internet Computer. Users can hold and send ckbtc and other icrc2 compliant tokens .Allows user to send a single payment or bulk payment. Vue/Tailwindcss Frontend with Motoko Backend.
- motoko-certified-http - A motoko canister that does HTTP asset certification.
- relay - Managed events infrastructure by Departure Labs.
- SecureGuard Escrow - Revolutionizing secure transactions with a blockchain-based escrow platform , ensuring safe exchanges of high-value goods and services with immutable smart contracts.
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
- Blocks - An open source visual Motoko smart contract editor.
- IntelliJ IDEA Motoko support - Adds support for the Motoko language from Dfinity.
- motoko-playground - A playground for the Internet Computer's native Motoko language.
- Visual Studio Code
- Motoko - Motoko language support maintained by official.
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.
- ecdsa_poc - Prototype implementation of ECDSA, only for learning.
- 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
- Account.mo – ICRC1 Account En/Decoding
- json package - JSON for Motoko.
- lexicographic-encoding - Lexicographic (string sortable) integer encoding in Motoko.
- motoko-base32 - Base32 coding/decoding for Motoko.
- motoko_candid - CANDID encoding/decoding library
- motoko_cbor - CBOR encoding/decoding library
- 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.
- motoko_xml - XML encoding/decoding library
Graphics
- motoko-graph - Graphical data models for Motoko.
- motoko-redraw - 2D graphics and layout algorithms for Motoko.
- motoko-SVG Generator - A SVG generator for the Motoko.
Logging
- ic-logger - Motoko library to help create an append-only logger actor.
- motoko-pretty - A pretty printer library for Motoko.
Misc
- Gitcoin Passport Client - A sample app to securely copy Gitcoin Passport scores to ICP databases.
Payment
- IC-PayPortal - Module for Motoko is a library that provides developers with a set of functions for managing fiat payments (Stripe, PayPal) on the Internet Computer Protocol (ICP).
Storage
- A site about Motoko databases and related software
- 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
- motoko-library-template - A template for creating Motoko libraries.
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
- AgorApp - AgorApp is an online interactive coding platform that provides courses and coding challenges on all-things-web3 engineering and Internet Computer development.
- DFINITY Education - Lessons about blockchain, cryptocurrencies and protocol of Internet Computer.
- Introducing the Internet Computer - A comprehensive series of documents that introduce Internet Computer.
- Motoko Bootcamp - Lectures and resources from the Motoko Bootcamp.
- motoko by example - An officially maintained collection of short Motoko examples.
- The Motoko Programming Language Book - A guide for writing Web3 Software on the Internet Computer.
Contribute
Contributions welcome! Read the contribution guidelines first.