Course Development
Draft — the authoring API is being finalized; the shapes below are illustrative and may change before release.
The shape of a course
The entry point is init.lua:
course "do-you-think-you-can-git" {
title = "Operation: Master Git",
description = "A course that teaches git, one pushup at a time.",
stage "add-and-commit" {
instructions = [[
Create `hello.txt` containing `hello world`, commit it,
then push.
]],
verify = function(bundle)
local file = bundle:file("hello.txt")
if file == nil then
return fail("hello.txt is missing")
end
return pass("hello.txt committed!")
end,
},
}
Staying in character
Server-injected commits are authored in-character: scaffolding arrives
from anton@… or luna@…, and pre-existing history belongs to Igor.
If your course follows the story, keep one incident-owner per stage.
Community courses are free-form — but if desired it is more than welcome to feature the characters who frequent the office.
Developing against the sandbox
The coursedev repository acts like both a teacher and a factory: push a Lua
course to it and the server replies back with a course-link that you can use to
test it.
git clone https://pushups.sh/coursedev.git
cd coursedev
# write init.lua, then:
git push # server validates and provisions a sandbox