diff --git a/docs/.gitignore b/docs/.gitignore
new file mode 100644
index 000000000..f40fbd8ba
--- /dev/null
+++ b/docs/.gitignore
@@ -0,0 +1,5 @@
+_site
+.sass-cache
+.jekyll-cache
+.jekyll-metadata
+vendor
diff --git a/docs/404.html b/docs/404.html
new file mode 100644
index 000000000..086a5c9ea
--- /dev/null
+++ b/docs/404.html
@@ -0,0 +1,25 @@
+---
+permalink: /404.html
+layout: default
+---
+
+
+
+
+
404
+
+
Page not found :(
+
The requested page could not be found.
+
diff --git a/docs/Gemfile b/docs/Gemfile
new file mode 100644
index 000000000..aff102043
--- /dev/null
+++ b/docs/Gemfile
@@ -0,0 +1,34 @@
+source "https://rubygems.org"
+# Hello! This is where you manage which Jekyll version is used to run.
+# When you want to use a different version, change it below, save the
+# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
+#
+# bundle exec jekyll serve
+#
+# This will help ensure the proper Jekyll version is running.
+# Happy Jekylling!
+gem "jekyll", "~> 4.3.3"
+# This is the default theme for new Jekyll sites. You may change this to anything you like.
+# gem "minima", "~> 2.5"
+gem "just-the-docs"
+# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
+# uncomment the line below. To upgrade, run `bundle update github-pages`.
+# gem "github-pages", group: :jekyll_plugins
+# If you have any plugins, put them here!
+group :jekyll_plugins do
+ gem "jekyll-feed", "~> 0.12"
+end
+
+# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
+# and associated library.
+platforms :mingw, :x64_mingw, :mswin, :jruby do
+ gem "tzinfo", ">= 1", "< 3"
+ gem "tzinfo-data"
+end
+
+# Performance-booster for watching directories on Windows
+gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
+
+# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
+# do not have a Java counterpart.
+gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock
new file mode 100644
index 000000000..31b7ba1e6
--- /dev/null
+++ b/docs/Gemfile.lock
@@ -0,0 +1,185 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ addressable (2.8.7)
+ public_suffix (>= 2.0.2, < 7.0)
+ bigdecimal (3.1.8)
+ colorator (1.1.0)
+ concurrent-ruby (1.3.4)
+ em-websocket (0.5.3)
+ eventmachine (>= 0.12.9)
+ http_parser.rb (~> 0)
+ eventmachine (1.2.7)
+ ffi (1.17.0)
+ ffi (1.17.0-aarch64-linux-gnu)
+ ffi (1.17.0-aarch64-linux-musl)
+ ffi (1.17.0-arm-linux-gnu)
+ ffi (1.17.0-arm-linux-musl)
+ ffi (1.17.0-arm64-darwin)
+ ffi (1.17.0-x86-linux-gnu)
+ ffi (1.17.0-x86-linux-musl)
+ ffi (1.17.0-x86_64-darwin)
+ ffi (1.17.0-x86_64-linux-gnu)
+ ffi (1.17.0-x86_64-linux-musl)
+ forwardable-extended (2.6.0)
+ google-protobuf (4.28.0)
+ bigdecimal
+ rake (>= 13)
+ google-protobuf (4.28.0-aarch64-linux)
+ bigdecimal
+ rake (>= 13)
+ google-protobuf (4.28.0-arm64-darwin)
+ bigdecimal
+ rake (>= 13)
+ google-protobuf (4.28.0-x86-linux)
+ bigdecimal
+ rake (>= 13)
+ google-protobuf (4.28.0-x86_64-darwin)
+ bigdecimal
+ rake (>= 13)
+ google-protobuf (4.28.0-x86_64-linux)
+ bigdecimal
+ rake (>= 13)
+ http_parser.rb (0.8.0)
+ i18n (1.14.5)
+ concurrent-ruby (~> 1.0)
+ jekyll (4.3.3)
+ addressable (~> 2.4)
+ colorator (~> 1.0)
+ em-websocket (~> 0.5)
+ i18n (~> 1.0)
+ jekyll-sass-converter (>= 2.0, < 4.0)
+ jekyll-watch (~> 2.0)
+ kramdown (~> 2.3, >= 2.3.1)
+ kramdown-parser-gfm (~> 1.0)
+ liquid (~> 4.0)
+ mercenary (>= 0.3.6, < 0.5)
+ pathutil (~> 0.9)
+ rouge (>= 3.0, < 5.0)
+ safe_yaml (~> 1.0)
+ terminal-table (>= 1.8, < 4.0)
+ webrick (~> 1.7)
+ jekyll-feed (0.17.0)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-include-cache (0.2.1)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-sass-converter (3.0.0)
+ sass-embedded (~> 1.54)
+ jekyll-seo-tag (2.8.0)
+ jekyll (>= 3.8, < 5.0)
+ jekyll-watch (2.2.1)
+ listen (~> 3.0)
+ just-the-docs (0.10.0)
+ jekyll (>= 3.8.5)
+ jekyll-include-cache
+ jekyll-seo-tag (>= 2.0)
+ rake (>= 12.3.1)
+ kramdown (2.4.0)
+ rexml
+ kramdown-parser-gfm (1.1.0)
+ kramdown (~> 2.0)
+ liquid (4.0.4)
+ listen (3.9.0)
+ rb-fsevent (~> 0.10, >= 0.10.3)
+ rb-inotify (~> 0.9, >= 0.9.10)
+ mercenary (0.4.0)
+ pathutil (0.16.2)
+ forwardable-extended (~> 2.6)
+ public_suffix (6.0.1)
+ rake (13.2.1)
+ rb-fsevent (0.11.2)
+ rb-inotify (0.11.1)
+ ffi (~> 1.0)
+ rexml (3.3.7)
+ rouge (4.3.0)
+ safe_yaml (1.0.5)
+ sass-embedded (1.78.0)
+ google-protobuf (~> 4.27)
+ rake (>= 13)
+ sass-embedded (1.78.0-aarch64-linux-android)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-aarch64-linux-gnu)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-aarch64-linux-musl)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-aarch64-mingw-ucrt)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-arm-linux-androideabi)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-arm-linux-gnueabihf)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-arm-linux-musleabihf)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-arm64-darwin)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-riscv64-linux-android)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-riscv64-linux-gnu)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-riscv64-linux-musl)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-x86-cygwin)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-x86-linux-android)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-x86-linux-gnu)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-x86-linux-musl)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-x86-mingw-ucrt)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-x86_64-cygwin)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-x86_64-darwin)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-x86_64-linux-android)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-x86_64-linux-gnu)
+ google-protobuf (~> 4.27)
+ sass-embedded (1.78.0-x86_64-linux-musl)
+ google-protobuf (~> 4.27)
+ terminal-table (3.0.2)
+ unicode-display_width (>= 1.1.1, < 3)
+ unicode-display_width (2.5.0)
+ webrick (1.8.1)
+
+PLATFORMS
+ aarch64-linux
+ aarch64-linux-android
+ aarch64-linux-gnu
+ aarch64-linux-musl
+ aarch64-mingw-ucrt
+ arm-linux-androideabi
+ arm-linux-gnu
+ arm-linux-gnueabihf
+ arm-linux-musl
+ arm-linux-musleabihf
+ arm64-darwin
+ riscv64-linux-android
+ riscv64-linux-gnu
+ riscv64-linux-musl
+ ruby
+ x86-cygwin
+ x86-linux
+ x86-linux-android
+ x86-linux-gnu
+ x86-linux-musl
+ x86-mingw-ucrt
+ x86_64-cygwin
+ x86_64-darwin
+ x86_64-linux
+ x86_64-linux-android
+ x86_64-linux-gnu
+ x86_64-linux-musl
+
+DEPENDENCIES
+ http_parser.rb (~> 0.6.0)
+ jekyll (~> 4.3.3)
+ jekyll-feed (~> 0.12)
+ just-the-docs
+ tzinfo (>= 1, < 3)
+ tzinfo-data
+ wdm (~> 0.1.1)
+
+BUNDLED WITH
+ 2.5.18
diff --git a/docs/_config.yml b/docs/_config.yml
new file mode 100644
index 000000000..ba4418b18
--- /dev/null
+++ b/docs/_config.yml
@@ -0,0 +1,56 @@
+# Welcome to Jekyll!
+#
+# This config file is meant for settings that affect your whole blog, values
+# which you are expected to set up once and rarely edit after that. If you find
+# yourself editing this file very often, consider using Jekyll's data files
+# feature for the data you need to update frequently.
+#
+# For technical reasons, this file is *NOT* reloaded automatically when you use
+# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
+#
+# If you need help with YAML syntax, here are some quick references for you:
+# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml
+# https://learnxinyminutes.com/docs/yaml/
+#
+# Site settings
+# These are used to personalize your new site. If you look in the HTML files,
+# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
+# You can create any custom variable you would like, and they will be accessible
+# in the templates via {{ site.myvariable }}.
+
+title: MaPLe Dev Docs
+# email: your-email@example.com
+description: >- # this means to ignore newlines until "baseurl:"
+ Documentation for the MPLLang/mpl repo, especially source-code documentation
+ of the MPL compiler and run-time system. This is intended for the developers
+ of MPL and anyone interested in contributing to the MPL project.
+baseurl: "" # the subpath of your site, e.g. /blog
+url: "" # the base hostname & protocol for your site, e.g. http://example.com
+# twitter_username: jekyllrb
+# github_username: jekyll
+
+# Build settings
+# theme: minima
+theme: just-the-docs
+plugins:
+ - jekyll-feed
+
+# Exclude from processing.
+# The following items will not be processed, by default.
+# Any item listed under the `exclude:` key here will be automatically added to
+# the internal "default list".
+#
+# Excluded items can be processed by explicitly listing the directories or
+# their entries' file path in the `include:` list.
+#
+# exclude:
+# - .sass-cache/
+# - .jekyll-cache/
+# - gemfiles/
+# - Gemfile
+# - Gemfile.lock
+# - node_modules/
+# - vendor/bundle/
+# - vendor/cache/
+# - vendor/gems/
+# - vendor/ruby/
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 000000000..66444088f
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,8 @@
+---
+# Feel free to add content and custom Front Matter to this file.
+# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults
+
+layout: home
+---
+
+This site is in development. Come back soon to see more!
\ No newline at end of file
diff --git a/docs/test-page.md b/docs/test-page.md
new file mode 100644
index 000000000..97fb9346e
--- /dev/null
+++ b/docs/test-page.md
@@ -0,0 +1,7 @@
+---
+layout: page
+title: Test page
+permalink: /test-page/
+---
+
+Test page
\ No newline at end of file