It might be nice to put an Elm engine behind the NodeJS server…


I think I’m going to launch this project on fly.io.


Okay, done for today.

I didn’t end up touching PrairieLearn, because I couldn’t get the proper credentials for our instance.

Next steps:


There’s a potentially useful Elm package called MiniLaTeX.

But we can probably just use MathJax directly if we’re not using PrairieLearn.


I just stumbled upon an extremely minimal static-site-generator called zs.


Alright, today is a day of coding!

Here’s the basic gameplan:

  1. First I need to re-read the PrairieLearn LTI integration so that I can properly make the initial config file.
  2. We’re going to define all the courses and stuff in a simple config file. This means that my partner can configure courses without my intervention.
  3. I’ll need a way to convert YAML or JSON course-configs into HTML web pages.
  4. I’m going to try out the PrairieLearn LTI integration, but no promises.
  5. If the PrairieLearn integration proves to be too difficult, I’m going to port all the existing course questions over to JavaScript and create something much simpler. I probably will want to do this no matter what (eventually).


Tech Stack

Data Model

A lesson is a group of instructions and quiz questions. Most lessons will present like textbook chapters – technical information followed by questions.

A guide is just an instructional section for a lesson. A guide can contain text, images, interactive graphs, videos, etc. guides are written in markdown, and will be provided embeddable HTML modules.

A puzzle is a parameterized problem that can be used in a lesson. Think of it like a standalone quiz or test question.

To create a course out of lessons, just include another lesson as a parent prerequisite. lessons will form a directed graph that share dependencies. For example, physics lessons and chemistry lessons may require algebra lessons.