The Making of Cube Graphs

Oct 22, 2017

Over the summer, I got the opportunity to maintain a Django web app as it was deployed throughout the company at which I was interning. As I was doing this, I figured that I should use the experience that I gained in order to create my own website. This is my experience developing cube graphs.

My nerdy hobby back in middle school was solving Rubik’s cubes as fast as possible. As part of this, I kept track of my times, so that I could compare myself to others and see any improvmement. There were already websites out there that made automated tracking of solve time possible, but I felt many of them were outdated or lacking in features. Enter Cube Graphs.

Cube website

In order to create a website to track solve times, I had to confront a few technical issues. First came the need to manage user accounts, as well as save solve times for future access. I found Django to be practical for this, as it easily allowed me to integrate my app with a database including both the accounts and any associated information. Django’s easy CMS-oriented features also made it easy to include a blogging system on the home page of the website, to keep users up to date with its development.

Next, I had to create the timer, as well as the visualisations. jQuery was suited for this purpose, as it allowed me to update a timer in real time and then fire off requests to the REST API that I use to communicate with the Django backend. For visualizations, I chose one of the many Javascript graphing frameworks, as opposed to implementing my own logic.


I’m fairly pleased with the result. As of the time of writing, the website is live and can be accessed here. Deployment was a bit of a challenge, I had to figure out how to get the code onto a Digital Ocean droplet and register it with my custom domain, but ultimately is was not too bad.

I got a lot out of this. This was the first substantial software project that I ever did solo, where I took a concept from the idea, to development, to deployment.

What I learned: Unit tests are nice. I should have used them. In the future, I will probably stick to more of a test-driven development paradigm, as it makes all sorts of refactoring and feature addition easier. Furthermore, I learned after creating this about the Django REST framework, which is a more convenient way of creating REST API’s using Django. I will definitely be looking into this.

Anyway, the website is live. Right now it only supports a single puzzle, but more should come in the future. Go ahead and use it, and contact me on Github with any suggestions!