Ok, will try, as this quite possibly could be xy problem.
(Although I was interested in the question itself too (curiosity etc).)
Text blob incoming…
So, here are many study websites that allow to study theory and solve exercises (that are randomized at least a bit usually) and get better at math or some other subject. Few examples: Khan Academy, IXL, etc etc.
I don’t know how most of them make practice exercises (how teachers and programmers interact to produce them etc.), but I worked at one local version of them as editor for some 13 years (from inception until I got kinda bored). Here practice exercises and theory is represented as XML, that was created and edited through special GUI and that was done usually by teachers. Math formulas as correspondingly Content MathML and Presentation MathML, also other stuff (answer input fields, radio button inputs, etc, etc.) as XML etc. Each xml saved in database.
Imagine very limited programming language with variables and arrays/lists (to randomly choose from), some built-in math and no conditionals or loops. Even such simple approach allows to make good enough educational materials/practice exercises, given some patience and skills from the teacher/editor.
My idea — nothing special, but it doesn’t leave me alone — is to replace this limited language with proper Turing complete programming language with some libraries (existing or to be made). More specifically, with some beautiful functional language with strict type system.
Next year I start studying math in the university and want to make educational website for fellow students of this study program (slowly advancing as I study further and further). I want to do it with Scala backend, with Turing complete underlying structure of these exercises, that would allow me to do stuff I want without any unnecessary pain and make/and use libraries etc.
Maybe I’m missing something and am too fixated on database for educational content, dunno. In many ways I am beginner. I have problems working with large, complex codebases with many tools etc. (so no professional work experience or career), but I have it much easier to tinker with smaller, more self-contained portions of programming if there’s motivation. I “float” somewhere in the place between math and relatively tiny programming, that’s the stuff I like.
I could do everything as the static webpages (js, html, mathml/mathjax, svg - it’s possible and not that hard, I already tinkered with that, in this case there’s just lot’s of html webpages and other resources), but then I can’t have users with saved progress and probably some more useful stuff. This approach is harder but I have some year until next academic year that starts in the September. It’s doable.
… Anyway, my apologies for this long rant.