Skip to content


Subversion checkout URL

You can clone with
Download ZIP
JavaScript Clojure
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.


== BEST IN - Clojure baked ==

This is the Clojure code which drives - Please use hesitantly as it released Open Source
to provide others with means of interfacing with Wordpress and driving a backend. Ideally I would find the
time to divide it into generic modules, but as it is it will require work to fit it to another site.

* Clone repo
* lein deps
* lein repl
* user> (use 'bestinclass.admin)

For interactive development, uncomment the line which says (def server (doto ...)) and instead
comment the last line of admin.clj. This will allow runtime redefinition of the routes.

* Administration panel (/admin)
** Publishing of new blogposts with automatic update of site and atom.feed
** Moderation of comments
** Generate statistics from an nginx standard access.log

* Post Editor (/editor)
** Allows you to edit a single blogpost draft, which can later be published from the admin panel

* Comment backend (/cmt)
** Renders a comment-form w. captcha
** Receive comments posted and validates
** Send an email to me (change!) if a comment is validated

* Wordpress import
** Can import a wordpress backup file
** Apply a customized pre-capture-hook to modify the captured data
** Can batch convert posts and comments to another format

* Enlive in the wild
** Enlive is used to generate webpages, feeds, backend panels, many good examples of usage

* The html files are completely safe :)
* The backend is only accesible from, meaning you have to reverse proxy.
  In my setup, I've used nginx to reverse proxy into the admin interface and I let nginx
  handle security, ie. only my IP gets through. If this doesn't work for you, add a middleware
  to moustache which checks either IP or cookie.

src/bestinclass.clj           - I used to from my script, to generate the first version of the site.
                                Only required once as this converts all wordpress posts to html.
src/bestinclass/admin.clj     - Handles the entire backend: moderation, comment handlers, publishing of posts etc
src/bestinclass/comments.clj  - Parses incoming comments posted to the site and controls captchas
src/bestinclass/email.clj     - Simple email/smtp helper fn
src/bestinclass/feeds.clj     - Eventually will generate several feeds, but so far it just updates the atom.xml feed
src/bestinclass/templates.clj - This file contains all enlive-templates and snippets
src/bestinclass/webview.clj   - This file should be disregarded entirely. It was frequently used during the making of the site
                                to rapidly prototype templates and functions.

Fix race condition when approving comments

Something went wrong with that request. Please try again.