A Personal Timeline

Recording a personal history

I built a simple web app to enter details of a personal historical timeline, and use TimelineJS to display the resulting timeline. Mostly, I'm sharing the code just in case it's of use to somebody else.

Continue reading… Save to Instapaper

As part of a larger project I’m doing, I had a need to write out a personal timeline – a potted history of my life, along with any particular emotions associated with each event. Of course, in order to distract myself from the task at hand, and instead of using the A4 sheet of paper I’d been given, I went looking for some software to help out. TimelineJS turned out to be exactly what I was looking for.

I started out by maintaining the JSON source file manually (I could have used Google Docs, but I’m allergic to spreadsheets!), adding bits and pieces as I could remember them. That got dull – and error prone (it got upset every time I missed out a , between entries!) – pretty quickly, though, so I’d chuck together some code as a web front end to produce the JSON data.

I wondered if it could be handy for others, too, so I’ve shared the code on GitHub at mathie/timelines and I’ve got an instance of it running here: https://personal-timelines.herokuapp.com/ You can sign up to create timelines and either share them publicly, or keep them private. You can also share a private timeline with collaborators, who can see the timeline and make changes to it. Being able to share a private timeline with my wee sister (who has a much better memory than me!) was the main reason I felt the need to build this app in the first place.

The app itself is pretty straightforward. There’s nothing I wanted to implement that needed anything more than ordinary RESTful operations – I managed to think of every operation in terms of creating or updating a resource. It always pleases me when I manage to build a design so it’s all just CRUD operations. And the refactoring which took me from a timeline belonging to a user, through to a timeline having many collaborators (a has_many through: assocation), worked rather neatly. After changing the associations themselves, the only other code I had to update was one line figuring out authorisation.

And for an example of what it can do, here’s a (slightly condensed) version of my timeline.

After all that effort, I suppose I should get back to the task at hand and figure out what to add to the timeline. Knowing that I’ve been in continuous employment since I turned 16, and that I’ve moved home more than a dozen times since I left for University is interesting an’ all, but I suspect I’m missing the underlying point of the exercise… What sort of personal history would you like to record on a timeline?

About this article

Article metadata
Attribute Value
First published
Last updated
Category Software development
License Creative Commons Licence