Platypub in progress

I've been working a lot on Platypub and intend to have it ready for my own personal use in a few days. Here's a GIF demo. It includes a CMS, a rudimentary theme system for rendering posts to a directory of files, and a Netlify integration for deploying the site. I am finishing up a custom theme for the biffweb.com website, which hasn't been too much work since it was already being generated with Clojure. Just copy+paste+tweak. Then I will implement the "Newsletters" page + Mailgun integration.

After that's done and I've moved all my own properties into Platypub, it will be ready for an official v0.1 release. Along with that, I'll create detailed issues for everything else that needs to be done (which is a lot) and try to make them accessible for others. Some pair programming at that point would be fun. I'd like Platypub to provide an easy on-ramp for people to start tinkering around with Biff, without needing to design and build a whole application from scratch right away.

There is a TODO section in the README which contains the main things I've thought of so far. I'm sure there will be plenty more feature suggestions as people try it out. The biggest unknown is how to do the theme system. It is difficult because I'd like Platypub to support multi-tenancy, but I'd also like to let people write themes with code (the same way you would if you e.g. wrote some Clojure code to generate your own static site). So the theme plugins have to run in some kind of sandbox. The theme would take a directory of posts + site configuration and output a directory containing the rendered site files, ready to be uploaded to Netlify.

For now I've punted and am having themes run unsandboxed, which is fine if you're just running an instance of Platypub for your own use. I've investigated sandbox stuff in the past but have never ended up actually doing it for anything, so I'm not terribly familiar with what the options and their characteristics are. If anyone wants to read up on this, that would be helpful!

(Speaking of the "on-ramp" thing a couple paragraphs ago: I think hacking on themes in Platypub, with Hiccup-style HTML generation, would be an excellent way for people to get introduced to Clojure, especially if Platypub includes its own simple code editor. It'd be like editing theme code in WordPress.)

Finally--I've tried to put more care into the commits than I normally do for my own, closed-source applications (in which half of my commit messages are "stuff", and each commit contains whatever code I happened to write that day). Reading those from oldest to newest could help to get a feel for how to go about developing a new Biff app after you've gone through the Getting Started steps. You can also run the code if you want; see the README.

Jacob