Source code of Mathigon's interactive textbooks
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Mathigon Textbooks

Welcome to Mathigon! This repository contains the source code and assets for all our interactive textbooks.

Mathigon is an award winning new mathematics education platform for students aged 12 to 18. Part textbook and part virtual personal tutor, it uses cutting-edge technology and an innovative new curriculum to make learning mathematics more fun and more interactive.

Getting Started

After forking and cloning this repository, install all dependencies using npm install.

Now you can start a local development server by running npm start. Wait for the assets to be compiled and then open localhost:5000. The server will automatically watch for file changes.

Every course is a subfolder in the content directory. The URL of the Probability course, for example, will be localhost:5000/course/probability.

Course Structure

Every course consists of a few different components:

  • contains the source code and metadata for a course. It is written in a custom extension of Markdown.
  • functions.js contains all course-specific JavaScript code.
  • styles.less contains all course-specific styles, in LESS format.
  • hints.yaml (optional) contains any messages that can be sent by Mathigon's virtual personal tutor.
  • concepts.yaml (optional) contains parts of Mathigon's internal knowledge tree for this topic.

The shared directory contains biographies, glossary and assets used by multiple courses.

Every course is divided into multiple steps, each with a unique ID. These IDs are used as function names in functions.js when exporting the setup code for every section.

The server directory contains a simplified version of Mathigon's web server. It is used for local testing, but should not usually be modified.


We welcome any contributions to Mathigon – from bug fixes and correcting typos to creating entirely new courses. If you find any errors or problems, please file an issue. For larger changes, please contact us before starting your work.

Before submitting a pull request, you will need to sign the Mathigon Individual Contributor License Agreement.

You can find out more on


All original text and code is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives license (CC BY-NC-ND) version 4.0. Third-party images and media resources may have more restrictive licenses.

Creative Commons Attribution-NoDerivatives license