MooMovies — A personal movie database
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 satisfied with the result.
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 an option. On the other hand, managed Java servers are more 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 that made the development more difficult.
Features
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 that 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
Result
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).