Last weekend I participated in Clojure Cup 2013 – an online programming competition for Clojure/Clojure Script Programmers. My entry was a web application for browsing Datomic schema. It was built using Pedestal Framework

Though I didn’t achieve all the goals for the weekend, I made a decent progress by finishing:
• Frontend app using Pedestal.
• Designing FE using Bootstrap 3.
• Backend using Pedestal Service.
• Fetching Datomic attributes listing and rendering them in the FE using Server Sent Events.
• Package the app into a runnable JAR.
• Create a decent “marketing” site!
I’ve been learning Clojure for sometime now, and recently worked full-time on a real project, but Pedestal is a completely new framework for me. My initial plan was to create a “traditional” web application with Datomic browsing features, but I decided that it wasn’t challenging enough. So I started hacking using Pedestal, I followed the Pedestal tutorial and was able to make some good progress on the app.
Pedestal has been a completely different type of framework than the ones that I’m used to. It is optimised for highly interactive/collaborative applications. This was a completely new experience from me – since most of the applications that I built so far are request/response or (REST) based. One particular feature that blew me away was the recording functionality of Pedestal – which lets you record the “message flow” and replay to see how it effects the application. Also the complete decoupled workflow of the Frontend and Backend. While I was coding the front-end I didn’t write a single line of back-end code and kept working with simple simulated services. Once I was done with Frontend, switched to backend and linking them up was extremely easy.
There was one thing that tripped me off – templates in Pedestal. I think I need more time to grok it properly. Good part of my 48hours of hacking was spent making the tooling page not to throw NPE after I started slicing templates. But given that the framework is fairly new (v 0.2) I expect it will become more flexible and easy to work with down the lane.
Back to my app – it is named Vizier – named after Hindi-arabic-egyptian word for chief advisor to a king. Infact, in Chess the Queen is used to be a Vizier. I intend to continue developing the app and hopefully make it a complete Datomic management app. Checkout the Trello Board I used during the development of it.
Version 0.0.1 of Vizier is available for download – so checkout it out. If you like it, don’t forget to Vote for it on clojure cup!
Hi There, interesting concept. Why haven’t you made your code open source? Isn’t that a requirement of the Clojure Cup contest?
Nathan
No – open sourcing the code isn’t a requirement – http://clojurecup.com/rules.html – “You will own the source code and other assets of your application. What you do with them is up to you. Open sourcing your code will neither hurt nor improve your chances.”
Thanks Vijay. Your tutorial on Clojure web dev is great! Would love to see a pedestal version of this.
Thanks :) I’ll certainly post a pedestal tutorial soon – I need it for myself while building Vizier during next couple of months.