Overview of the Github repos of Truffle

You probably have heard or used Truffle, the leading framework for Solidity smart contracts. But are you aware of all the tools and libraries built by the Truffle team? In this article, we will explore the Github repos of the Trufflesuite organization, to understand their purpose. This is a high-level overview. There will be other articles where we will explore the actual code of these repos.

Trufflesuite organization

All the repos of Truffle are inside the Trufflesuite organization. If you click on “repositories” you will see all their repos. There are 73 repos at the time of writing this article, but there might be even more when you read it. Not all of these repos are actively maintained. In the list of repositories, next to each repo name you can see when was the last time it was last updated. The most recently updated repos are at the top of the list.

Most of these repos are in Javascript and NodeJS.

Truffle

Truffle is the main repo of the Trufflesuite organization. That’s the actual Truffle framework, which is used for developing Solidity smart contracts. The code is split in a series of packages. Before, these packages used to be in their own repo. If you scroll down in the list of repos in the Trufflesuite organization, you will see some of these old repos, but they are archived. You should ignore these archived repos and only take into consideration the packages folder of the Truffle repo.

This repo depends on a number of other repos, most notably Ganache core.

By the way, checkout my introduction to Truffle video, as well as the Truffle cheatsheet article I wrote.

Ganache core

This is the code that powers Ganache, the development blockchain for Ethereum. Under the hood, it uses a Javascript implementation of Ethereum, ethereumjs-vm. If you want to use Ganache core, you will have to install it as a npm dependency of your project and require it inside your code, and start its server. A bit like you would start an express server. For this reason, it’s not really used directly by smart contract developers. Instead smart contract developers use wrappers around Ganache core like Ganache CLI or Ganache (GUI).

Ganache CLI

Ganache CLI is a CLI wrapper around the ganache-core repo. It allows to spin up a Blockchain instance from the command-line, without having to code anything.

Ganache GUI

That’s the GUI version of Ganache. It’s a little bit like a blockchain explorer but for your Ganache instance. Under the hood, it’s an electron app built with React, and it uses Ganache CLI to spin up a development blockchain.

If you want to know how to use and install Ganache GUI, check this and this video.

Drizzle

Drizzle is a frontend framework to build Dapps. It works by keeping a local state tree in-sync with the state of your smart contract. Your frontend code can connect to this store and update the UI everytime there is a state change.

I created a tutorial video to introduce Drizzle and show how to build a simple Dapp with it.

Drizzle-react

This repo is the Drizzle adapter for React applications. It allows to use the Drizzle instance and the Drizzle state inside your React code. It uses a Redux store internally, as well as a React context to inject Drizzle into your app.

Drizzle-react-components

This repo is a collection of ready-to-use components for your React / Drizzle frontend. If you want a simple and easy solution to use Drizzle, you can just use these components and throw them in your app.

Drizzle-vue-plugin

This repo is the Drizzle adapter for Vue applications. At the time of publishing this article it’s not released yet, but it will very soon! If you are a user of Vue and wants to use Drizzle, do checkout this repo and in particular there is an example Vue Dapp that shows how to use the plugin.

And also checkout this tutorial I created to learn how to build Vue Dapps using this plugin.

Other repos

We have covered the main repos in the Trufflesuite organization but there are still many other. Some of them are repos related to tutorials of the Truffle blog (Like the truffle-pet tutorial. Another notable library is truffle-hdwallet-provider, which is used for deploying contracts to testnet and mainnet on public Ethereum nodes like Infura.

That’s it for this introduction to the Github repos of the Trufflesuite organization. Go explore the code of these repos, checkout their issue tracker, and see if you can contribute some code!

Leave a Reply

Your email address will not be published. Required fields are marked *