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.