2022.02.03
It might be nice to put an Elm engine behind the NodeJS server…
2022.01.28
I think I’m going to launch this project on fly.io.
2022.01.23
Okay, done for today.
I didn’t end up touching PrairieLearn, because I couldn’t get the proper credentials for our instance.
Next steps:
-
Try out PrairieLearn LTI.
-
Hook up the Elm app to the mock server.
-
Create users and authentication stuff.
2022.01.23
There’s a potentially useful Elm package called MiniLaTeX.
But we can probably just use MathJax directly if we’re not using PrairieLearn.
2022.01.23
I just stumbled upon an extremely minimal static-site-generator called zs.
2022.01.23
Alright, today is a day of coding!
Here’s the basic gameplan:
-
First I need to re-read the PrairieLearn LTI integration so that I can properly make the initial config file.
-
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.
-
I’ll need a way to convert YAML or JSON course-configs into HTML web pages.
-
I’m going to try out the PrairieLearn LTI integration, but no promises.
-
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).
2021.10.10
Tech Stack
-
Front-end: Elm
-
Back-end: JS
-
Database: Postgres in GCP with Postgrest
-
Hosting: Cloudflare Pages
Data Model
A lesson
is a group of instructions and quiz questions. Most lesson
s 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. guide
s 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 lesson
s, just include another lesson
as a parent prerequisite. lesson
s will form a directed graph that share dependencies. For example, physics lessons and chemistry lessons may require algebra lessons.