I guess every software developer has written a cd/dvd management software. It’s a great way to learn a new programming language or framework, since you have to get familiar with different aspects (UI, databases/xml, …).
After working with GWT/GXT for over 1 year I wanted to try out Vaadin. I also wanted to replace my old java desktop movie management tool with a new fancy web app. A few weekends later I was very satisfied with the result, which doesn’t happen a lot for a perfectionist like me. ;)

Host Server

First I had to find a host for my web application. I didn’t want to spend time managing a virtual/dedicated server by myself, so that wasn’t really an option. Managed java servers on the other hand are quite expensive. The last option was a PaaS cloud. I’ve tried out some hosts and decided to stick with Google App Engine. It’s free (at least for my application) and offers some nice features (e.g. one click deployment in eclipse). However, it has some limitations which made the development more difficult.


Apart from CRUD operations I wanted to have some basic information about each movie (such as title, year, rating and cover image). IMDB is a great source for this kind of stuff, so I wrote my own web scraping tool. Unfortunately it’s not possible to fetch IMDB cover images from an external server, so I had to write a PHP script which hides the http referer.
Some other features I considered helpful:

  • basic login/logout: other people shouldn’t mess around with my database
  • filtering: fast way to see if I already own a movie
  • statistics: number of movies for each language, number of unseen movies
  • random movie selection: I often have trouble picking a movie to watch, this helps a lot
  • grid sorting: by language/favorite/unseen etc, also helps to pick the right movie


I like MooMovies a lot. I can now access my movie collection from anywhere and add new movies by simply pasting an IMDB link. It was also interesting to play with some new technologies (GAE, BigTable database, Vaadin). Although I like some Vaadin features (no client/server distinction, great!), I still prefer GXT from Sencha (especially data binding and styling).

Maybe I will make the source code public in the future. You can find a live demo here.