This is what's happening with my "I'm gonna rewrite News in Racket so I can get fast file uploads"-project. I settled on SQLite instead of Datalog, because SQLite is fast.
The score of an item is derived from the votes, not just a stored number. This should make `unvote` easy to implement.
Also, user text input is not forgotten, so there's no need for `unmarkdown`. (However I'm not claiming that my markdown implementation is appropriate)
Comment tree is displayed as list of lists, so folding should be easy to implement.