I wrote a tool myself :). Like many other wiki tools, at the core of it are a bunch of web pages. In my case each page is a note (which is preferably as atomic of a concept as can be) that consists of a section for the note and a section for exercises (each with an id) related to that note. I can then parse those exercises and feed them into a spaced repetition algorithm and practice web app.