We love movies, and so do most people. In fact, we estimate that we probably spend upwards of 4-5 hours every week watching movies. Like most people, we sometime end up watching movies that are just awful. We wanted to remedy this problem, so we made MyMDb.
What it does
From a user's perspective, MyMDb gives them the ability to visualize their movie interests in a way that makes it fast and easy for them to find new movies to enjoy. They first enter a movie they like, then a big graph emerges which they can explore. By clicking the nodes (which represent movies), they can grow the graph and concomitantly, their movie knowledge. Behind the scenes, it uses IMDbPy to grab movie data from IMDb, and D3 data visualization library to render the graph to users.
How I built it
We decided to use Django on the back-end for its quick development time, and we used VanillaJS, a little bit of JQuery, and D3 on the front-end. Here's how the app works: first, the user enters a seminal movie which we send to our server, which responds with a list of similar movies. In this way the app creates the root node along with the first leaves. After that, any click on any leaf will trigger a new subgraph to grow using the same method. In addition, whenever a node is clicked, the front-end queries the server for detailed information on the movie, which gets displayed to the user alongside the graph.
Challenges I ran into
Neither of us had used Django or D3 extensively, so we ran into a lot of minor bugs that took us way too long to fix. One of us also missed the bus here, and got in late on Saturday. So we didn't get the chance to sleep on Saturday. We also had to prioritize which features we wanted to implement before the 8:30 deadline.
Accomplishments that I'm proud of
We think our app looks beautiful while simultaneously solving a big problem in a novel way.
What I learned
We learned never to trust bus drivers. We also learned, more importantly, how important good design is--once we added styling to our app, it almost seemed to function better. We also learned how difficult it becomes to program after 24 hours of nonstop coding. Finally, we mentioned that we were challenged by the need to prioritize features given the short development time. We think this was a beneficial challenge, as it actually forced us to discard many distracting features that would have made the product more difficult to use.
What's next for MyMDb
We plan to make the app change the sizes of the the nodes based on an aggregate "movie goodness score," which--hopefully--we can tailor to users who frequent the website. We think the differential sizing will make it even easier for users to identify good movies.