Featured, Objects, openFrameworks
comments 5

Lego Calendar by Vitamins Design syncs with Google Calendar

lego-calendar-vitamins_08 copy

Created by Vitamins Design, The Lego calendar is a wall mounted time planner that the team invented for their studio. It’s made entirely of Lego and while others (here and here) have used Lego to visualise complex logistics systems in a simple and tangible way, Vitamins’ solution allows you take a photo of it with a smartphone all of the events and timings are synchronised to an online, digital calendar.

One thing we always talk about in the studio is how to organise ourselves – it’s something we always think we can improve. So we started looking at all the different ways people organise things; from post-it notes on computer screens, diaries, to-do lists and some really complex project planning software. We noticed some really interesting things, and made a dream manifesto for our ultimate organisation system.

On the calendar, every row represents a month and every column represents a day of the week. Every person in the studio has their own row and every project has its own colour (they keep a little index hidden away to remember which colour represents which project). Finally each brick represents a half day spent on that particular project. Every time someone changes something on the calendar, all they need to do it take a photo of it with any smartphone. Then, they just email the photo to a special address they created. A couple of seconds later the sender will receive an email letting them know that all of the information on the lego calendar has been synchronised to their digital calendar. The system currently uses Google Calendar but this could work with any cloud based calendar.

The software is custom code written using openFrameworks and openCV to read contours of the Legos. The code looks for the three long boards, for each month, and then splits the entire image into little blocks for each day. The actual calendar was designed to be as machine readable as possible (hence the wee white strips between each day). The software then uses a known pattern on the left side of each month row to calibrate for each colour, that was so they can get around different cameras, white balances and light conditions.


At the moment the team are using some blurring filters before looking for the position and colour of each brick in each day block. Once all this has been picked up it starts updating the google calendar, creating entries a the right time, with the project name, and the persons name. The software is still evolving, and in a little more time they’ll be sharing the code on github. This isn’t a product, just an experiment. There are a large number of tweaks they want to and will do, and they’re hoping other people start using it too.

For more interesting Lego calendar solutions, see here and here.

Project Page | Vitamins Design

Update: This project is now called the Bit Planner, and is being developed by Special Projects in London. The Bit Planner is an experiment, it is not a product and is not endorsed by LEGO in any way. For more information please visit www.bit-planner.com and www.special-projects-studio.com/bitplanner


  • Rudolf Leermakers

    Wouldn’t it be nicer to have a dedicated webcam keeping track of the board all day? If I have to pull out my phone to modify my calendar I can just as easily make the appointment in my agenda/cal app. Other than that, nice stuff, suppose it would work well for engineers, give them an excuse to play with Lego again.

  • Andreas Weigel

    Great idea! What about using bryx for instant sync instead of taking a foto? http://www.kickstarter.com/projects/380641742/bryx-iphone-controllable-arduino-programmable-bric

  • jgn

    Yes, but if I make a calendar event on Google Calendar, do the legos automatically get updated?

  • Renato Cavalcanti

    For that case, you can program a Lego Mindstorm Robot that receives information the Google Calendar and move the pieces on the board. :-)

  • jgn

    The bad news is that the GCal webhooks API is very annoying (let alone moving the bricks).