Agendashift’s technology stack

The obligatory tech stack post!

Front end:


The job of the server is mainly to serve JSON via a REST API, and much of the front end was developed before a single line of the server was written. I decided very quickly that the server’s model tier should return ‘JSON objects’ (raw dicts and arrays) rather than objects mapped by the SQLAlchemy ORM. This helps to keep logic out of the view tier and would make any future move to microservices very much more straightforward. So far I’ve not regretted this slightly unusual move one bit.

One level below that, the persistence model is “mostly relational”. Two fields are stored as JSON; later (it’s not needed quite yet) they’ll be expanded into relational tables for reporting purposes. One quite complex object—the assessment template—is kept for now in a YAML file (served as JSON) until I implement template editing.

With all that in mind, I might yet replace both Mustache and Jinja2 with Handlebars, gaining some power relative to Mustache whilst making it easier for client and server to share templates. I could go the whole hog and replace the Python with server-side Javascript, but that’s not likely to happen anytime soon – I have better things to do right now. Similarly, I’m in no hurry to go down the NoSQL route.

Basically, Python and PostgreSQL work for me just fine. You may remember that some time back I was an occasional contributor to the Pylons web framework but I never made the transition to its successor, Pyramid. I’m new to Flask but my needs are modest and it has been very easy to learn. My SQLAlchemy isn’t where it was five years ago, but it’s returning!

One likely casualty is the SVG. I have plans to replace Agendashift’s rather unique style of circular chart with regular bar charts, and I expect to be able to implement them in CSS.

Screen Shot 2015-05-20 at 08.31.46

Blog: Monthly roundups | Classic posts

Home | Partner programme | Resources | ContactMike
Community: Slack | LinkedIn group | Twitter

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s